Pandas(三)数据整合

本文介绍了Python中数据整合的方法,包括使用merge进行数据关联,如内联、外联、左联和右联,以及通过索引关联。同时,讨论了数据拼接,如通过pd.concat实现行或列的拼接,并可以选择性地忽略或保留索引。此外,文章还详细阐述了数据聚合,包括按特定键进行分组并应用各种计算函数,如sum、mean等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 数据整合:

  • 数据关联(类似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()

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Charliewyzzzz

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值