如何将pandas列值计数结果转为含特征、计数两列的DataFrame
pandas统计单列值出现次数并转换为指定格式DataFrame方案
核心实现代码
你可以直接通过pandas原生链式操作完成转换,全程为向量化运算,适配超大数据量的批量处理需求:
import pandas as pd # 示例源数据 df_1 = pd.DataFrame({'id': ['001', '002', '003', '004', '005', '006', '007', '008'], 'color_value': ['blue', 'red', 'yellow', 'orange', 'blue','red', 'blue', 'orange']}) # 统计+格式转换一步完成 result_df = ( df_1['color_value'] .value_counts() # 统计各值出现次数 .reset_index(name='counts') # 将索引转为普通列,计数列命名为counts .rename(columns={'color_value': 'feature'}) # 重命名特征列 )
该方法全程调用pandas原生优化接口,无自定义遍历逻辑,即使是TB级体量的大数据场景也可正常运行,不需要手动调整格式,批量使用时仅需替换
color_value为目标统计列名即可。
输出结果示例
转换后的result_df完全符合你要求的格式:
| feature | counts |
|---|---|
| blue | 3 |
| orange | 2 |
| red | 2 |
| yellow | 1 |
后续绘图参考
可以直接基于转换后的结果绘制分布图表,示例如下:
import seaborn as sns import matplotlib.pyplot as plt plt.rcParams['font.sans-serif'] = ['SimHei'] # 解决中文显示问题 sns.barplot(data=result_df, x='feature', y='counts') plt.title('特征值计数分布') plt.show()
内容的提问来源于stack exchange,提问作者MAtennis9
相关产品推荐
相关产品推荐

