Pandas数据结构 - Series
Pandas Series 类似表格中的一个列(column),类似于带标签一维数组,可以保存任何数据类型
Series的创建实例
import pandas as pd
a = [1,2,3]
arr=pd.Series(a)
print(arr)
输出结果为:
由上图可知,如果不指定索引,索引值默认从零开始,我们可以根据索引值来查找数据,例如:
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)
输出结果如下:
我们同时也可以通过字典来创建
import pandas as pd
a={"name":"xiaohong","age":10,"tel":123456}
s=pd.Series(a)
print(s)
输出结果如下:
此时,key就为索引值
Pandas数据结构 - DataFrame
DataFrame 是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔型值)。DataFrame 既有行索引也有列索引,它可以被看做由 Series 组成的字典(共同用一个索引)。类似一个二维数组
DataFrame的基本信息
DataFrame创建实例:
通过字典创建
import pandas as pd
data=[{'a':1,'b':2},{'a':5,'b':10,'c':20}]
df=pd.DataFrame(data)
print(df)
输出结果如下:
注意:没有对应的部分数据为 NaN。
通过ndarrays创建:
import pandas as pd
data={'name':['xiaohong','xiaoming'],'age':[13,12]}
df=pd.DataFrame(data)
print(df)
输出结果如下:
索引
pandas取行或者列的注意点
方括号写数组,表示取行,对行进行操作
方括号写字符串,表示取列,对列进行操作
如:
print(df[:20])
print(df["Row_Labels"])
如:
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)
输出结果如下:
常用统计方法
读取外部数据
语法:
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"))
输出结果如下:
其中:参数- 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))
结果为: