栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

pandas的简单使用

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

pandas的简单使用

目录

一、基本数据结构Series

Series数组的创建

 Series的索引

 创建带索引的Series

 Series的数学运算

 对series数组数据的筛查

 Series的汇总

Series的计算方法 

 series的追加

 Series的删除

 二、基本数据结构DataFrame(二维数据表)

 DataFrame索引

 DataFrame的删除

DataFrame名称属性

三、Series与DataFrame运算 

 追加操作


panda是Python的一个数据分析包。基于numpy,为了解决数据分析任务而创建的程序包

导入我们的pandas软件包

import pandas as pd

一、基本数据结构Series

Series数组的创建

Series是一种一维的数组型对象,它包含一个值序列和一个数据标签序列

这里我们可以发现Series所为我们创建的数据标签序列的起始是从0开始的连续数字。

注意:Series中的首字母S需要大写!!!

import pandas as pd
series1=pd.Series([4,5,6,723,42,53])
print(series1)

当前在我们的Series中所写的全部都是数字类型,那如果我们在series中写入不同类型的数据会怎么样呢?

在下面的代码中,我们对我们之前的数组进行了一些小改动,我们对纯整数的数组中加入了复数,字符串,程序并没有报错,但是dtype的类型变成了object。

series1=pd.Series([4,5,6,723,42,53j+5,'hello'])
print(series1)

 

 当然,我们也可以使用下面的代码来将我们的Series数组中的索引和值单独打印出来

series1=pd.Series([4,5,6,723,42,53j+5,'hello'])
print(series1.values)
print(series1.index)

 Series的索引

Series的索引有①直接索引,②.iloc(序号),③.loc(索引名称)

但是这三种索引方式存在一些不同的地方,在下面的代码中,我们用这三种方式来输出从[2:5]的数组元素,但是直接索引和iloc的方法实际上只会取到2,3,4序号的数据,只有.loc,也就是我们的方法③会取到2,3,4,5的四条数据

import pandas as pd
series1=pd.Series([4,5,6,723,42,53j+5,'hello'])
print(series1[2:5])
print(series1.iloc[2:5])
print(series1.loc[2:5])

 当然我们也可以通过我们的索引下标来修改我们的元素

series1=pd.Series([4,5,6,723,42,53j+5,'hello'])
print(series1)
series1[2:5]=[1,0,9]
print(series1)

 创建带索引的Series

想要创建我们自定义的索引,我们可以将一个数列组传递给我们的index,然后我们的index索引就会变成我们所传入的数组。

gdp=pd.Series([32679,30320,24691,23000,20363],index=['上海','北京','深圳','广州','重庆'])
print(gdp)

 此时将我们的索引和数据打印出来也是没有任何问题的。

x=['上海','北京','深圳','广州','重庆']
gdp=pd.Series([32679,30320,24691,23000,20363],index=x)
print(gdp.index)
print(gdp.values)

 此时如果要对我们修改过名称的Series数组进行索引,我们可以使用下面的代码,我们会发现直接索引和采用iloc方法进行索引,依旧是不包含我们的边界值的,其所取的依旧是一个前闭后开的区间。

但是我们此时的loc方法如果直接将[2:4]传入让其索引是会报错的,因为此时我们的索引值已经改成了城市名,所以我们可以通过['深圳':‘广州’]之类的形式来获得我们的索引值,适应loc方法获得的索引结果都是包含边界值的。

x=['上海','北京','深圳','广州','重庆']
gdp=pd.Series([32679,30320,24691,23000,20363],index=x)
print(gdp[2:4])
print(gdp.iloc[2:4])
print(gdp.loc['深圳':'广州'])

 

 Series的数学运算

这里对于series的log运算需要借助我们的numpy的数据包。log函数如果没有在后面写任何的数据,就会默认以e底,下面的代码中,我们以10为底就在log后面加上10作为底数

import numpy as np
x=['上海','北京','深圳','广州','重庆']
gdp=pd.Series([32679,30320,24691,23000,20363],index=x)
print(gdp*2)
print(gdp**2)
print(np.log(gdp))
print(np.log10(gdp))

 对series数组数据的筛查

当我们对我们的series数组加上一个判断条件时,我们就会得到一张布尔类型的表格

x=['上海','北京','深圳','广州','重庆']
gdp=pd.Series([32679,30320,24691,23000,20363],index=x)
print(gdp>30000)

 然后我们再将这个布尔类型的数组传递给我们的gdp,我们就能得到符合我们条件的数据

x=['上海','北京','深圳','广州','重庆']
gdp=pd.Series([32679,30320,24691,23000,20363],index=x)
print(gdp[gdp>30000])

 Series的汇总

在下面的代码中,我们gdp1和gdp2的元素的第五个元素分别是重庆和广州,当我们将gdp1和gdp2相加之后,我们会发现索引值对应的元素,Series都帮我们相加到了一起,但是对于两张表不相同的元素,我们的Series所返回的是NAN元素,也就是空,那么有什么办法可以解决这个问题呢?

x=['上海','北京','深圳','广州','重庆']
y=['上海','北京','深圳','广州','天津']
gdp1=pd.Series([32679,30320,24691,23000,20363],index=x)
gdp2=pd.Series([30133,28000,22286,21500,18595],index=y)
print(gdp1+gdp2)

这里我们使用 add的方法,并在我们的方法中添加参数,将我们默认的fill_value改为0我们就能够将我们的gdp1和gdp2相加到一起 

x=['上海','北京','深圳','广州','重庆']
y=['上海','北京','深圳','广州','天津']
gdp1=pd.Series([32679,30320,24691,23000,20363],index=x)
gdp2=pd.Series([30133,28000,22286,21500,18595],index=y)
print(gdp1.add(gdp2,fill_value=0))

 

Series的计算方法 
方法名功能
add()/radd()加法(+)
sub()/rsub()减法(-)
div()/rdiv()除法(/)
floordiv()/rfloordiv()整除(//)
mul()/rmul()乘法(*)
pow/rpow()幂次方(**)

这里我们可以发现gdp1.sub(gdp2)相当于gdp1-gdp2,而我们的gdp1.rsub(gdp2) 就相当于gdp2-gdp1

x=['上海','北京','深圳','广州','重庆']
y=['上海','北京','深圳','广州','天津']
gdp1=pd.Series([32679,30320,24691,23000,20363],index=x)
gdp2=pd.Series([30133,28000,22286,21500,18595],index=y)
print(gdp1.sub(gdp2,fill_value=0))
print(gdp1.rsub(gdp2,fill_value=0))

 series的追加

由于pandas中的append函数将要被移除,如果使用append函数会报警告,所以我们此处使用concat函数来替代。

FutureWarning: The series.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.

x=['上海','北京','深圳','广州','重庆']
y=['上海','北京','深圳','广州','天津']
z=['天津','苏州','成都','武汉','杭州']
gdp1=pd.Series([32679,30320,24691,23000,20363],index=x)
gdp2=pd.Series([30133,28000,22286,21500,18595],index=y)
gdp3=pd.Series([18809,18597,15342,14847,13500],index=z)
result=[gdp1,gdp3]
gdp4=pd.concat(result)
print(gdp4)

 如果我们将两个含有相同元素的列表追加到一起,我们会得到一张有重复元素的列表

x=['上海','北京','深圳','广州','重庆']
y=['上海','北京','深圳','广州','天津']
z=['天津','苏州','成都','武汉','杭州']
gdp1=pd.Series([32679,30320,24691,23000,20363],index=x)
gdp2=pd.Series([30133,28000,22286,21500,18595],index=y)
gdp3=pd.Series([18809,18597,15342,14847,13500],index=z)
result=[gdp1,gdp2]
gdp4=pd.concat(result)
print(gdp4)

然而此时我们对我们含有重复元素的列表进行修改的话,我们会发现列表中的两个重复元素的值都被修改了。 

x=['上海','北京','深圳','广州','重庆']
y=['上海','北京','深圳','广州','天津']
z=['天津','苏州','成都','武汉','杭州']
gdp1=pd.Series([32679,30320,24691,23000,20363],index=x)
gdp2=pd.Series([30133,28000,22286,21500,18595],index=y)
gdp3=pd.Series([18809,18597,15342,14847,13500],index=z)
result=[gdp1,gdp2]
gdp4=pd.concat(result)
print(gdp4)
gdp4['广州']=321
print(gdp4)

 

 Series的删除

使用我们的drop方法,我们就可以将我们的对应的元素给删除。

x=['上海','北京','深圳','广州','重庆']
y=['上海','北京','深圳','广州','天津']
z=['天津','苏州','成都','武汉','杭州']
gdp1=pd.Series([32679,30320,24691,23000,20363],index=x)
gdp2=pd.Series([30133,28000,22286,21500,18595],index=y)
gdp3=pd.Series([18809,18597,15342,14847,13500],index=z)
result=[gdp1,gdp3]
gdp4=pd.concat(result)
print(gdp4.drop('上海'))

 二、基本数据结构DataFrame(二维数据表)

可以使用我们的字典类型来创建我们的DataFrame二维列表

x=['上海','上海','上海','北京','北京','深圳','深圳']
y=[2016,2017,2018,2017,2018,2017,2018]
z=[27466,30133,32679,28000,30320,22286,24691]
m=[2425,2415,2418,2171,2175,1077,1253]
data={'city':x,'year':y,'GDP':z,'Pop':m}
gdp=pd.DataFrame(data)
print(gdp)

 我们可以使用index参数来修改我们的行索引

x=['上海','上海','上海','北京','北京','深圳','深圳']
y=[2016,2017,2018,2017,2018,2017,2018]
z=[27466,30133,32679,28000,30320,22286,24691]
m=[2425,2415,2418,2171,2175,1077,1253]
a=['one','two','three','four','five','six','seven']
data={'city':x,'year':y,'GDP':z,'Pop':m}
gdp=pd.DataFrame(data,index=a)
print(gdp)

 DataFrame索引

这里我们想要索引GDP这一列的话,我们只需要将我们的二维数组列表后传入我们想要查找的列即可。

x=['上海','上海','上海','北京','北京','深圳','深圳']
y=[2016,2017,2018,2017,2018,2017,2018]
z=[27466,30133,32679,28000,30320,22286,24691]
m=[2425,2415,2418,2171,2175,1077,1253]
a=['one','two','three','four','five','six','seven']
data={'city':x,'year':y,'GDP':z,'Pop':m}
gdp=pd.DataFrame(data,index=a)
print(gdp['GDP'])

 如果我们对列进行修改值,我们的整一列的数据都会被修改。

x=['上海','上海','上海','北京','北京','深圳','深圳']
y=[2016,2017,2018,2017,2018,2017,2018]
z=[27466,30133,32679,28000,30320,22286,24691]
m=[2425,2415,2418,2171,2175,1077,1253]
a=['one','two','three','four','five','six','seven']
data={'city':x,'year':y,'GDP':z,'Pop':m}
gdp=pd.DataFrame(data,index=a)
gdp['GDP']=30000
print(gdp)

 当然,我们也可以使用我们上述提到的loc方法来查找我们整行的数据

print(gdp.loc['two'])

 或者使用iloc方法来查找索引

print(gdp.iloc[4])

 DataFrame的删除

使用我们的drop方法来删除记录

print(gdp.drop('one'))

 我们也可以对列进行删除,但是我们需要加上参数axis=1

print(gdp.drop('GDP',axis=1))

DataFrame名称属性
gdp.index.name='年度'
gdp.columns.name='项目'
print(gdp)

 

三、Series与DataFrame运算 

当我们将DataFrame于Series相减时,对应位置的元素都会被减去相应的数值。

data={'上海':[27677,30133,32679],
      '北京':[24899,28000,30320],
      '深圳':[19600,22286,24961],
      '广州':[19493,21500,23000]}
gdp=pd.DataFrame(data,index=[2016,2017,2018])
print(gdp)

series1=pd.Series([25300,23000,18100,17500],index=['上海','北京','深圳','广州'])
print(series1)

print(gdp-series1)

 
追加操作

追加新的记录

data={'上海':[27677,30133,32679],
      '北京':[24899,28000,30320],
      '深圳':[19600,22286,24961],
      '广州':[19493,21500,23000]}
gdp=pd.DataFrame(data,index=[2016,2017,2018])

series1=pd.Series([25300,23000,18100,17500],index=['上海','北京','深圳','广州'])
series1.name=2015

print(gdp.append(series1).sort_index())

 追加新的字段

data={'上海':[27677,30133,32679],
      '北京':[24899,28000,30320],
      '深圳':[19600,22286,24961],
      '广州':[19493,21500,23000]}
gdp=pd.DataFrame(data,index=[2016,2017,2018])

series2=pd.Series([17559,19530,20363],index=[2016,2017,2018])
series2.index.name='重庆'GDP'
series2.name='重庆'
gdp['重庆']=series2
print(gdp)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/869079.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号