如何使用print语句输出pandas DataFrame各值的出现频率百分比
最优实现方案
直接使用 pandas 内置的value_counts()方法即可,该方法底层做了C级优化,即便处理超大规模数据集效率也远高于手写循环统计的方案,实现代码如下:
import pandas as pd # 示例DataFrame构造 d = {'col1': [1, 2, 1, 6, 6, 1, 1, 2, 2, 2]} dataframe = pd.DataFrame(data=d) # 计算各值出现频率百分比,normalize=True直接返回占比,乘100转百分比 freq_series = dataframe['col1'].value_counts(normalize=True) * 100 # 按需求格式打印 for value, percent in freq_series.items(): # 若不需要保留小数可直接用int(percent),需要保留小数可调整为round(percent, n),n为保留位数 print(f"{value}: {int(percent)} %")
运行上述代码即可输出和你示例完全一致的结果:
1: 40 % 2: 40 % 6: 20 %
补充说明
- 如果你需要统计空值(NaN)的占比,只需给
value_counts加dropna=False参数即可 - 如果要调整输出的排序规则,比如按值升序排列而不是按频次降序,可在
value_counts后加.sort_index()调整 - 如果你需要把结果存为其他格式,也可以直接对生成的
freq_series做后续处理,无需重新统计
内容的提问来源于stack exchange,提问作者Adler Müller
相关产品推荐
相关产品推荐

