【问题标题】:whats wrong with the graph图表有什么问题
【发布时间】:2021-05-01 13:38:03
【问题描述】:

请看看我的代码有什么问题 所以这是我的代码:

import pandas as pd
import matplotlib.pyplot as plt
di = pd.read_csv("iris.csv")
fig = plt.figure()
ax = fig.add_axes([0,0,1,1])
sl=list(datainput['sepal_length'])
sw=list(datainput['sepal_width'])
c=['sepal_length','sepal_width']
sl=0
sw=0
plt.ylabel("Number")
plt.show()

【问题讨论】:

  • 这里有一个提示(您实际上并不需要):rgn1=list(datainput['Allegany']); rgn1s = len(rng1)
  • 这是您真正需要的提示:pd.read_csv("MD_COVID-19.csv").count().plot.bar()
  • 如果您需要更具体的帮助,您需要使您的示例可重现:stackoverflow.com/questions/20109391/…(目前,没有人可以创建您的数据框)
  • 我可以知道我的方法有什么问题吗??
  • 您发布了一个屏幕截图。你希望我自己打出来吗?请按照我提供的链接中的建议提供数据

标签: python pandas matplotlib data-science bar-chart


【解决方案1】:

很难重现,但我认为问题在于缺失数据中的 nan(不是数字)。

如果你有这样的 df:

data = [[1,2,3,4],[3,4,5,6],[np.nan,1,2,4]]
df = pd.DataFrame(np.array(data).transpose())

并创建一个包含总和的列表(就像您正在做的那样):

最后一项是 nan 数据:

[10.0, 18.0, nan]

matplotlib 不会绘制它:

可能的解决方案:

尝试像这样修改你的行,这样你的列表中就不会有 nan 数据:

rgn1=list(datainput['Allegany'].dropna())

或者你可以像这样简化你的代码:

tc =  datainput.sum().values

在最后一行代码中,pandas df 将对所有列进行求和并处理缺失的数据。

【讨论】:

    【解决方案2】:

    我使用不同的 csv 文件测试了您的代码,其中所有列的长度相同,并且绘制了正确数量的条形图。我怀疑这是问题的根源,因为您的数据中只有 3 个完整的列。此外,您的代码的第 15 到 43 行(所有 for 循环和追加语句)可以用一行替换:

    tc = [sum(rgn1), sum(rgn2), sum(rgn3), sum(rgn4), sum(rgn5), sum(rgn6), sum(rgn7)]
    

    【讨论】:

    • 这个问题是列名与构建列表时使用的字符串不匹配
    猜你喜欢
    • 2015-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-21
    • 1970-01-01
    相关资源
    最近更新 更多