pandas使用value_counts()仅返回单列,如何得到双列数据集用于matplotlib绘图
Pandas 频次统计结果转两列DataFrame方案
pandas.Series.value_counts()默认返回的是索引为唯一值、值为对应频次的Series对象,要转成两列结构化数据集可以直接用以下两种常用方案:
方案1:reset_index 快速转换
这是最简洁的写法,直接调用reset_index将索引转为常规列,再重命名列名即可:
# 生成两列DataFrame count_df = file['Column_1'].value_counts().reset_index() # 自定义列名,可根据需求修改 count_df.columns = ['分类值', '出现频次']
转换后输出结构示例:
| 分类值 | 出现频次 |
|---|---|
| apple | 3 |
| pear | 2 |
| orange | 1 |
| banana | 1 |
方案2:链式写法转换
适合需要在统计同时做排序、过滤等后续操作的场景:
count_df = ( file['Column_1'] .value_counts() .to_frame('出现频次') # 直接指定频次列的列名 .rename_axis('分类值') # 指定分类列的列名 .reset_index() # 可追加额外操作,比如按分类值排序:.sort_values('分类值') )
转换完成后可直接对接matplotlib绘图,示例:
import matplotlib.pyplot as plt plt.bar(count_df['分类值'], count_df['出现频次']) plt.xlabel('分类') plt.ylabel('出现次数') plt.show()
内容的提问来源于stack exchange,提问作者mondainai_777
相关产品推荐
相关产品推荐

