数据整合:
-
数据关联(类似SQL中join):
#关联数据集列名相同
df.merge(df1,df2, how = 'inner,outer,left,right', on=['col1','col2'])
#关联数据集列名不同
df.merge(df1,df2, how = 'left', left_on = ['',''] ,right_on = ['',''])
#使用索引做关联
df.merge(df1,df2, how = 'left', left_on = ['',''] ,right_index = TURE)
df1,df2为数据集
how = 'inner' 内关联,取交集,how = 'outer' 外观连,取并集,how = 'left/right' 左/右关联
on 表示关联主键,默认为两个数据集中相同名称的列
left_on/right_on 关联数据集主键名称不同时,需要指定关联列
left_index/right_index 关联数据时以索引作为主键
suffixes 区分两个数据集中相同字段,默认为('_x','_y')
- 数据拼接(类似SQl中Union):
pd.concat([df1,df2,df3,...],join = 'inner/outer',keys = ['df1','df2',...],axis = 1)
join = outer 所有列/行拼接
join= inner 数据集中共有的列/行拼接
keys用于区分数据集
axis 默认为0 进行行拼接 axis =1 进行列拼接
ignore_index 默认为Fales 保留原数据集索引,ignore_index=TRUE 重新生成索引
数据聚合
#数据集整体聚合+索引
grouped = df.groupby(['key1','key2'])[value1]
#数据集索引后聚合
grouped = df[value1].groupby(['key1','key2'])
#根据key值的字符长度聚合
grouped = df.groupby(len())
#字典替换聚合字段名称
mapping = {'a':'red', 'b':'blue'}
grouped = df.groupby(mapping, axis = 1)
#series替换聚合字段名称
mapping_series = pd.series(mapping)
grouped = df.groupby(mapping_series, axis =1)
数据计算
#直接使用计算函数
grouped.sum()
#使用apply函数进行多种计算
grouped.apply(['sum','mean',...])
#使用apply函数+列表
function = ['mean','sum']
grouped.apply(function)
#使用apply函数对指定列进行指定计算
grouped.apply([('value1','mean'),('value2','sum')])
#使用apply函数+变量
calculated = [('value1','mean'),('value2','sum')]
grouped.apply(calculated)
#使用apply函数+字典
grouped.apply({'value1':'mean' , 'value2':'sum'})
计算方法:
#求和
grouped.sum()
#计数
grouped.count()
#平均
grouped.mean()
#中位数
grouped.mediam()
#最大/最小值
grouped.max/min()
#第一个值/最后一个值
grouped.first/last()
#标准差/方差
grouped.std/var()
#非nan乘积
grouped.prod()