课时7 Pandas数学计算
1. 聚合计算:聚合计算是指对数据进行汇总和统计的操作,常用的聚合计算方法包括计算均值、求和、最大值、最小值、计数等
df['a'].cumsum() # 累计求和
df['a'].cumprod() # 累计求积
2. 按行、列聚合计算:
df.sum(axis=0) # 按列求和汇总到最后一行
df.sum(axis=1) # 按行求和汇总到最后一列
df.describe() # 输出常用的描述性统计量
3. agg函数:
(1)对整个数据框df批量使用多个聚合函数
df.agg(['sum', 'mean', 'max', 'min', 'median'])
(2)对df的某些列应用不同的聚合函数(未应用某个函数,则对应的结果为NaN)
df.agg({'a': ['max', 'min'], 'b':['sum', 'mean'], 'c':['median']})
4. apply、applymap、map函数
这些函数可以对数据运用指定的函数,括号里面可以是函数式、自定义函数(def)或者匿名函数(lambda)
(1)对数据框的数据进行按行或按列操作时用apply()
df.apply(lambda x: x.max()-x.min(), axis=1) # axis=1,按行计算,即每行输出一个值
df.apply(lamda x: x.max()-x.min(), axis=0) # 默认参数为axis=0,按列计算,每列输出一个值
(2)对数据框的每一个数据进行操作时用applymap(),返回结果仍是dataframe格式
df.applymap(lambda x: 1 if x>60 else 0) # 系统自动对每一个数据进行判断,判断之后输出结果
(3)对series的每一个数据进行操作时用map()
df['a'].map(lambda x: 1 if x>60 else 0)
(4)总结:
apply()函数可以在dataframe或series上应用自定义函数,可以在行或列上进行操作
applymap()函数只适用于dataframe,可以在每个元素上应用自定义函数
map()函数只适用于series,用于将每个元素映射到另一个值
课时8 Pandas合并连接
在pandas中,有多种方法可以合并和拼接数据,常用的方法包括append()、concat()、merge()
1. 追加(append)
append()函数用于将一个dataframe或series对象追加到另一个dataframe中
df1.append(df2, ignore_index=True)
2. 合并(concat)
concat()函数用于沿指定轴将多个对象(比如series、dataframe)堆叠在一起,可以沿行或列的方向进行拼接。
pd.concat([df1, df2], axis=0) # 上下拼接
pd.concat([df1, df2], axis=1) # 左右拼接
3. 连接(merge)
merge()函数用于根据一个或多个键将两个dataframe的行连接起来,类似SQL中的JOIN操作
(1)两个数据框拥有同样的列
pd.merge(df1, df2, how='inner') # 只保留完全一样的数据
pd.merge(df1, df2, how='outer') # 合并数据,重复值只保留一次
(2)两个数据框拥有不同的列,df1有A、B列,df2有B、C列
pd.merge(df1, df2, how='left', on="A") # 左连接,保留df1的全部行,A列值相同
pd.merge(df1, df2, how='right', on="A") # 左连接,保留df2的全部行,A列值相同
pd.merge(df1, df2, how='inner', on="A") # 内连接,只保留相同值
pd.merge(df1, df2, how='inner', on="A") # 外连接,保留所有值
小技巧:
df1[df1['A'].isin(df2['A])] #返回在df1中列'A'的值在df2中也存在的行
df1[~df1['A'].isin(df2['A])] #返回在df1中列'A'的值在df2中不存在的行
课时9 Pandas分组聚合
分组聚合(group by)分两步:
(1)先分组:根据某列数据的值分组——用groupby()对某列进行分组
(2)后聚合:对结果应用聚合函数进行计算——在agg()函数里应用聚合函数
1. 单列分组
(1)对单列分组后对其他列应用sum:
df.groupby('A').sum()
(2)对单列分组后对指定的列应用单个指定的聚合函数,并实现重命名:
df.groupby('A').agg({'C':'min'}).rename(columns={'C': 'C_min'})
(3)对单列分组后对不同的列应用不同的聚合函数:
df.groupby(['A']).agg({'C':'max','D':'min'}).rename(columns={'C': 'C_max','D': 'D_min'})
2. 两列分组
(1)对多列分组后应用sum聚合函数:
df.groupby(['A','B']).sum()
(2)对两列进行groupby分组后,都应用max聚合函数:
df.groupby(['A','B']).agg({'C':'max'}).rename(columns={'C': 'C_max'})
(3)对两列进行groupby分组后,分别应用max、min聚合函数:
df.groupby(['A','B']).agg({'C':'max','D':'min'}).rename(columns={'C': 'C_max','D': 'D_min'})