python - 为什么我不能正确使用 pandas.DataFrame.plot.bar()?
问题描述
这是我的数据框:
Month January February March April May June \
Year
2016 NaN NaN NaN NaN 97162.0 415627.0
2017 1016340.0 871166.0 910442.0 926362.0 1061573.0 1307325.0
2018 1815983.0 1839012.0 1943507.0 1870525.0 1753449.0 2103510.0
2019 3163752.0 2967114.0 2827649.0 2681053.0 2834637.0 2532198.0
Month July August September October November December
Year
2016 675071.0 962525.0 1244306.0 849348.0 1213459.0 862805.0
2017 2040012.0 1479086.0 1421304.0 1470600.0 1731047.0 1501038.0
2018 1971323.0 1947780.0 1978252.0 3118588.0 2360650.0 2481472.0
2019 2917097.0 2978802.0 2918065.0 2701650.0 2004330.0 301467.0
当我运行下面的代码时:
df.plot.bar(x = df.index, y = "January")
它给了我错误:
KeyError: "None of [Int64Index([2016, 2017, 2018, 2019], dtype='int64', name='Year')] are in the [columns]"
为什么会这样?
这些可能会帮助您回答问题: 输入:
print(df.columns)
print(df.index)
print(type(df.columns))
print(type(df.index))
输出:
Index(['January', 'February', 'March', 'April', 'May', 'June', 'July',
'August', 'September', 'October', 'November', 'December'],
dtype='object', name='Month')
Int64Index([2016, 2017, 2018, 2019], dtype='int64', name='Year')
<class 'pandas.core.indexes.base.Index'>
<class 'pandas.core.indexes.numeric.Int64Index'>
解决方案
您可以检查DataFrame.plot.bar
:
x -标签或位置,可选
允许绘制一列与另一列。如果未指定,则使用 DataFrame 的索引。
所以需要省略x = df.index
:
df.plot.bar(y = "January")
推荐阅读
- reactjs - React.js:未处理的拒绝(TypeError):无法读取未定义的属性“错误”
- javascript - UI 组件内的@Input 变量返回 null
- ios - 当我从网站启动应用程序时,我的分支 io 链接未在应用程序中打开
- ckeditor - CKEditor 5 - v 19.0.0 下划线功能不起作用
- github - 特定版本私有包的 NPM 依赖
- django - DRF:仅用于代表目的。如何组合两个序列化器
- c# - ITextSharp 在标题中添加徽标以及文本
- django-models - 无法将 django 模型对象传递给序列化程序
- android - 在设备上保存 pdf 文件
- verilog - verilog中的以下代码有什么问题?