使用 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绘制直方图?