bugfix> python > 投稿

ゾーン全体の時間と温度のデータをグラフ化します。 csvをインポートし、ピボットテーブルに再フォーマットして特徴的な列を作成します。

in: dfpiv2 = df.pivot(index = 'target_logtime', columns = 'valuekey', values = 'value') 
out: 
valuekey    5575    5579    5583    5587    5591    5599    5603    5607    5611    5615
target_logtime                                      
2016-02-01 00:00:00     22.87   21.87   19.68   18.18   10.43   19.93   18.93   19.00   19.18   19.62
2016-02-01 00:30:00     22.43   21.50   19.56   17.87   10.43   19.68   18.87   18.93   19.00   19.37
2016-02-01 01:00:00     22.18   21.25   19.43   17.62   10.43   19.50   18.81   18.87   18.81   19.12
2016-02-01 01:30:00     21.87   21.00   19.31   17.37   10.43   19.31   18.81   18.81   18.68   18.93
2016-02-01 02:00:00     21.68   20.75   19.18   17.18   10.37   19.12   18.75   18.75   18.50   18.75

すべて正常に動作しているようですが、x軸で使用したいtarget_logtime列が消えているようです:

in: dfpiv2.columns    
out: Int64Index([5575, 5579, 5583, 5587, 5591, 5599, 5603, 5607, 5611, 5615], dtype='int64', name='valuekey')

それが原因だと思う...

AttributeError: 'DataFrame' object has no attribute 'target_logtime'

私が使用している完全なコードは次のとおりです。

import pandas as pd
df = pd.read_csv('******.csv')
dfpiv2 = df.pivot(index = 'target_logtime', columns = 'valuekey', values = 'value') 
import plotly
plotly.tools.set_credentials_file(username='********', api_key='*******')
import plotly.plotly as py
import plotly.graph_objs as go
#import dataset

# define x and y
x = dfpiv2.target_logtime
y1 = dfpiv2[5575]
# create a trace
trace1 = go.Scatter(
    x = x,
    y = y1,
    mode = 'lines',
    name = '5575'
)
data = [trace1]
py.iplot(data, filename='basiclinetest')

助けてくれてありがとう!

回答 1 件
  • ピボットテーブル(dfpiv2)は target_logtime によってインデックス付けされています 、したがって、列としてアクセスしようとするとエラーが発生しました。これらの値にアクセスするには2つの方法があります。

    再インデックス

    最初の方法は、 dfpiv3 = dfpiv2.reset_index() を使用してインデックスをリセットし、列に再割り当てすることです 。

    次に、列をチェックするとき:

    In: dfpiv3.columns
    Out: Index(['target_logtime', 5575, 5579, 5583, 5587, 5591, 5599, 5603, 5607, 5611, 5615], dtype='object', name='valuekey')
    
    

    target_logtime の使用を許可します  plotlyを介して折れ線グラフをプロットするときのx軸として( target_logtime のため  再び存在する)

    インデックス値にアクセスする

    xを index に設定することにより、plotlyを介してグラフ化するときにインデックスのリセットを回避することも可能です。  目的の列名ではなく:

    x = dfpiv2.index
    y1 = dfpiv2[5575]
    
    

    P.Tillmannとxg.plt.pyのコメントに感謝します。

あなたの答え