2017-02-21 18 views
2

У меня есть код python, в котором я читаю файл csv с помощью pandas и храню дату и время в одном столбце Datetime. Теперь я хочу построить значение датчика по оси Y и по времени по оси x. Как я могу достичь этого? Мой код ниже:Как построить данные CSV с использованием myplotlib и pandas в python

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) 

Heres некоторые строки из набора данных:

     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

Убедитесь, что ваш столбец даты в формате даты и времени и использовать график функции() в 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

+0

, когда я запускаю программу она дает ** ValueError: не может преобразовать строку плавать: '2017/02/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