Python 如何访问pandas dataframe groupby对象中的数据?
使用以下代码创建了df_分组Python 如何访问pandas dataframe groupby对象中的数据?,python,pandas,group-by,Python,Pandas,Group By,使用以下代码创建了df_分组 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对象中的?如文档中所述,数据存储在groupby对象中,该对象是
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对象中的?如文档中所述,数据存储在groupby对象中,该对象是一种具有特殊功能的数据结构
您可以自己验证这一点:
>>> type(df_grouped)
应返回:
<class 'pandas.core.groupby.DataFrameGroupBy'>
文档中的这个片段很好地解释了数据的结构:
“组”属性是一个dict,其键是计算出的唯一组,相应的值是属于每个组的轴标签
正如您所注意到的,您可以轻松地遍历每个组。但是,通常有一些矢量化方法可以很好地处理groupby
对象,并且可以更有效、更快速地访问信息和计算内容。参考:“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
然后通过和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
,该字典指定您希望对特定列的每个组执行的操作。如果您展示一个数据帧的示例,这会有所帮助。至于问题#2,val,grp只是占位符变量,指示您希望为iterable.Fo收集对应的对r一个更简单的示例,尝试“在'abcd'中输入i”:打印(i)”并查看返回的内容。