前言
pandas中的groupby函数功能就如同字面意思,通过某个特征将数据组织起来。只不过其返回值不是DataFrame,而是另一种形式,所以没法直接将groupby的返回值输出出来,其返回值常与.mean()/.count()/.median()等搭配起来输出,下面通过例子说明。
正文
import pandas as pd
from pandas import DataFrame
df = DataFrame({'key1':list('ababa'),
'key2': ['one','two','one','three','one'],
'data1': np.arange(0, 5),
'data2': np.arange(5, 10)})
df.head()
1. groupby的返回值是什么
df.groupby(['key1'])
<pandas.core.groupby.generic.DataFrameGroupBy object at 0x0000024296D93F48>
我们可以看出,直接输出返回值是一个重构格式的DataFrame对象,没法直接拿来用。刚刚说了,groupby的作用是通过某个特征(这里就是“key1”)来组织数据,那这个返回值到底是什么样的形式呢?
返回值是个重构格式的DataFrame,虽然没法直接输出出来,但其实返回值我们可以理解它长这样:
回想刚刚说的,是不是就是按照“key1”这个特征将数据重新组织起来了,当然这都是我们自己这么理解的,实际可能更复杂。
我们搭配mean()求均值:
df.groupby(['key1']).mean()
因为“key2”这列都是字符串,所以没法求均值,最后输出没有“key2”这一列,很好理解对吧。
2. groupby中有多个参数情况
上面我们只通过“key1”这一个特征来重新组织数据,如果我们想用"key1"和"key2"两个特征来重新组织呢?那就传两个特征进去:
df.groupby(['key1','key2'])
同理,这时我们可以理解返回值长这样:(实际返回值不是这样的,但我们可以这么理解)
求一下均值看看:
df.groupby(['key1','key2']).mean()
END