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

如何用Python从行式结构CSV文件绘制三类柱状图?

解决行类别CSV的独立柱状图绘制问题

嘿,这个问题其实挺常见的——你的CSV是行代表指标类别(TotalCases、Deaths、Recovered),而多数可视化工具默认期望列对应类别,核心解决方案就是先把数据做适配处理,不需要大改结构就能生成独立柱状图。我用Python的pandas+matplotlib给你演示最通用的实现步骤:

步骤1:读取并预处理CSV数据

首先要把带千分位逗号的字符串转成数值,同时处理N/A为可识别的缺失值:

import pandas as pd
import matplotlib.pyplot as plt

# 读取CSV,将第一列(行标题)设为索引,第一行设为列名(国家)
df = pd.read_csv('your_data.csv', index_col=0)

# 清理数据:移除千分位逗号,转成数值类型;N/A转为NaN
df = df.apply(lambda col: pd.to_numeric(col.str.replace(',', ''), errors='coerce'))

步骤2:遍历每个指标生成独立柱状图

因为你的行就是需要单独可视化的指标,直接遍历每一行即可生成对应图表:

# 循环每个指标(TotalCases/Deaths/Recovered)
for indicator in df.index:
    # 获取当前指标下所有国家的数值
    country_data = df.loc[indicator]
    
    # 创建新的绘图窗口,避免图表重叠
    plt.figure(figsize=(8, 5))
    
    # 绘制柱状图,给每个国家分配不同颜色
    country_data.plot(kind='bar', color=['#1f77b4', '#ff7f0e', '#2ca02c'])
    
    # 设置图表标题和标签
    plt.title(f'COVID-19 {indicator} by Country', fontsize=14)
    plt.xlabel('Country', fontsize=12)
    plt.ylabel(indicator, fontsize=12)
    
    # 在柱子上方添加数值标签(跳过缺失值)
    for idx, value in enumerate(country_data):
        if not pd.isna(value):
            plt.text(idx, value + value*0.02, f'{int(value):,}', ha='center')
    
    # 调整布局防止标签被截断
    plt.tight_layout()
    
    # 保存图表或直接显示
    plt.savefig(f'{indicator}_bar_chart.png')
    plt.show()

如果你用Excel的快速方案

要是不想写代码,Excel里也能轻松搞定:

  • 选中所有数据(包括表头和行标题),复制
  • 右键空白单元格,选择选择性粘贴 → 勾选转置,这样行就变成列
  • 分别选中转置后的每个指标列(比如TotalCases列),插入柱状图即可

这样不管是代码还是Excel,都能完美适配你的行类别CSV结构,生成每个指标的独立柱状图~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 07:25:41