You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何对DataFrame提取前缀、分组统计数量并实现可视化?

问题描述

现有一个名为data_frame的大型DataFrame,包含PRE和STATUS两列,数据示例如下:

PRE         STATUS
1_752566    GAINED
1_776546    LOST
1_832918    NA
1_842013    LOST
1_846864    GAINED
11_8122943  NA
11_8188699  GAINED
11_8321128  NA
23_95137734 NA
23_95146814 GAINED

需完成以下操作:

  • 新增CHR列,提取PRE列每个值下划线前的数字并与原数据对应
  • 按CHR列的数字分组,统计每组的行数,生成包含NUM和SUM的新数据表
  • 绘制可视化图表,以NUM为X轴、SUM为Y轴展示每组的统计结果

解决方案

1. 新增CHR列

利用pandas的字符串拆分方法提取下划线前的部分,转为整数类型:

import pandas as pd

# 提取CHR列
data_frame['CHR'] = data_frame['PRE'].str.split('_').str[0].astype(int)

处理后的数据示例:

PRE         STATUS   CHR
1_752566    GAINED   1
1_776546    LOST     1
1_832918    NA       1
1_842013    LOST     1
1_846864    GAINED   1
11_8122943  NA       11
11_8188699  GAINED   11
11_8321128  NA       11
23_95137734 NA       23
23_95146814 GAINED   23

2. 分组统计行数

按CHR分组后统计每组行数,并重命名列名以匹配需求:

# 分组统计行数
summary_df = data_frame.groupby('CHR').size().reset_index(name='SUM')
summary_df = summary_df.rename(columns={'CHR': 'NUM'})

生成的统计数据表:

NUM  SUM
1    5
11   3
23   2

3. 绘制可视化图表

使用matplotlib或seaborn绘制柱状图展示统计结果:

方法1:matplotlib基础柱状图

import matplotlib.pyplot as plt

plt.figure(figsize=(8, 5))
plt.bar(summary_df['NUM'].astype(str), summary_df['SUM'], color='#1f77b4')
plt.xlabel('NUM')
plt.ylabel('SUM')
plt.title('每组数据行数统计')
plt.tight_layout()
plt.show()

方法2:seaborn美化版柱状图

import seaborn as sns

plt.figure(figsize=(8, 5))
sns.barplot(x='NUM', y='SUM', data=summary_df, palette='viridis')
plt.xlabel('NUM')
plt.ylabel('SUM')
plt.title('每组数据行数统计')
plt.tight_layout()
plt.show()

内容的提问来源于stack exchange,提问作者user11924976

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 15:40:21