2017-02-21 70 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