关于Python中groupby,merge,concat的运用和这几个函数之间的区别

本文介绍了Python数据处理中的groupby、merge和concat函数的使用和区别。groupby用于按列聚合数据,merge通过指定列进行两个DataFrame的连接,concat则在纵轴或横轴上合并多个DataFrame。文中详细阐述了每个函数的参数和常见用法,并提供了实例演示。
摘要由CSDN通过智能技术生成

      数据挖掘和机器学习中会经常用到groupby()函数,merge()函数,concat()函数。groupby()函数主要对数据进行聚合,merge()一般情况下用来对两个Dataframe进行结合(一般情况下按照某一列进行将两个Dataframe进行连接),concat()一般情况下是直接在纵轴上面直接合并。下面来总结下这几个函数之间的用法和不同之处。

1.groupby()

1.groupby的一般用法

关于groupby()意为聚合函数,用到最多的就是将同一列中的不同的行的值进行聚合,至于怎么聚合则看后面用什么函数,如函数是mean(),那么表示对这一列进行聚合后其他列的值都进行了求均值,还可以对多个列进行聚合,注意聚合后这些列则成为索引,具体如下:

首先构造一个Dataframe(这里用字典的方法来进行构建Dataframe)

>>>import pandas as pd
>>>df=pd.DataFrame({'s1':['a','a','a','d','e'],
>>>                 's2':['one','two','one','four','five'],
>>>                 's3': np.random.randn(5),
>>>                 's4': np.random.randn(5)})
>>>df
	s1	s2	s3	        s4
0	a	one	0.998368	1.406745
1	a	two	-0.175247	0.495464
2	a	one	-0.532833	-0.300619
3	d	four	-0.019009	0.560179
4	e	five	0.815014	-0.251015


1.对df中的s1列进行聚合

>>>a=df.groupby(['s1']).mean()
>>>a
	s3	        s4
s1		
a	0.132566	0.519919
d	-0.413402	1.205482
e	-1.258209	0.434470


2.对df中的s2列进行聚合

>>>b=df.groupby(['s2']).mean()
>>>b
        s3	        s4
s2		
five	-1.258209	0.434470
four	-0.413402	1.205482
one	-0.454132	1.044133
two	1.305962	-0.528508

在对上面的s1或s2进行聚合后另一列是没有的,因为假如对s1进行聚合那么s2就是麻烦列直接进行在结果中进行删去即取其子集

3.对df中s1和s2列进行聚合,并且选择聚合后的s3列

>>>c=df.groupby(['s1','s2']).mean()['s3']
>>>c
s1  s2  
a   one    -0.454132
    two     1.305962
d   four   -0.413402
e   five   -1.258209
Name: s3, dtype: float64


4.还可以对其中的series进行聚合,如下

>>>d=df['s3'].groupby(df['s1']).mean()
>>>d
s1
a    0.132566
d   -0.413402
e   -1.258209
Name: s3, dtype: float64

这里是对s3列进行按照s1列进行聚合,注意这里不能对s2列进行聚合,因为对s1进行聚合则s2列是麻烦列

假如在数据集中某一个列中有很多值是相同的,那么很有可能需要进行聚合处理,一般情况下是是userid这一列有多个值是相同的,那么狠可能对其进行聚合处理,然后对其他列中的值进行计算。

在上面的例子中还可以使用其他的函数,一般使用比较多的函数:

mean() 求均值
sum()  求和
size() 求某一列中某一个值聚合之前的行数(注意输出的seris即只是一列)
count() 和上面的series功能类似,但是这里输出的的Dataframe 
describe() 对每个聚合的列求出其count() ,mean(),std(),min(),max(),25%,50%,75%的值
std() 标准差
frist(),last()  第一个,最后一个非NA值

还可以使用groupby来进行迭代,对于多重键的情况,元组的第一个元素将会是由键值组成的元组,如下:

>>>import pandas as pd
>>>df=pd.DataFrame({'s1':['a','a','a','d','e'],
>>>                 's2'
  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值