使用 Python 从 CSV 文件绘制多列



我有一个 csv 文件,有 25 列和 90 行。例如,第一列采用日期格式,显示为 01-10-2014。其余列包含与这些日期对应的数字。第一行是每列的名称。我的计划是编写一个代码,该代码可以吸收所有信息,并让我能够灵活地将任意两列相互绘制为散点 xy 图。我已经在下面复制了我的代码。

如果我从 dtype 中删除"每周"和"f8",代码工作正常。它在 X 轴上绘制日期,在 Y 轴上绘制第一列"每日"。我假设我可以像"每周"一样添加其他列,如下所示。但是,我收到错误:

Traceback (most recent call last):
  File "plot_dataset_second.py", line 10, in <module>
    Date = [DT.datetime.strptime(key,"%d-%m-%Y") for (key, value) in data]
ValueError: too many values to unpack

示例数据:

Date    Daily Installs  Weekly Installs Mean Install Duration
01-10-14    153 153 47.71
02-10-14    630 783 51.9
03-10-14    50  833 49.94
04-10-14    973 1805    51.43

import numpy as np
import matplotlib.pyplot as plt
import datetime as DT
data= np.genfromtxt('dataset1_changed.csv', delimiter=',',
    dtype={'names': ('Date', 'daily', 'weekly'),'formats': ('S10', 'f8', 'f8')} )

Date = [DT.datetime.strptime(key,"%d-%m-%Y") for (key, value) in data]
daily = [value for (key, value) in data]
weekly = [value for (key, value) in data]
#y = [value for (key, value) in data]
fig = plt.figure()
ax = fig.add_subplot(111)
ax.grid()
fig.autofmt_xdate()
plt.plot(Date,daily,'b--o--')
plt.xlabel('Date')
plt.ylabel('Daily Count')
plt.title('Daily Count since February')
plt.show()

我能够找到一种适用于我自己上述问题的解决方法。它不优雅,但可以完成工作。感谢大家的评论和帮助。以下是任何感兴趣的人的代码:

import csv
import datetime as dt
import matplotlib.pyplot as plt

Date,Daily_Installs,Weekly_Installs = [],[],[]
csv_reader = csv.reader(open('dataset1_changed.csv', 'rU'))
for line in csv_reader:
    Date.append(dt.datetime.strptime(line[0],'%d-%m-%Y'))
    Daily_Installs.append(int(line[1]))
    Weekly_Installs.append(int(line[2]))
fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot(Date,Daily_Installs,'o-')
fig.autofmt_xdate()
plt.show()

相关内容

  • 没有找到相关文章

最新更新