2017-02-21 4 views
2

私はpandasデータフレームにcsvファイルを読み込むPythonプログラムを持っています。次に、datetimeを使ってセンサ値をクリーンな形式でプロットしたいと思います。私のコードはエラーValueError:時刻データ '2017/02/17'は '%Y /%m /%d%H:%M:%S%fの形式と一致しません。 マイコードとデータフレームから一部の行は以下の通りです:パンダを使用して日時をプロットする

コード:

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', parse_dates= {'Datetime': [1,2]},names=headers) 

    print (df) 

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

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

    plt.show() 

DATAFRAME:

     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 

がどのように私はこのエラーを解決することができますか?私はpythonにnewvieので、基本的な間違いを赦してください。

+0

あなたの日付が書式文字列と一致しないことを知らせるています。質問は、日付文字列が '' 2017/02/17 "'であることをエラーが示しているのですが、あなたの投稿データフレームは '' 2017/02/17 19:06:17.188 "'(カンマにもなりません)または類似。 –

+0

はい私は何を考えていますか?コードを動かすことができますか?私はPythonの初心者です。 – rushan

+0

'pandas'のdatetimeパーサを使用してください:' df ['Datetime'] = pd.to_datetime(df ['Datetime']) '代わりに' map'を使用して各行値を解析してください。フォーマットが一貫している場合は、フィールド全体を 'datetime'に解析する必要があります。 – Abdou

答えて

2

日付と時間を分割する必要はありません。以下のコードは私のためにうまくいきます。

import pandas as pd 
from datetime import datetime 
import csv 
import matplotlib.pyplot as plt 

df = pd.read_csv('test.txt') 
print (df) 

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

x = df['Datetime'] 
y = df['Sensor Value'] 

# plot 
plt.plot(x,y) 

# beautify the x-labels 
plt.gcf().autofmt_xdate() 
plt.show() 

enter image description here

+0

このコードは私のために同じエラーを返します。 ** read_csv **の違いは、日付と時刻を解析して1つの列にすることです。そこに問題があると思いますか? – rushan

+0

秒後の部分が表示されないようにコードを修正するにはどうすればいいですか?また、どうすれば分まで言うことができますか? – ilyas

関連する問題