繁体   English   中英

Python,在csv文件中绘制所有列与第一列(日期)的关系

[英]Python, plotting all columns vs the first column (date) in a csv file

我有看起来像的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

我想绘制第3列到第8列与第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个列与日期的关系?

编辑:我已经发布了下面的代码(解决方案)

快速解答,使用熊猫:

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()

这将产生以下图像: 在此处输入图片说明

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()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM