一、基础
1、简介
pandas是Python中的一个数据分析和清洗的库,基于numpy构建的,在其中包含了大量的标准数据模型,提供了高效操作大型数据集所需要的工具。最早呢是被作为金融数据分析工具开发出来的,现在已经广泛应用于大数据分析的各个领域。
2、安装与使用
cmd中直接输入如下命令:
pip install pandas
安装完成后,在命令行中输入“pip list”,可查看pandas库是否安装,如下图
按住那pandas库后,就可以在Python中调用该库实现数据的分析与清洗了
3、pandas的使用
要使用pandas,可直接在Python命令行中输入如下命令
import pandas as pd
s=pd.Series()
s
可得到如下结果
Series([],dtype:float64)
结果如下图所示
在引入pandas库时候,可以直接导入 import pandas库,在后续代码中将该库简写成“pd:as pd”
二、pandas语法与使用
pandas库中有两个最基本的数据类型:Series和DataFrame。Series表示以为数组,与numpy中的一维array很相像,DataFrame代表二维数组,也可以理解成Series的容器
pandas库中的基本数据类型及含义如下表所示
数据类型 | 含 义 |
---|---|
Series | pandas库中的一维数组 |
DataFrame | pandas库中的二维数组 |
1、Series类型
1.series的创建和选择
Series能够保存任何类型的数据,比如整数、浮点型、字符串等等一维标记数据,并且每个数据上都有自己的索引,在pandas库中仅由一组数据就可以创建最简单的Series
(1)创建Series
执行如下代码:
import pandas as pd
s=pd.Series([1,2,3,4])
s
该语句创建了一维数组,结果如下图所示
从图中可以看出,Series数组的表现形式为:索引在左侧,从0开始标记,值在右侧,用户自定义,并且用户可以通过Series中的index属性为数据值定义标记的索引
(2)创建Series并定义索引
执行如下代码:
import pandas as pd
s=pd.Series([1,2,3,4],index=['a','b','c','d'])
s
上述语句为用index为每个数据值创建了自定义的索引,运行得到如下结果
也可以只显示索引,直接运行命令:s.index 即可。
2.索引的选择
在pandas中,用户可以通过索引的方式选择Series中的某个值
(1)选择Series中的某个值
执行如下代码
import pandas as pd
s=pd.Series([1,2,3,4],index=['a','b','c','d'])
s['a']
上述语句使用s[‘a’]选择了某一个索引值,运行得到如下结果
(2)选择Series中的多个值
执行如下代码
import pandas as pd
s=pd.Series([1,2,3,4],index=['a','b','c','d'])
s[['b','c']]
上述语句使用s[[‘b’,‘c’]]选择了多个索引值,运行得到如下结果
(3)选择Series中表达式的值
执行如下代码
import pandas as pd
s=pd.Series([1,2,3,4],index=['a','b','c','d'])
s[s>3]
上述语句使用s[s>3]选择了大于3的数据,运行得到如下结果
3.Series中的数据操作
在pandas库中除了可以创建和选择Series外,还可以对Series进行各种数据操作,比如加法、乘法、布尔型运算
(1)Series中的加法运算
执行如下代码
import pandas as pd
s=pd.Series([1,2,3,4],index=['a','b','c','d'])
s+3
上述语句将所有数据都自增3,运行得到如下结果
(2)Series中的乘法运算
执行如下代码
import pandas as pd
s=pd.Series([1,2,3,4],index=['a','b','c','d'])
s*3
上述语句将所有数据都乘以3,运行得到如下结果
(3)Series中的布尔运算
执行如下代码
import pandas as pd
s=pd.Series([1,2,3,4],index=['a','b','c','d'])
'b' in s
'w' in s
上述语句判断数组中是否存在b或者w的索引,运行得到如下结果
从图中可以看出,b存在于该数组中,因此显示True,w不存在,因此显示False
4.Series中数组的数据操作
此外,在pandas库中除了可以对单个数组进行数据操作,还可以对多个数组进行相同的操作
(1)Series中的数组的加法运算
执行如下代码
import pandas as pd
s1=pd.Series([1,2,3,4])
s2=pd.Series([5,6,7,8])
s1+s2
上述语句进行两个数组加法运算,按照索引对应位进行相加,运行得到如下结果
(2)Series中的数组的乘法运算
执行如下代码
import pandas as pd
s1=pd.Series([1,2,3,4])
s2=pd.Series([5,6,7,8])
s1*s2
上述语句进行两个数组乘法运算,按照索引对应位进行相加,运行得到如下结果
(3)Series中的数组自动补齐不同索引运算
执行如下代码
import pandas as pd
s1=pd.Series([1,2,3,4],index=['a','b','c','d'])
s2=pd.Series([5,6,7,8],index=['b','c','d','a'])
s1+s2
上述语句进行两个数组加法运算,并且可以自动补齐不同索引,运行得到如下结果
从上图可以看出,Series可以将相同索引的数据自动对应,然后进行数据运算
(4)Series中的缺失值
执行如下代码
import pandas as pd
s1=pd.Series([1,2,3,4],index=['a','b','c','d'])
s2=pd.Series([6,7,8],index=['b','c','d'])
s1+s2
上述语句进行两个数组加法运算,但是由于两个数组对应的数值不匹配,在s2中缺少索引a及其相对应的数值,因此会出现缺失值,运行得到如下结果
2、DataFrame类型
DataFrame是一个表格型的数据类型,含有一组有序的列,每列可以是不同类型,比如数值、字符串等。DataFrame既有行索引,又有列索引,因此可以看成是Series组成的字典。
1.DataFrame的创建
创建方法有很多,最常见的是传入一个由等长列表组成的字典
(1)直接创建DataFrame数据类型
执行如下代码
import pandas as pd
data={
'name':['Tom','Jerry','Tony','Mary'],
'year':['1990','1995','2000','2005']
}
frame=pd.DataFrame(data)
frame
上述语句通过引入pandas库构建了一个DataFrame数据类型,并且形成了有序的排列,运行得到如下结果
(2)创建DataFrame数据类型,并指定列序列
执行如下代码
import pandas as pd
data={
'name':['Tom','Jerry','Tony','Mary'],
'year':['1990','1995','2000','2005']
}
frame=pd.DataFrame(data,columns=['year','name'])
frame
上述语句指定了DataFrame数据类型的列序列,将year放在了name列前面,运行得到如下结果
(3)使用嵌套字典创建一个DataFrame
执行如下代码
import pandas as pd
data={
'name':['Tom','Jerry','Tony','Mary'],
'year':['1990','1995','2000','2005']
}
pop={'Tom':{1990},'Jerry':{1995}}
frame=pd.DataFrame(pop)
frame
上述语句使用嵌套字典来创建DataFrame,将外层字典的键作为列,比如Tom、Jerry,将内层键作为行索引,比如1990,1995,运行得到如下结果
2.DataFrame索引与查询
在访问DataFrame类型时,可以使用index、columns、values等属性进行访问行索引、列索引和数据值,返回一个二维的ndarry
(1)使用index访问DataFrame的行索引
执行如下代码
import pandas as pd
data={
'name':['Tom','Jerry','Tony','Mary'],
'year':['1990','1995','2000','2005']
}
pop={'Tom':{1990},'Jerry':{1995}}
frame=pd.DataFrame(pop)
frame.index
上述语句使用index属性返回DataFrame中的数据,运行得到如下结果
(2)使用values访问DataFrame的数据
执行如下代码
import pandas as pd
data={
'name':['Tom','Jerry','Tony','Mary'],
'year':['1990','1995','2000','2005']
}
pop={'Tom':{1990},'Jerry':{1995}}
frame=pd.DataFrame(pop)
frame.values
上述语句使用values属性返回DataFrame中的数据,运行得到如下结果
(3)使用索引方法和属性查询DataFrame
执行如下代码
import pandas as pd
data={
'name':['Tom','Jerry','Tony','Mary'],
'year':['1990','1995','2000','2005']
}
frame=pd.DataFrame(data,columns=['year','name'])
frame
'1990' in frame.columns
'name' in frame.columns
上述语句使用’1990’ in frame.columns,‘name’ in frame.columns 查询是否出现列序列的名称,运行得到如下结果
(4)建立索引并查询
执行如下代码
import pandas as pd
data={
'name':['Tom','Jerry','Tony','Mary'],
'year':['1990','1995','2000','2005']
}
frame=pd.DataFrame(data,columns=['year','name'],index=['one','two','three','four'])
frame
'one' in frame.index
'five' in frame.index
先创建行索引,用 one two three four 来表示,然后查询one和five是否在inde选中,运行得到如下结果
3、DataFrame数据分析与应用实例
在DataFrame中,数据分析方法包含数据计算、数据扩充、数据索引、数据丢弃、数据排序等,详见下表
方 法 | 含 义 |
---|---|
sum() | 对数据值做加法运算 |
df-() | 对数据做减法运算 |
df*() | 对数据做乘法法运算 |
df/() | 对数据做除法运算 |
append() | 对数据的行或者列进行扩充 |
reindex() | 重新建立一个新的索引对象 |
drop() | 丢弃不需要的数据值 |
sort_index() | 对数据值进行排序 |
idxmin() | 统计最小值的索引 |
idxmax() | 统计最大值的索引 |
cumsum() | 对数据值进行累加 |
1.数据计算
在DataFrame中,最常见的是对每一列做加法、减法、除法、乘法的运算
首先在pandas中建立二维数据并求和
执行如下代码
import pandas as pd
import numpy as np
df=pd.DataFrame([[1,2,3],[4,5,6]],columns=['col1','col2','col3'],index=['a','b'])
df
上述语句首先创建DataFrame类型,创建一个两行三列的数组,并且索引为a和b,运行结果如下图所示
(1)每一列求和
输入如下命令 df.sum() 可以对每一列求和,结果如下图所示
(2)每一行求和
输入如下命令 df.sum(1) 可以对每一行求和,结果如下图所示
(3)每一行做减法
输入如下命令 df-1 可以对每一行减法运算,结果如下图所示
(4)每一行做乘法
输入如下命令 df*2 可以对每一行乘法运算,结果如下图所示
(5)每一行做除法
输入如下命令 df/2 可以对每一行除法运算,结果如下图所示