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

基于Pandas绘制DataFrame首行与各Case概率序列可视化图表的技术咨询

为每个Case生成独立的概率趋势图表

嘿,咱们来搞定你这个需求!要给DataFrame里的每个case单独画可视化图表,X轴是10到500步长10的序列,Y轴对应每个case在prob-10、prob-20…这些列的取值,对吧?下面我给你一步步拆解实现:

1. 先导入必要的工具库

import pandas as pd
import matplotlib.pyplot as plt

2. 构造/读取你的DataFrame

先模拟你的数据结构(如果是从文件读的,直接用pd.read_csv就行,后面会说怎么处理逗号小数):

# 模拟你的数据
data = {
    'cases': ['case1', 'case2', 'case3'],
    'year': [2018, 2017, 2019],
    'HH': [200, 299, 200],
    'prob-10': ['0,35', '0,33', '0,45'],
    'prob-20': ['0,24', '0,25', '0,22'],
    'prob-30': ['0,44', '0,33', '0,33']
    # 这里可以继续补充到prob-500的列
}
df = pd.DataFrame(data)

3. 预处理:把逗号小数转换成浮点数

Pandas默认认点作为小数点,所以得先把所有prob-开头列里的逗号换成点,再转成数值类型:

# 筛选所有prob开头的列
prob_columns = [col for col in df.columns if col.startswith('prob-')]

# 替换逗号为点,转成float
df[prob_columns] = df[prob_columns].replace(',', '.', regex=True).astype(float)

# 如果你是从CSV读数据,可以直接在读取时指定小数分隔符,省掉这一步:
# df = pd.read_csv('your_data_file.csv', decimal=',')

4. 生成X轴的数值序列

X轴是10到500步长10,刚好对应prob-后面的数字:

# 生成10、20、…、500的序列
x_axis = range(10, 501, 10)

# 要是你的prob列不全(比如只有到prob-30),可以从列名里提取X值,更灵活:
# x_axis = [int(col.split('-')[1]) for col in prob_columns]

5. 遍历每个Case,绘制独立图表

循环每一行,给每个case单独创建图表,还能自动保存到本地:

for _, row in df.iterrows():
    case_name = row['cases']
    # 获取当前case的所有prob值
    y_values = row[prob_columns].values
    
    # 创建新的画布,避免图表重叠
    plt.figure(figsize=(8, 5))
    
    # 绘制折线图(换成plt.bar就是柱状图,按需调整)
    plt.plot(x_axis, y_values, marker='o', linewidth=2, label=case_name)
    
    # 给图表加标签和标题,更清晰
    plt.title(f'Probability Trend - {case_name}', fontsize=12)
    plt.xlabel('Probability Threshold', fontsize=10)
    plt.ylabel('Probability Value', fontsize=10)
    plt.grid(alpha=0.3)
    plt.legend()
    
    # 保存图表到本地,文件名对应case名
    plt.savefig(f'{case_name}_prob_trend.png', bbox_inches='tight')
    # 显示图表
    plt.show()

小提示:

  • 如果你想要柱状图,把plt.plot改成plt.bar就行,其他代码不用动。
  • 要是需要调整图表样式(比如颜色、标记形状),直接在plt.plot里加参数就行,比如color='red'、marker='s'。
  • 如果你的prob列数量和x_axis长度不匹配,记得检查列名是不是严格按照prob-10、prob-20…的格式来的,或者用上面注释里的方法从列名提取X值,适配性更强。

这样每个case都会生成一个独立的图表,标题和文件名都对应case名称,一目了然~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 15:42:44