pandas是python中一个性能强大的数据处理库,能进行复杂的数据处理。
pandas的数据结构分为三种类型,分别为series,DataFrame和index,对于初学者而言,series和DataFrame这两种结构最为重要。
下面作者将重点介绍series和DataFrame这两部分。
series的介绍
series按照作者的目前的理解是pandas库中最基础的组成部分,seriers是由索引和数值做成,series很像c语言中的一维数组,两者都可以通过索引寻找对应的值。与C语言中的数组不同的是,series中的索引并不局限于整数,我们可以根据实际的需求进行自定义,举个例子它可以是字典中的键构成。对于series的值而言,它也可以是任意的数据类型,如整数,浮点数,字符串等。
这是一张关于series的图来帮助理解:
该图来源于:和鲸社区
作者: 小王同学呼啦啦
来源: https://www.heywhale.com/mw/project/628705f944e6479fd8fc7f96
接下来说一下series的具体用法:
series的基本语法:Series(data,index,dtype,name,...)
data可以是由列表构成,也可以是由字典构成。(这个参数是必须的)
index你可以写,也可以不写,如果不写则默认为整数索引(如0,1,2...)
dtype是数据类型,同样也是可以不写,如果不写python解释器会自动判断类型。
name就是对这个series起个名字,类似于列名,这个同样也不是必须的。
下面展示具体的代码:
(数据为列表)
import pandas as pd
data=[21,20,18]
index=['小明','小明前女友','小明现女友']
df=pd.Series(data=data,index=index,name='小明历任女友')
print(df)
output:
小明 21
小明前女友 20
小明现女友 18
Name: 小明历任女友, dtype: int64
(数据为字典)
import pandas as pd
data={'小明':21,'小明前女友':20,'小明现女友':18}
df=pd.Series(data=data,name='小明历任女友')
print(df)
output:
小明 21
小明前女友 20
小明现女友 18
Name: 小明历任女友, dtype: int64
根据series的索引找值:
import pandas as pd
data={'小明':21,'小明前女友':20,'小明现女友':18}
df=pd.Series(data=data,name='小明历任女友')
value1=df['小明']
value2=df.iloc[0]
print(value1)
print(value2)
output:
21
21
下面介绍pandas最重要的一部分内容DataFrame
DataFrame这个数据结构可以理解为由n个series拼接而来,下面这个图可以非常形象地帮助我们理解DataFrame
按照笔者的理解DataFrame就像是c语言中二维数组,有行索引,也有列索引。
DataFrame的基本语法
DataFrame(data,index,column)
data即准备的数据
index即行索引,如果不写,默认为0,1,2等整数索引。
column即列索引,如果不写,同样默认为整数索引。
import pandas as pd
data=[[85,95,100],[100,98,96],[85,78,98]]
index=['小明','小红','小绿']
column=['语文','数学','英语']
df=pd.DataFrame(data=data,index=index,columns=column)
print(df)
output:
语文 数学 英语
小明 85 95 100
小红 100 98 96
小绿 85 78 98
下面介绍一下DataFrame常用数据处理的方法函数
.head()用于查看DataFrame的前五条数据
.tail()用于查看DataFrame的后五条数据
.describle()用于对数据进行一个初步的整体分析,使用后会显示以下数据:每一列的平均数(mean),标准差(std),最大值(max),最小值(min),不为空值的数据统计(count),25%分位数,50%分位数,75%分位数
.max(),.min()里面可以设置参数,axis=0对列操作,axis=1对行操作
.sum()同样可以设置参数,axis=0对列操作,axis=1对行操作
下面为代码展示:
import pandas as pd
data=[[85,95,100],[100,98,96],[85,78,98]]
index=['小明','小红','小绿']
column=['语文','数学','英语']
df=pd.DataFrame(data=data,index=index,columns=column)
print(df.describe())
语文 数学 英语
count 3.000000 3.000000 3.0
mean 90.000000 90.333333 98.0
std 8.660254 10.785793 2.0
min 85.000000 78.000000 96.0
25% 85.000000 86.500000 97.0
50% 85.000000 95.000000 98.0
75% 92.500000 96.500000 99.0
max 100.000000 98.000000 100.0
axis=0
import pandas as pd
data=[[85,95,100],[100,98,96],[85,78,98]]
index=['小明','小红','小绿']
column=['语文','数学','英语']
df=pd.DataFrame(data=data,index=index,columns=column)
print(df.min(axis=0))
语文 85
数学 78
英语 96
dtype: int64
axis=1
import pandas as pd
data=[[85,95,100],[100,98,96],[85,78,98]]
index=['小明','小红','小绿']
column=['语文','数学','英语']
df=pd.DataFrame(data=data,index=index,columns=column)
print(df.min(axis=1))
小明 85
小红 96
小绿 78
dtype: int64
max,sum,mean也是同样的操作,笔者就不一一展示了。