目录1、读取csv文件df.read_csv2、写入csv文件df.to_csv3、数据帧pd.DataFrame4、获取数据帧的形状df.shape5、查看前n行df.hea...
目录
1、读取 csv 文件 df.read_csv2、写入 csv 文件 df.to_csv
3、数据帧 pd.DataFrame
4、 获取数据帧的形状 df.shape
5、查看前 n 行 df.head(n)
6、打印列的类型 df.dtypes
7、修改列的类型 astype
8-9、打印有关 DataFrame 的描述性信息
10、 填充 NaN 值 df.fillna
11、数据帧的关联 df.merge
12、数据帧排序 df.sort_values
13、数据帧分组 df.groupby
14、重命名列 df.rename
15、删除列 df.drop
16、增加列
17、数据帧过滤-布尔型过滤
18、数据帧过滤-之获取某一列
19、数据帧过滤-按标签选择 df.loc
20、数据帧过滤-按索引选择 df.iloc
21、数据帧中对某一列去重
22、数据帧中获取某一列去重后的个数
23、将函数应用于 DataFrame df.apply
24、标记重复行 df.duplicated
25、删除重复行 df.drop_duplicates
26、寻找值的分布 value_counts
27、 重置 DataFrame 的索引 df.reset_index
28、查找交叉表 df.crosstab
29、透视数据帧
1、读取 csv 文件 df.read_csv
csv 通常是读取 Pandas DataFrame 的最流行的文件格式,你可以使用 pd.read_csv() 方法创建 Pandas DataFrame,类似的函数还有 read_excel,用法如下:
file="file.csv" df=pd.read_csv(file) print(df) #######output########## col1col2col3 012A 134B
2、写入 csv 文件 df.to_csv
将 DataFrame 导出到 csv,类似的函数是 df.to_excel,用法如下:
df.to_csv("file.csv",sep="|",index=False)
查看 file.csv
!catfile.csv col1|col2|col3 1|2|A 3|4|B
3、数据帧 pd.DataFrame
用来创建 Pandas 的 DataFrame:
data=[[1,2,"A"], [3,4,"B"]] df=pd.DataFrame(data, columns=["col1","col2","col3"]) print(df) #######output########## col1col2col3 012A 134B
借助这个构造函数,我们还可以把字典转换为 DataFrame:
data={'col1':[1,2],
'col2':[3,4],
'col3':["A","B"]}
df=pd.DataFrame(data=data)
print(df)
#######output##########
col1col2col3
col1col2col3
013A
124B
4、 获取数据帧的形状 df.shape
df.shape 属性可以获取 DataFrame 的形状,也就是几行几列这样的数据:
print(df)
print("Shape:",df.shape)
#######output##########
col1col2col3
col1col2col3
013A
124B
Shape:(2,3)
5、查看前 n 行 df.head(n)
数据帧(DataFrame) 会有很多行,通常我们只对查看 DataFrame 的前 n 行感兴趣,这时可以使用 df.head(n) 方法打印前 n 行:
print(df.head(5)) #######output########## col1col2col3 012A 134B 256C 378D 4910E
6、打印列的类型 df.dtypes
Pandas 为 DataFrame 中的每一列分配适当的数据类型。使用 dtypes 参数打印所有列的数据类型:
df.dtypes #######output########## col1int64 col2int64 col3object dtype:object
7、修改列的类型 astype
如果要更改列的数据类型,可以使用 astype() 方法,如下所示:
df["col1"]=df["col1"].astype(np.int8) print(df.dtypes) #######output########## col1int8 col2int64 col3object dtype:object
8-9、打印有关 DataFrame 的描述性信息
这里有两个函数,第一个 df.info():
df.info() #######output########## <class'pandas.core.frame.DataFrame'> RangeIndex:10entries,0to9 Datacolumns(total3columns): #ColumnNon-NullCountDtype ---------------------------- 0col110non-nullint8 1col210non-nullint64 2col310non-nullobject dtypes:int64(1),int8(1),object(1) memoryusage:298.0+bytes
第二个是 df.describe()。
如果要打印每个数值列的平均值、标准偏差、最大值等标准统计信息,就可以这样:
print(df.describe()) #######output########## col1col2 count10.0010.00 mean10.0011.00 std6.066.06 min1.002.00 25%5.506.50 50%10.0011.00 75%14.5015.50 max19.0020.00
10、 填充 NaN 值 df.fillna
假如有这样的 DataFrame:
df=pd.DataFrame([[1,2,"A"],[np.nan,4,"B"]], columns=["col1","col2","col3"]) print(df) #######output########## col1col2col3 01.02A 1NaN4B
里面有 NaN,如果要填充它,可以这样:
df.fillna(0,inplace=True) print(df) ########output########## col1col2col3 01.02A 10.04B
11、数据帧的关联 df.merge
如果你想用一个连接键合并两个 DataFrame,使用 pd.merge() 方法:
merge 之前:
df1=... df2=... print(df1) print(df2) ########output########## col1col2col3 012A 134A 256B col3col4 0AX 1BY
使用 df.merge 后,可以生成新的数据帧
pd.merge(df1,df2,on="col3") ########output########## col1col2col3col4 012AX 134AX 256BY
12、数据帧排序 df.sort_values
排序是 DataFrame 非常典型的操作,我们可以使用 df.sort_values() 方法对 DataFrame 进行排序:
f=pd.DataFrame([[1,2,"A"],
[5,8,"B"],
[3,10,"B"]],
columns=["col1","col2","col3"])
print(df.sort_values("col1"))
########output##########
col1col2col3
012A
2310B
158B
13、数据帧分组 df.groupby
要对 DataFrame 进行分组并执行聚合,使用 Pandas 中的 groupby() 方法,如下所示:
df=pd.DataFrame([[1,2,"A"],
[5,8,"B"],
[3,10,"B"]],
columns=["col1","col2","col3"])
df.groupby("col3").agg({"col1":sum,"col2":max})
########output##########
col1col2
col3
A12
B810
14、重命名列 df.rename
如果要重命名列标题,请使用 df.rename() 方法,如下所示:
f=pd.DataFrame([[1,2,"A"],
[5,8,"B"],
[3,10,"B"]],
columns=["col1","col2","col3"])
df.rename(columns={"col1":"col_A"})
########output##########
col_Acol2col3
012A
158B
2310B
15、删除列 df.drop
如果要删除数据帧中的某一列,可以这样:
df=pd.DataFrame([[1,2,"A"], [5,8,"B"], [3,10,"B"]], columns=["col1","col2","col3"]) print(df.drop(columns=["col1"])) ########output########## col2col3 02A 18B 210B
16、增加列
方法一:使用赋值运算符添加新列
df=pd.DataFrame([[1,2],[3,4]], columns=["col1","col2"]) df["col3"]=df["col1"]+df["col2"] print(df) ########output########## col1col2col3 0123 1347
方法二:df.assign()
df=pd.DataFrame([[1,2],[3,4]], columns=["col1","col2"]) df=df.assign(col3=df["col1"]+df["col2"]) print(df) ########output########## col1col2col3 0123 1347
17、数据帧过滤-布尔型过滤
如果该行上的条件评估为 True,则选择该行:
df=pd.DataFrame([[1,2,"A"], [5,8,"B"], [3,10,"B"]], columns=["col1","col2","col3"]) print(df[df["col2"]>5]) ########output########## col1col2col3 158B 2310B
18、数据帧过滤-之获取某一列
df["col1"]##ordf.col1 ########output########## 01 15 23 Name:col1,dtype:int64
19、数据帧过滤-按标签选择 df.loc
在基于标签的选择中,要求的每个标签都必须在 DataFrame 的索引中。整数也是有效的标签,但它们指的是标签而不是索引位置。
假如有如下 DataFrame:
df=pd.DataFrame([[6,5,10], [5,8,6], [3,10,4]], columns=["Maths","Science","English"], index=["John","Mark","Peter"]) print(df) ########output########## MathsScienceEnglish John6510 Mark586 Peter3104
我们使用 df.loc 方法进行基于标签的选择:
df.loc["John"] ########output########## Maths6 Science5 English10 Name:John,dtype:int64
df.loc["Mark",["Maths","English"]] ########output########## Maths5 English6 Name:Mark,dtype:int64
但是在df.loc[]中,不允许使用索引来过滤 DataFrame,如下图:
20、数据帧过滤-按索引选择 df.iloc
以 19 里面的数据帧为例,使用 df.iloc 可以用索引:
df.iloc[0] ########output########## Maths6 Science5 English10 Name:John,dtype:int64
21、数据帧中对某一列去重
df=pd.DataFrame([[1,2,"A"], [5,8,"B"], [3,10,"A"]], columns=["col1","col2","col3"]) df["col3"].unique() ########output########## array(['A','B'],dtype=object)
22、数据帧中获取某一列去重后的个数
df["col3"].nunique() ########output########## 2
23、将函数应用于 DataFrame df.apply
非常实用:
defadd_cols(row): returnrow.col1+row.col2 df=pd.DataFrame([[1,2], [5,8], [3,9]], columns=["col1","col2"]) df["col3"]=df.apply(add_cols,axis=1) print(df) ########output########## col1col2col3 0123 15813 23912
还可以将方法应用于单个列,如下所示:
defsquare_col(num): returnnum**2 df=pd.DataFrame([[1,2], [5,8], [3,9]], columns=["col1","col2"]) df["col3"]=df.col1.apply(square_col) print(df) ########output########## col1col2col3 0121 15825 2399
24、标记重复行 df.duplicated
你可以使用 df.duplicated() 方法标记所有重复的行
df=pd.DataFrame([[1,"A"], [2,"B"], [1,"A"]], columns=["col1","col2"]) df.duplicated(keep=False) ########output########## 0True 1False 2True dtype:bool
25、删除重复行 df.drop_duplicates
可以使用 df.drop_duplicates() 方法删除重复的行,如下所示:
df=pd.DataFrame([[1,"A"], [2,"B"], [1,"A"]], columns=["col1","col2"]) print(df.drop_duplicates()) ########output########## col1col2 01A 12B
26、寻找值的分布 value_counts
要查找列中每个唯一值的频率,请使用 df.value_counts() 方法:
df=pd.DataFrame([[1,"A"],
[2,"B"],
[1,"A"]],
columns=["col1","col2"])
print(df.value_counts("col2"))
########output##########
col2
A2
B1
dtype:int64
27、 重置 DataFrame 的索引 df.reset_index
要重置 DatphpaFrame 的索引,请使用 df.reset_index() 方法:
df=pd.DataFrame([[6,5,10], [5,8,6], [3,10,4]], columns=["col1","col2","col3"], index=[2,3,1]) print(df.reset_index()) ########output########## indexcol1col2col3 026510 13586 213104
要删除旧索引,请将 drop=True 作为参数传递给上述方法:
df.reset_index(drop=True) ########output########## col1col2col3 06510 1586 23104
28、查找交叉表 df.crosstab
要返回跨两列的每个值组合的频率,请使用 pd.crosstab() 方法:
df=pd.DataFrame([["A","X"], ["B","Y"], ["C","X"], ["A","X"]], columns=["col1","col2"]) print(pd.crosstab(df.col1,df.col2)) ########output########## col2XY col1 A20 B01 C10
29、透视数据帧
数据透视表是 Excel 中常用的数据分析工具。与上面讨论的交叉表类似,Pandas 中的数据透视表提供了一种交叉制表数据的方法。
假如 DataFrame 如下:
df=... print(df) NameSubjectMarks 0JohnMaths6 1MarkMaths5 2PeterMaths3 3JohnScience5 4MarkScience8 5PeterScience10 6JohnEnglish10 7MarkEnglish6 8PeterEnglish4
使用 pd.pivot_table() 方法,可以将列条目转换为列标题:
pd.pivot_table(df, index=["Name"], columns=["Subject"], values='Marks', fill_value=0) ########output########## SubjectEnglishMathsScience Name John1065 Mark658 Peter4310
到此这篇关于学会这29个常用函数,你就是Pandas专家的文章就介绍到这了,更多相关Pandas 函数内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!










