目录
1.简介
2.基本构造和访问
3.set_index()函数
4. 查询与切片
4.1 查询和修改
4.2 切片
5. 转置矩阵
6. 空缺值处理函数
6.1 insull()函数
6.2 dropna()函数
6.3 fillna()函数
7. 排序函数sort_values()和sort_index()
8. value_count()函数
9. replace()函数
Series 与DataFrame是pandas库中的核心数据类型。 DataFrame 是二维表格,其每一列都是一个Series。
2.1创建(注意各个数据之间的逗号必不可少)
1.用字典方式
2.用数组方式创建
例:
import pandas as pd
pd.set_option('display.unicode.east_asian_width',True)
#1.以列表方式创建
data0=[[93,3,383,333,33],[99,9,989,999,99],[96,6,686,666,66],[91,1,181,111,11],[96,6,686,666,66],[97,7,787,777,77]]
df1=pd.DataFrame(data=data0,index=["y1","y2","y3","y4","y5","y6"],columns=["一","二","三","四","五"])
#2.以字典方式进行创建
data={"一":[93,99,96],
"二":[3,9,6],
"三":[33,99,66]}
df2=pd.DataFrame(data,index=["y1","y2","y3"])
print(df1)
print(df2)
输出结果:
一 二 三 四 五
y1 93 3 383 333 33
y2 99 9 989 999 99
y3 96 6 686 666 66
y4 91 1 181 111 11
y5 96 6 686 666 66
y6 97 7 787 777 77
一 二 三
y1 93 3 33
y2 99 9 99
y3 96 6 66
..df中各行各列可以是不同数据类型。
创建df时可以不指定索引(列索引index/行索引columns),默认索引将是从0开始,1为步长的数组。
此函数的作用是 :将某行重新设置为索引。
set_index(列索引,drop=Ture)
参数drop:将某列设置为索引后,是否将其从df数据中删除。默认为Ture删除,False为保留。
reset_index() 用于将索引恢复成默认值。
例:
#重新设置索引
df1=df1.set_index(["二"])
print(df1)
#恢复默认索引
df1=df1.reset_index()
print(df1)
输出结果:
一 三 四 五
二
3 93 383 333 33
9 99 989 999 99
6 96 686 666 66
1 91 181 111 11
6 96 686 666 66
7 97 787 777 77
二 一 三 四 五
0 3 93 383 333 33
1 9 99 989 999 99
2 6 96 686 666 66
3 1 91 181 111 11
4 6 96 686 666 66
5 7 97 787 777 77
查询某列 df["列索引"]
查询某个数据 df["列索引"]["行索引"]
例:
print(df2["三"])
print("\n")
print(df1["三"]["y1"])
print("\n")
df1["三"]["y1"]="Y"
print(df1["三"]["y1"])
输出结果:
y1 33
y2 99
y3 66
Name: 三, dtype: int64
383
Y
iloc[开始行下标:结束行下标,开始列下标:结束列下标] (不含右端点)
loc[行标签:行标签,列标签:列标签] (左右端点都包含)
列:
#取所有行的第3到4列(下标都是从0开始)
print(df1.iloc[:,2:4])
print("\n")
#取y1至y4列的”二“到”四“列
print((df1.loc["y1":"y4","二":"四"]))
print("\n")
#取第0和第1行的第2,4列
print(df1.iloc[:2,[1,3]])
输出结果:
三 四
y1 383 333
y2 989 999
y3 686 666
y4 181 111
y5 686 666
y6 787 777
二 三 四
y1 3 383 333
y2 9 989 999
y3 6 686 666
y4 1 181 111
二 四
y1 3 333
y2 9 999
df.T 行列互换
例:
print(df1.T)
输出结果:
y1 y2 y3 y4 y5 y6
一 93 99 96 91 96 97
二 3 9 6 1 6 7
三 383 989 686 181 686 787
四 333 999 666 111 666 777
五 33 99 66 11 66 77
此函数的作用是 :是判断是否含有缺失值。
df.isnull()
print(df1.isnull())
输出结果:
一 二 三 四 五
y1 False True True False True
y2 False True False True False
y3 False True False True False
y4 False False False False False
y5 False False False False False
y6 False False False False False
isnull().any()
print(df1.isnull().any())
输出结果:
一 False
二 True
三 True
四 True
五 True
[df.isnull().values==True]
print(df1.isnull().values==True)
输出结果:
[[False True True False True]
[False True False True False]
[False True False True False]
[False False False False False]
[False False False False False]
[False False False False False]]
df.isnull().sum()
print(df1.isnull().sum())
输出结果:
一 0
二 3
三 1
四 2
五 1
此函数的作用是 : 删除空缺值所在的行或列。
df.dropna(axis=0,how=’any’,thresh=n,subset,inplace=False)
参数 | 说明 |
axis=(0,1) | 按照行或者列来进行填充,默认为0按行 |
how=(any,all) | ‘any’指带缺失值的所有行/列;'all’指清除一整行/列都是缺失值的行/列,默认为any所有 |
thresh=n | 保留至少含有n个非空缺值的行 |
subset | 删除特定列中包含缺失值的行或列, |
inplace=(False,Ture) | 是否用排列后的数据替换排列前的,默认为False重新生成一个DF副本 |
注意:不能同时设置 how 和 thresh 参数。
例子:
df1.iloc[1:3,[1,3]]=np.nan #设置空缺值
df1.iloc[0,[1,2,4]]=np.nan #设置空缺值
print(df1)
print(df1.dropna(axis=1,how='any',inplace=False))
print(df1.dropna(subset=["二"],inplace=False))
输出结果:
一 二 三 四 五
y1 93 NaN NaN 333.0 NaN
y2 99 NaN 989.0 NaN 99.0
y3 96 NaN 686.0 NaN 66.0
y4 91 1.0 181.0 111.0 11.0
y5 96 6.0 686.0 666.0 66.0
y6 97 7.0 787.0 777.0 77.0
一
y1 93
y2 99
y3 96
y4 91
y5 96
y6 97
一 二 三 四 五
y4 91 1.0 181.0 111.0 11.0
y5 96 6.0 686.0 666.0 66.0
y6 97 7.0 787.0 777.0 77.0
此函数的作用是 :指定的值去填充DF中的空缺值。
df.fillna(填充数据,inplace=False,mthod,limit,axis=0)
参数 | 说明 |
inplace=(False,Ture) | 是否用排列后的数据替换排列前的,默认为False重新生成一个DF副本 |
axis=(0,1) | 按照行或者列来进行填充,默认为0按列 |
mothod(ffill,bfill) | 复制空值前面(ffill)还是后面(bfill)的数据,若不用这个参数,不声明即可。 |
limit() | 限制修改几个空缺值 |
例子:
df1.iloc[1:3,[1,3]]=np.nan #设置空缺值
df1.iloc[0,[1,2,4]]=np.nan #设置空缺值
print(df1)
print(df1.fillna(100,inplace=False,limit=1,axis=0))
输出结果:
一 二 三 四 五
y1 93 NaN NaN 333.0 NaN
y2 99 NaN 989.0 NaN 99.0
y3 96 NaN 686.0 NaN 66.0
y4 91 1.0 181.0 111.0 11.0
y5 96 6.0 686.0 666.0 66.0
y6 97 7.0 787.0 777.0 77.0
一 二 三 四 五
y1 93 100.0 100.0 333.0 100.0
y2 99 NaN 989.0 100.0 99.0
y3 96 NaN 686.0 NaN 66.0
y4 91 1.0 181.0 111.0 11.0
y5 96 6.0 686.0 666.0 66.0
y6 97 7.0 787.0 777.0 77.0
也可通过字典更改指定位置的空缺值(只可以按列来进行填充)
print(df1.fillna({"二":100}))
输出结果:
一 二 三 四 五
y1 93 100.0 NaN 333.0 NaN
y2 99 100.0 989.0 NaN 99.0
y3 96 100.0 686.0 NaN 66.0
y4 91 1.0 181.0 111.0 11.0
y5 96 6.0 686.0 666.0 66.0
y6 97 7.0 787.0 777.0 77.0
sort_values()
此函数的作用是 :将某一行或某一列按大小顺序排列
df.sort_values(by='列名 ',axis=0,ascending=True,inplace=False,na_position='last')
参数说明
参数 | 说明 |
axis | 指定列名(axis=0或index)或索引值(axis=1或columns) |
ascending=(True,False) | 指定列的数组升或降序排列,默认为Ture升序 |
inplace=(False,Ture) | 是否用排列后的数据替换排列前的,默认为False重新生成一个DF副本 |
na_position | 缺失值的显示位置,默认为last末尾 |
sort_index()的参数与sort_values()一致,sort_index()是对索引进行操作
例子:
#sort_values()函数
print(df1.sort_values("三",axis=0,ascending=True,inplace=False,na_position='last'))
输出结果:
一 二 三 四 五
y4 91 1 181 111 11
y1 93 3 383 333 33
y3 96 6 686 666 66
y5 96 6 686 666 66
y6 97 7 787 777 77
y2 99 9 989 999 99
此函数的作用是 : 用来统计数据表中,指定列里有多少个不同的数据值,并计算每个不同值有在该列中的个数,并按个数多少进行排序。
df.value_counts(values,sort=True, ascending=False, normalize=False,bins=None,dropna=True,inplace=False)
参数 | 说明 |
sort=(True,False) | 是否要进行排序;默认True降序排序 |
ascending=(False,True) | 进行升序或者降序排序;默认False降序排序 |
normalize=(False,True) | 是否要对计算结果进行标准化,并且显示标准化后的结果,默认是False否。 |
bins=None | 可以自定义分组区间,默认是否; |
dropna=(True,False) | 是否删除缺失值,默认True删除 |
例子:
print(df1.value_counts("三",sort=True, ascending=False,dropna=True))
输出结果:
三
686.0 2
181.0 1
787.0 1
989.0 1
dtype: int64
此函数的作用是 : 查找并替换DF中的数据。
df.replace(to_replace=None,value=None,inplace=False)
参数 | 说明 |
to_replace=None | 查找要替换的值 |
value=None | 替换与查找到的值 |
inplace=(False,Ture) | 是否用排列后的数据替换排列前的,默认为False重新生成一个DF副本 |
例子:
print(df1.replace(to_replace=686,value="Y",inplace=False))
输出结果:
一 二 三 四 五
y1 93 NaN NaN 333.0 NaN
y2 99 NaN 989.0 NaN 99.0
y3 96 NaN Y NaN 66.0
y4 91 1.0 181.0 111.0 11.0
y5 96 6.0 Y 666.0 66.0
y6 97 7.0 787.0 777.0 77.0
以上便是常见的Pandas库DataFrame基本知识,欢迎指出错误与补充