使用 csv 文件作为输入在 python 中绘制直方图

Posted

技术标签:

【中文标题】使用 csv 文件作为输入在 python 中绘制直方图【英文标题】:plot histogram in python using csv file as input 【发布时间】:2015-08-21 21:21:13 【问题描述】:

我有一个 csv 文件,其中包含两列,其中第一列是水果名称,第二列是计数,我需要使用这个 csv 作为下面代码的输入来绘制直方图。我怎样才能使它成为可能。我只需要显示前 20 个条目,其中水果名称将是 x 轴,计数将是 100 行的整个 csv 文件的 y 轴。

import matplotlib.pyplot as plt
import pandas as pd

data = pd.read_csv('data.csv', header = None ,quoting=2)

data.hist(bins=10)
plt.xlim([0,100])
plt.ylim([50,500])
plt.title("Data")
plt.xlabel("fruits")
plt.ylabel("Frequency")
plt.show()

我编辑了上面的程序来绘制一个条形图-

import matplotlib.pyplot as plt
import pandas as pd

data = pd.read_csv('data.csv', sep=',',header=None)
data.values
print data
plt.bar(data[:,0], data[:,1], color='g')
plt.ylabel('Frequency')
plt.xlabel('Words')
plt.title('Title')

plt.show()

但这给了我一个错误'Unhashable Type'。任何人都可以帮助解决这个问题。

【问题讨论】:

你能举一个你的csv文件的例子吗? 您想绘制条形图而不是直方图。您不能将分类数据作为 x 轴放在直方图上。 您实际上从未将数据传递给绘图。请参阅此处的示例:bespokeblog.wordpress.com/2011/07/11/… 和此处:people.duke.edu/~ccc14/pcfb/numpympl/MatplotlibBarPlots.html Sarit 提出了一个很好的观点。您是否正在查看不同类型水果的计数?那是一个条形图。直方图是针对一组可枚举值的计数图,例如您的样本人群每天吃的水果数量 - 这么多人吃 1 块,这么多 2 块,这么多 3 块,等等。 是的,实际上是条形图 【参考方案1】:

你可以使用pandas的内置绘图,虽然你需要指定第一列是索引,

import matplotlib.pyplot as plt
import pandas as pd

data = pd.read_csv('data.csv', sep=',',header=None, index_col =0)

data.plot(kind='bar')
plt.ylabel('Frequency')
plt.xlabel('Words')
plt.title('Title')

plt.show()

如果您需要使用matplotlib,使用data.to_dict()将数组转换为字典并将数据提取到numpy数组或其他东西可能更容易。

【讨论】:

以上是关于使用 csv 文件作为输入在 python 中绘制直方图的主要内容,如果未能解决你的问题,请参考以下文章

使用 python 解析 CSV 文件并转换为 Pandas Dataframe 以绘制 Django 模板

如何按范围对csv文件中的列进行分组并使用python绘制直方图?

使用 Python 将 XML 转换为 CSV

如何使用 csv 文件的列名作为输入选择?

python 获取从了解CPRI格式的示波器转储的文件作为输入。文件应为csv,每行具有时间和数据值

Dygraphs,逗号作为小数分隔符