目录
数据读取与存储
读取.csv 文件
df = pd.read_csv('path_to_file.csv')
存储.csv 文件
df.to_csv('path_to_file.csv', index=True)
读取excel文件
df = pd.read_excel('path_to_file.xls', sheet_name='Sheet1',engine=None)
存储excel文件
df.to_excel('path_to_file.xlsx', sheet_name='Sheet1')
数据引用
选择行
df.loc[label] #用标签选择行
label可填:
单个标签,例如 ['a' ](自定义标签), 1 (默认标签),返回a行( Series 类型)
标签列表,例如 ['a','b','c'] ,返回 a,b,c行(DataFrame 类型)
标签切片,例如[ 'a':'c'] ,返回a行-c行( DataFrame 类型)
df.iloc[rowNum] #用位置选择行
rowNum(row number)可填:
单个整数,如[1],返回的是第2行( Series 类型)
整数列表,如[[0,2]],返回的是第1行和第3行(DataFrame 类型)
整数切片,例如[1:7] ,返回的是第2行至第8行
df.iloc[:] 表示选择所有行,返回的是 DataFrame 类型
同时选择行与列
df.loc[行标签,列名]
如dfcaridx.loc['beta':'delta',['two','flag']]
df.iloc[行位置,列位置]
如dfcar.iloc[1:3,[0,1]] # 切片与列表搭配选择DataFrame
数据清理
判断是否有缺失值 .isna()
df.isna()
典例:选择accept DataFrame中所有至少包含一个NaN值的行,并返回这些行的所有列
accept.loc[accept.isna().sum(axis=1)>0,:]
删除缺失值 .dropna()
DataFrame.dropna(axis=0, how='any', inplace=False)#dropna函数即删除缺失值
axis=0 #沿着行的方向进行操作
axis=1 #沿着列的方向进行操作
how='any' #只要包含缺失值,就删除相应的行或列,默认any
how='all' #只有当某行(列)所有值都是缺失值的时候,才删除该行(列)
判断离群点
箱型图
_ = df['列名'.plot(kind='box',figsize=(长度,高度),subplot=True)]
subplots=True: 这个参数指示 matplotlib 创建一个子图(subplot)网格,如果设置为 True,则每个选定的列都会在一个单独的子图上绘制箱形图。
数据集合并
横向合并 .merge()
df_left.merge(df_right, how='inner', left_index=False, right_index=False)
how='inner' #连接左右两个 DataFrame 的 index 中共同出现的行
how='outer' #连接左右两个 DataFrame 的所有 index
how='inner' #连接左右两个 DataFrame 的 index 中共同出现的行
-
left_index
:布尔值,默认为False
。如果设置为True
,左DataFrame的索引将被用作合并键。这意味着左DataFrame的索引必须与右DataFrame的某个键匹配。 -
right_index
:布尔值,默认为False
。如果设置为True
,右DataFrame的索引将被用作合并键。这意味着右DataFrame的索引必须与左DataFrame的某个键匹配。
当使用left_index=True
和right_index=True
时,两个DataFrame的索引将直接匹配,而不需要额外的键列。这通常用于两个DataFrame的索引已经完全匹配的情况。
纵向合并 pd.concat()
把多个具有相同列名的 DataFrame 按列衔接起来
pd.concat([df_1,df_2], axis=0, join='outer',ignore_index=False)
join :连接方式,可选值'inner'或者'outer' ,‘outer’ 表示连接两个 DataFrame 的外侧,保留所有原始索引。 ‘inner’ 表示只连接两个 DataFrame 的交集部分。
数据聚集
分组——groupby函数
df.groupby(by='列名/字典的键', axis=0, sort=True)
聚合计算
apply函数
df.apply('count/sum/mean/median/max/min',axis=0)
这串代码表示对数据集df沿着行的方向输出每行总和/平均值...
agg函数
df.groupby().agg('count/sum/mean/median/max/min')
eg:
df.groupby('key1').agg(['mean','std']) #只按照'key1'列的值进行分组后计算每列的平均值和标准差
df.groupby(['key1','key2'...]).agg({'data1': ['mean'], 'data2': ['std']})#按照‘key1’列、‘key2’列等列分组后对’data1‘列、‘data2’列分别计算平均值、标准差
agg
函数是apply
函数的一个别名,通常用于DataFrame对象。- 它接受一个字典,字典的键是列名,值是对应的函数或函数列表。
agg
函数会对每个列应用指定的函数或函数列表,并返回一个包含结果的新DataFrame。
Sec1