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)

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

桜キャンドル淵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值