python-3.x - 为具有最大计数的组获取 groupby 标签的有效方法
问题描述
假设我以iris
数据集为例。我随机采样数据以获得数据的子集。接下来我想找到类数的计数,因此我按 Species 对数据进行分组,并使用该.count()
函数来获取每个类中实例数的计数。到目前为止,一切都很好
这是执行此操作的代码:
import numpy as np
import pandas as pd
iris_df = pd.read_csv('./data/iris.csv') # this file has 150 rows
subset_df = iris_df.iloc[np.random.randint(1, 150, 60), ]
subset_df.groupby('Species', as_index = False).count()
## Output
Species Sepal.Length Sepal.Width Petal.Length Petal.Width
0 setosa 19 19 19 19
1 virginica 20 20 20 20
2 versicolor 21 21 21 21
现在这是我的问题:有没有办法用大多数样本获取实例的组标签。所以在上面的输出中:versicolor
有最多的样本,所以我想得到那个组标签。
我尝试取上述行的最大值,但这会按字符对物种列进行排序并返回virginica
,这绝对是不正确的,但输出是有道理的。
我可以想到的另一种获取组名的方法是.groups
通过运行以下代码在按数据框分组时使用
species_dict = subset_df.groupby('Species', as_index = False).groups
max_ind = np.argmax([len(species_dict[k]) for k in species_dict.keys()])
print(list(species_dict.keys())[max_ind])
有没有更好的方法,更有效的方法,使用我错过的一些 Pandas 功能。请告诉我
解决方案
.max()['Species']
在第 5 行末尾添加。
推荐阅读
- python - 在 ubuntu 上使用 pycharm 时导入 gnuradio
- apache - 安装新版本的 Xubuntu 19.10 后 Phpmyadmin 无法正常工作
- matlab - 连续数岛的计数长度和频率
- asp.net-core - ASP.NET Core OAuth 不适用于 Safari
- javascript - HTML5 如何获取视频的第一帧
- javascript - Reactjs - /src/App.js 找不到文件:'index.js' 与磁盘上的相应名称不匹配:'.\s rc\Routes\Detail\routes'
- simulation - 如何在 NetLogo 上模拟相同的场景 3 次?
- java - Facebook Graph API 错误 - 应用按钮自动检测已禁用
- react-native - React-Native App 在导航时崩溃
- algorithm - 在没有反向操作的情况下保存撤消/重做