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

使用Pandas绘制会计数据折线图报错:x must be a label or series

问题分析与解决方案

报错原因

转置后的DataFrame结构不符合你的绘图预期:

  • 原DataFrame的account列转置后变成了行索引,不再是列,因此调用x='account'会触发KeyError
  • 转置后的列名是原DataFrame的行号(0-6),而非会计科目名称

修正步骤

  1. 转置后,将第一行(原account列的内容)设置为新的列名
  2. 删除已作为列名的第一行数据
  3. 以月份索引(JAN/FEB)作为x轴,目标会计科目(如REVENUE)作为y轴绘图

修正后的代码

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

# 原始数据
data = {'account': ['ASSETS', 'LIABILITIES', 'REVENUE', 'COST OF SALES', 'MARKETING','GENERAL EXPENSES','NETT'],
        'JAN': [0, 7014, 39127, 35467, 22487, 3321, 22148.83],
        'FEB': [0, 2581.0, 34234, 19321, 14092, 3304, 2483.36],
       }
df = pd.DataFrame(data)

# 转置并调整结构
tb = df.T
# 将第一行(原account列)设为列名
tb.columns = tb.iloc[0]
# 删除已作为列名的第一行
tb = tb.drop('account')
# 重置索引为月份列,方便绘图时指定x轴
tb = tb.reset_index().rename(columns={'index': 'month'})

# 绘制折线图:x轴为月份,y轴为REVENUE
tb.plot(x='month', y='REVENUE', kind='line')
plt.title('REVENUE Trend by Month')
plt.show()

为什么GDP代码能正常运行?

GDP的代码未执行转置操作,country和gdp_per_capita都是DataFrame的直接列,指定x='country'和y='gdp_per_capita'完全符合Pandas绘图的参数要求,因此不会报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 02:32:53