理解Python Pandas中的groupby()

3

我正在尝试理解groupby()操作。仅仅理解groupby将数据分组是不够的,因为这只是第一步,我们还需要进行更多的操作:

df = pd.DataFrame({'Animal': ['Falcon', 'Falcon', 'Parrot', 'Parrot'], 
                   'Max Speed': [380., 370., 24., 26.],  
                   'Class': ['Prey', 'Prey', 'Not Prey', 'Not Prey']}) 

In [7]: df                                                                                                                                                                                                   
Out[7]: 
   Animal  Max Speed     Class
0  Falcon      380.0      Prey
1  Falcon      370.0      Prey
2  Parrot       24.0  Not Prey
3  Parrot       26.0  Not Prey

我知道groupby()不是在原始数据集上操作的,而是在副本上操作的。我无法理解的是,在执行此操作后代码将是什么样子:

df.groupby('Class') 

我能从视觉上理解吗?我可以理解原始的数据框,因为我可以看到它是一个表格,因此可以想象如何在其上执行操作。那么当我们执行上述grouoby()操作时会发生什么?它会创建一个新的Series还是两个新的列之一是“Classs”,另一个是包含所有其他值的字符串?

我尝试查看官方文档用户指南(https://pandas.pydata.org/pandas-docs/stable/user_guide/groupby.html),但这并不能帮助理解grouby()操作后的样子。


样例数据的期望输出是什么?你能否创建一个“最小化、完整性和可验证性示例”(http://stackoverflow.com/help/mcve)? - jezrael
如果我在这里创建一个最小化示例,那么帖子会变得4倍大,因为我必须从Kaggle中复制它。这也是我没有这样做的原因之一。 - ArnuldOnData
好的,请花点时间阅读这篇关于如何提供出色的pandas示例的帖子(https://dev59.com/O2Ij5IYBdhLWcg3wk182),以及如何提供一个最小,完整和可验证的示例(http://stackoverflow.com/help/mcve),并相应地修改您的问题。这些关于如何提问的提示(http://stackoverflow.com/help/how-to-ask)也可能有用。 - jezrael
我已经编辑过了,甚至让代码可以在任何人的解释器上运行。希望现在清楚了。 - ArnuldOnData
好的,答案已被编辑。 - jezrael
还建议阅读这个来了解Group-By: https://github.com/jakevdp/PythonDataScienceHandbook/blob/8a34a4f653bdbdc01415a94dc20d4e9b97438965/notebooks/03.08-Aggregation-and-Grouping.ipynb - filbranden
1个回答

2

我认为你可以查看这个链接:

GroupBy对象

groupby()函数返回一个GroupBy对象,它描述了原始数据集的行是如何分组的。 GroupBy对象的group变量是一个字典,其键是计算出的唯一组,相应的值是属于每个组的轴标签。

如果你只运行df.groupby('column_for_grouping'),你将获得一个类似于DataFrameGroupBy对象的Python对象。您可能想知道DataFrameGroupBy对象在内部的样子。所以让我们通过迭代groups来打印DataFrameGroupBy对象中按大陆划分的组。


@Arnuld 使用 birds.groupby('Animal')['Class'] - jezrael
2
你的代码更易读、清晰,很好地表达了其意图。按动物分组,并将类别放入该组中。简单易懂。 - ArnuldOnData

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接