我的csv文件看起来像
> 01.04.2016;08:39:09;527;61;42;203;20;211
> 02.04.2016;08:43:03;527;51;82;323;80;161
> 03.04.2016;08:43:20;527;61;82;203;20;101
我想将colomns 3到8与colomn 1进行比较。所以最后,图表应显示相对于日期绘制的6行。
我使用以下命令读取csv文件
PlotList = np.loadtxt('myfile.csv',unpack = True, delimiter =';', converters={ 0 : mdates.strpdate2num('%d.%m.%Y') , 1 : mdates.strpdate2num('%H:%M:%S')} )
我正在尝试使用plt.plot_date(PlotList[0],PlotList[1])
,但它没有给出欲望的结果。
如何根据日期绘制所有6个colomns?
编辑:我已在下面发布了代码(解决方案)
答案 0 :(得分:2)
快速回答,使用熊猫:
data = StringIO.StringIO('''date;time;a;b;c;d;e;f
01.04.2016;08:39:09;527;61;42;203;20;211
02.04.2016;08:43:03;527;51;82;323;80;161
03.04.2016;08:43:20;527;61;82;203;20;101''')
dataframe = pd.read_csv( data, sep=';', index_col=0, parse_dates=True)
dataframe.plot()
plt.gcf().set_size_inches(8,3)
plt.gcf().tight_layout()
答案 1 :(得分:0)
import csv
import datetime as dt
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
col_names = ["a","b","c","d","e","f"]
my_dict = {}
for item in range(0, 6):
my_dict[col_names[item]] = []
with open("myfile.csv","r") as f:
spamreader = csv.reader(f,delimiter=";")
for row in spamreader:
for col in range(2 , len(row)):
my_dict[col_names[col-2]].append([row[0],row[col]])
f.close()
for key, data_list in my_dict.items():
dates_str, values = zip(*data_list)
dates = [dt.datetime.strptime(d,'%d.%m.%Y').date() for d in dates_str]
plt.plot(dates, values, label=key)
plt.gca().xaxis.set_major_formatter(mdates.DateFormatter('%d.%m.%Y'))
plt.gca().xaxis.set_major_locator(mdates.AutoDateLocator())
plt.gcf().autofmt_xdate()