DataFrame中的groupby分组对象是个什么东东

我们经常会在DataFrame操作的时候用到groupby(column_name)方法,这个方法会根据括号中的参数,一般是字段名,来进行分组,也就是把这个字段相同的记录都分成一组,并且把他们的索引值放在一个列表当中。最终生成一个groupby的数据结构对象。
我们可以通过以下代码来看groupby对象究竟是怎么存储数据的。

import pandas as pd
dict_data = {
	'student':["Li Lei","Han Meimei","Tom","Adam","Betty","Curry"],
	'score'	:[95,98,92,89,82,93],
	'gender':['M','F','M',"M","F","M"]
}
DF_data = pd.DataFrame(dict_data,columns=['gender','student','score'],index=['a','b','c','d','e','f'])

grouped_data = DF_data.groupby('gender')
print(grouped_data)
print(type(grouped_data))

运行结果如下:

<pandas.core.groupby.generic.DataFrameGroupBy object at 0x000000000BAEAB70>
<class 'pandas.core.groupby.generic.DataFrameGroupBy'>
{'F': Index(['b', 'e'], dtype='object'), 'M': Index(['a', 'c', 'd', 'f'], dtype='object')}

所以,用一句话概括:groupby就是根据被选中的字段进行 分组。

对于groupdata数据,我们还可以进行一些统计操作,比如count()、sum()、mean()等方法,在经过这些方法处理之后,会生成一个新的DataFrame()数据帧,这个数据帧每一个记录的index是刚才groupby分类依据那一列出现不同的值,而一个记录中每个字段的值则是根据统计计算出来这个分类当中的统计参数。相当于用这个数代表了这个类的特点。
用以下代码可以解释:

import pandas as pd
dict_data = {
	'student':["Li Lei","Han Meimei","Tom","Adam","Betty","Curry"],
	'score'	:[95,98,92,89,82,93],
	'gender':['M','F','M',"M","F","M"]
}
DF_data = pd.DataFrame(dict_data,columns=['gender','student','score'],index=['a','b','c','d','e','f'])

grouped_data = DF_data.groupby('gender')
print(grouped_data)
print(type(grouped_data))
gdata_count = grouped_data.mean()
print(gdata_count)
print(type(gdata_count))

运行结果如下:

<pandas.core.groupby.generic.DataFrameGroupBy object at 0x000000000BAEBB00>
<class 'pandas.core.groupby.generic.DataFrameGroupBy'>
        score
gender       
F       90.00
M       92.25
<class 'pandas.core.frame.DataFrame'>
[Finished in 4.6s]

我们可以形象地理解成把学生分成了F和M两类,F类的平均分是90,M类的平均分数92.25 。F和M就是两个group,其中.mean()操作获取了左右这个group中学生的平均分。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值