График из df.pivot возвращает AttributeError при нацеливании индекса на ось x - PullRequest
0 голосов
/ 25 мая 2018

Отображение времени и температуры данных по зонам.Импорт 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

Все, кажется, работает нормально, однако мой столбец target_logtime, который я хочу использовать на оси x, кажется, исчезает:

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 Ответ

0 голосов
/ 26 мая 2018

Сводная таблица (dfpiv2) индексируется как target_logtime, поэтому возникла ошибка при попытке доступа к ней как к столбцу.Есть два способа получить доступ к этим значениям.

Reindex

Первый способ - сбросить индекс и переназначить его столбцу, используя 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 в качестве оси X при построении линейного графика с помощью графика (поскольку target_logtime снова существует)

Доступзначения индекса

Также можно избежать сброса индекса при графическом построении графика, задав для x значение index вместо имени нужного столбца:

x = dfpiv2.index
y1 = dfpiv2[5575]

Спасибо P.Tillmann иxg.plt.py за их комментарии.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...