使用以下代码df_grouped创建。
df_grouped = df.groupby(by='Pclass')
在循环下面将打印Pclass值以及每个分组量的长度。
for val,grp in df_grouped:
print('There were',len(grp),'people traveling in',val,'class.')
代码如何访问信息? val&grp如何在不被较早引用的情况下使用?该信息如何存储在groupby对象中?
答案 0 :(得分:2)
如Group By: split-apply-combine文档中所述,数据存储在GroupBy object
中,这是具有特殊attributes的数据结构。
您可以自己验证:
>>> type(df_grouped)
应返回:
<class 'pandas.core.groupby.DataFrameGroupBy'>
文档中的以下代码片段很好地解释了数据的结构:
groups属性是一个dict,其键是计算出的唯一组,而对应的值是属于每个组的轴标签。
您注意到,您可以轻松地遍历每个单独的组。但是,通常有矢量化方法可以很好地与groupby
对象配合使用,并且可以更有效,更快速地访问信息并计算事物。
答案 1 :(得分:1)
引用docs:“ groups属性是一个dict,其键是计算出的唯一组,而对应的值是属于每个组的轴标签”
您可能有兴趣研究.agg()
,例如:
df = pd.DataFrame([['Person A', 2, 3, 4],
['Person B', 3, 2, 1],
['Person C', 5, 7, 5],
['Person A', 3, 4, 9],
['Person C', 8, 3, 2]],
columns=['Person','Val 1','Val 2','Val 3'])
给出以下数据框:
Person Val 1 Val 2 Val 3
0 Person A 2 3 4
1 Person B 3 2 1
2 Person C 5 7 5
3 Person A 3 4 9
4 Person C 8 3 2
然后做一个groupyby
和agg
:
df.groupby('Person').agg({'Val 1': 'sum', 'Val 2': 'mean', 'Val 3': 'count'})
礼物:
Val 1 Val 2 Val 3
Person
Person A 5 3.5 2
Person B 3 2.0 1
Person C 13 5.0 2
您可以在此处简单地将字典传递到agg
,该字典指定要在特定列的每个组上执行的操作。