2017-02-21 133 views
2

我有一个python代码,其中我使用熊猫读取csv文件并在一列中存储日期和时间日期时间。现在我想在y轴上绘制传感器值,在x轴上绘制数据时间。我怎样才能做到这一点?我的代码如下:如何使用myplotlib和熊猫在python中绘制CSV数据

import pandas as pd 
import datetime 
import csv 
import matplotlib.pyplot as plt 
import matplotlib.dates as mdates 
headers = ['Sensor Value','Date','Time'] 
df = pd.read_csv('C:/Users\Lala Rushan\Downloads\DataLog.CSV',parse_dates=  {"Datetime" : [1,2]},names=headers) 
print (df) 

继承人某些行从数据集:

     Datetime Sensor Value 
0  2017/02/17 19:06:17.188    2 
1  2017/02/17 19:06:22.360   72 
2  2017/02/17 19:06:27.348   72 
3  2017/02/17 19:06:32.482   72 
4  2017/02/17 19:06:37.515   74 
5  2017/02/17 19:06:42.580   70 
6  2017/02/17 19:06:47.660   72 

回答

4

确认日期栏是日期时间格式和使用plot()函数在matplotlib。你可以做类似于this的事情。这里x值是您的日期列,y值是传感器值。

import pandas as pd 
from datetime import datetime 
import csv 
import matplotlib.pyplot as plt 
import matplotlib.dates as mdates 
headers = ['Sensor Value','Date','Time'] 
df = pd.read_csv('C:/Users\Lala Rushan\Downloads\DataLog.CSV',names=headers) 
print (df) 

df['Date'] = df['Date'].map(lambda x: datetime.strptime(str(x), '%Y/%m/%d %H:%M:%S.%f')) 
x = df['Date'] 
y = df['Sensor Value'] 

# plot 
plt.plot(x,y) 
# beautify the x-labels 
plt.gcf().autofmt_xdate() 

plt.show() 

enter image description here

当我运行它给** ValueError异常程序
+0

:无法将字符串转换为float: '2017年2月17日19:49:27.550' **。我该如何解决这个问题? – rushan

+2

您的日期列不是日期时间格式。您可以在将值赋给x之前使用 - df ['Date'] = pd.to_datetime(df ['Date'],format ='%Y /%m /%d%H:%M:%S.%f )'' –

+0

感谢您的评论。现在它给了我错误:** ValueError:时间数据'2017/02/17 19:06:17.188'与指定的格式**不匹配。这里可能是什么问题?格式与从csv带来的格式相同。 – rushan