【发布时间】:2021-08-31 22:44:40
【问题描述】:
假设我有以下df:
df = pd.DataFrame({'name':['Sara', 'John', 'Christine','Paul', 'Jo', 'Zack','Chris', 'Mathew', 'Suzan'],
'visits': [0, 0, 1,2, 3, 9,6, 10, 3]})
df
看起来像:
name visits
0 Sara 0
1 John 0
2 Christine 1
3 Paul 2
4 Jo 3
5 Zack 9
6 Chris 6
7 Mathew 10
8 Suzan 3
我做了几行代码来获取每个名称的访问百分比并将它们降序排序:
df['percent'] = (df['visits'] / np.sum(df['visits']))
df.sort_values(by='percent', ascending=False).reset_index(drop=True)
现在我得到了所有名称的访问次数占总访问次数的百分比:
name visits percent
0 Mathew 10 0.294118
1 Zack 9 0.264706
2 Chris 6 0.176471
3 Jo 3 0.088235
4 Suzan 3 0.088235
5 Paul 2 0.058824
6 Christine 1 0.029412
7 Sara 0 0.000000
8 John 0 0.000000
我需要得到的是比例最高的名字中的最大比例。例如,前 3 行占总访问次数的约 73%,与前 3 行的总和相比,其他行可以忽略不计。
我知道我可以使用 nlargest 选择前 3 个:
df.nlargest(3, 'percent')
但数据的可变性很大,最大的比例可能是前 2 或 3 行甚至更多。
编辑:
如何自动找到总行数中 % 的最大 (N) 比例?
【问题讨论】:
标签: python-3.x pandas dataframe numpy