我有一个包含25列和90行的csv文件。第一列是日期格式,例如它显示为01-10-2014。其余列包含与这些日期对应的数字。第一行是每列的名称。我的计划是编写一个代码,该代码接收了所有信息,并让我可以灵活地将任意两列相互映射为散点图。我到目前为止已复制了我的代码。
如果我从dtype中删除'weekly'和'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()
答案 0 :(得分:0)
我找到了一个可以解决上述问题的工作。这不是优雅,但做的工作。感谢大家的意见和帮助。以下是感兴趣的人的代码:
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()