2017-02-21 11 views
2

私はpandasを使用してcsvファイルを読み込んで1つの列に日付と時刻を格納するPythonコードを持っています日時。今私はy軸上のセンサー値とx軸上のデータ時間をプロットしたいと思います。どうすればこれを達成できますか?私のコードは以下の通りです:Pythonでmyplotlibとpandasを使用して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

あなたの日付列が日時形式で、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を与える:float型に文字列を変換できませんでした: '2017年2月17日19:49:27.550' **。どうすればこの問題を解決できますか? – rushan

+2

日付の列は日時形式ではありません。 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

関連する問題