Pandas知识总结

723 阅读2分钟

Pandas数据结构 - Series

Pandas Series 类似表格中的一个列(column),类似于带标签一维数组,可以保存任何数据类型

Series的创建实例

import pandas as pd
a = [1,2,3]
arr=pd.Series(a)
print(arr)

输出结果为:

Snipaste_2022-11-24_17-11-03.png

由上图可知,如果不指定索引,索引值默认从零开始,我们可以根据索引值来查找数据,例如:

import pandas as pd
import numpy as np
a=pd.Series(np.arange(10))
print(a[2])

结果为:2

我们也可以指定索引值:

import pandas as pd
a=['a','b','c','d']
s=pd.Series(a,index=['w','x','y','z'])
print(s)

输出结果如下:

Snipaste_2022-11-24_17-26-34.png

我们同时也可以通过字典来创建

import pandas as pd
a={"name":"xiaohong","age":10,"tel":123456}
s=pd.Series(a)
print(s)

输出结果如下:

Snipaste_2022-11-24_17-30-38.png

此时,key就为索引值

Pandas数据结构 - DataFrame

DataFrame 是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔型值)。DataFrame 既有行索引也有列索引,它可以被看做由 Series 组成的字典(共同用一个索引)。类似一个二维数组

DataFrame的基本信息

屏幕截图 2022-11-25 100052.png

DataFrame创建实例:

通过字典创建

import pandas as pd
data=[{'a':1,'b':2},{'a':5,'b':10,'c':20}]
df=pd.DataFrame(data)
print(df)

输出结果如下:

屏幕截图 2022-11-25 092549.png 注意:没有对应的部分数据为 NaN

通过ndarrays创建:

import pandas as pd
data={'name':['xiaohong','xiaoming'],'age':[13,12]}
df=pd.DataFrame(data)
print(df)

输出结果如下:

屏幕截图 2022-11-25 093159.png

索引

pandas取行或者列的注意点
方括号写数组,表示取行,对行进行操作
方括号写字符串,表示取列,对列进行操作

如:


print(df[:20])
print(df["Row_Labels"])


image.png

如:


t3=pd.DataFrame(np.arange(12).reshape(3,4),index=list("abc"),columns=list("wxyz"))
print(t3.loc["a","z"])
print(t3.loc["a"])
print(t3.loc[:,"y"])
#取多行
print(t3.loc[["a","c"]])
#pandas.iloc
print(t3.iloc[:,2])
print(t3.iloc[[0,2],[2,1]])
t3.iloc[1:,:2] = None
print(t3)

输出结果如下:

屏幕截图 2022-11-25 101140.png

常用统计方法

屏幕截图 2022-11-25 102112.png

读取外部数据

语法:

import pandas as pd
df=pd.read_csv(".csv类型文件名")

缺失数据的处理

删除数据所在行列

import pandas as pd
import numpy as np
t=pd.DataFrame(np.arange(12).reshape(3,4),index=list("abc"),columns=list("wxyz"))  #创建数据
t.iloc[1:,:2] = None #给一些数据赋空值
print(t)
print(t.dropna(axis=0))
print(t.dropna(axis=0,how="all"))
print(t.dropna(axis=0,how="any"))

输出结果如下:

屏幕截图 2022-11-25 103926.png

其中:参数- how:默认为  'any'  如果一行(或一列)里任何一个数据有出现 NA 就去掉整行,如果设置 how='all'  一行(或列)都是 NA 才去掉这整行。

注意:以上方式并没有改变t

若想改变t,方式如下:

t.dropna(axis=0,how="any",inplace=True)

填充数据


d2=[{"name":"xiaohong","age":32,"tel":10010},{"name":"xiaogang","tel":10000},{"name":"xiaowang","age":22}]
t2=pd.DataFrame(d2)
print(t2)
print(t2.fillna(100))

结果为:

屏幕截图 2022-11-25 104624.png