У меня есть dataframe df1HeatMap визуализация
df1.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 38840 entries, 0 to 38839
Data columns (total 7 columns):
TIMESTAMP 38840 non-null datetime64[ns]
ACT_TIME_AERATEUR_1_F1 38696 non-null float64
ACT_TIME_AERATEUR_1_F3 38697 non-null float64
ACT_TIME_AERATEUR_1_F5 38695 non-null float64
ACT_TIME_AERATEUR_1_F6 38695 non-null float64
ACT_TIME_AERATEUR_1_F7 38693 non-null float64
ACT_TIME_AERATEUR_1_F8 38696 non-null float64
dtypes: datetime64[ns](1), float64(6)
memory usage: 2.1 MB
который выглядит следующим образом:
TIMESTAMP ACT_TIME_AERATEUR_1_F1 ACT_TIME_AERATEUR_1_F3 ACT_TIME_AERATEUR_1_F5 ACT_TIME_AERATEUR_1_F6 ACT_TIME_AERATEUR_1_F7
ACT_TIME_AERATEUR_1_F8
2015-08-01 05:10:00 100 100 100 100 100 100
2015-08-01 05:20:00 100 100 100 100 100 100
2015-08-01 05:30:00 100 100 100 100 100 100
2015-08-01 05:40:00 100 100 100 100 100 100
Я пытаюсь создать Heatmap с Сиборн для визуализации данных, которые находятся между двумя даты (например, здесь между '2015-08-01 23:10:00' и '2015-08-02 2:00:00'): я так:
df1['TIMESTAMP']= pd.to_datetime(df_no_missing['TIMESTAMP'], '%d-%m-%y %H:%M:%S')
df1['date'] = df_no_missing['TIMESTAMP'].dt.date
df1['time'] = df_no_missing['TIMESTAMP'].dt.time
date_debut = pd.to_datetime('2015-08-01 23:10:00')
date_fin = pd.to_datetime('2015-08-02 02:00:00')
df1 = df1[(df1['TIMESTAMP'] >= date_debut) & (df1['TIMESTAMP'] < date_fin)]
sns.heatmap(df1.iloc[:,1:6:],annot=True, linewidths=.5)
Я получил Heatmap как в прилагаемом
Мой вопрос теперь, как я могу заменить число в левой части карты Heatmap (145 ... 161) их соответствующими значениями временной метки (2015 -08-01 5:10:00, 5:20:00 2015-08-01, 2015-08-01 5:30:00, ...)
Спасибо
BESTS
Я стараюсь вносить изменения:
df1.set_index("TIMESTAMP", inplace=1)
sns.heatmap(df1.iloc[:, 1:6:], annot=True, linewidths=.5)
ax = plt.gca()
ax.set_yticklabels([i.strftime("%Y-%m-%d %H:%M:%S") for i in df1.TIMESTAMP], rotation=0)
EDIT
Но я получаю ошибку и предупреждение:
C:\Users\Demonstrator\Anaconda3\lib\site-packages\ipykernel\__main__.py:2:
SettingWithCopyWarning: Значение пытается установить на копию кусочка из DataFrame. Попробуйте использовать .loc [row_indexer, col_indexer] = значение вместо
See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy from ipykernel import kernelapp as app C:\Users\Demonstrator\Anaconda3\lib\site-packages\ipykernel\__main__.py:3:
SettingWithCopyWarning: Значение пытается установить на копию кусочка из DataFrame. Попробуйте использовать .loc [row_indexer, col_indexer] = значение вместо
See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy app.launch_new_instance() C:\Users\Demonstrator\Anaconda3\lib\site-packages\ipykernel\__main__.py:4:
SettingWithCopyWarning: Значение пытается установить на копию кусочка из DataFrame. Попробуйте использовать.LOC [row_indexer, col_indexer] = значение вместо
See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy --------------------------------------------------------------------------- ValueError Traceback (most recent call last) <ipython-input-129-cec498d88cac> in <module>() 9 10 #sns.heatmap(df1.iloc[:,1:6:],annot=True, linewidths=.5) ---> 11 sns.heatmap(df1.iloc[:, 1:6:], annot=True, linewidths=.5) 12 ax = plt.gca() 13 ax.set_yticklabels([i.strftime("%Y-%m-%d %H:%M:%S") for i in df1.TIMESTAMP], rotation=0) C:\Users\Demonstrator\Anaconda3\lib\site-packages\seaborn\matrix.py in
Heatmap (данные, Vmin, Vmax, CMAP, центр, прочный, ANNOT, FMT, annot_kws, ширины линий, LineColor, CBAR, cbar_kws, cbar_ax, квадрат, ах , xticklabels, yticklabels, маска, ** kwargs) 483 плоттер = _HeatMapper (данные, Vmin, Vmax, CMAP, центр, прочный, ANNOT, FMT, 484 annot_kws, CBAR, cbar_kws, xticklabels, -> 485 yticklabels , маска) 487 # Добавить pcolormesh kwargs здесь
C:\Users\Demonstrator\Anaconda3\lib\site-packages\seaborn\matrix.py in
INIT (самостоятельно, данные, Vmin, Vmax, CMAP, центр, надежная, ANNOT, FMT, annot_kws, CBAR, cbar_kws, xticklabels, yticklabels, маска) 165 # Определить хорошие значения по умолчанию для преобразования цвета 166 самостоятельно ._determine_cmap_params (plot_data, Vmin, Vmax, -> 167 CMAP, центр, надежный) 169 # Разобраться аннотациями
C:\Users\Demonstrator\Anaconda3\lib\site-packages\seaborn\matrix.py in
_determine_cmap_params (самость, plot_data, Vmin, Vmax, CMAP, центр, надежный) 204 calc_data = plot_data.data [~ np.i snan (plot_data.data)] 205 Если vmin is None: -> 206 vmin = np.percentile (calc_data, 2), если надежный else calc_data.min() 207, если vmax is None: 208 vmax = np. процентиля (calc_data, 98), если другое надежный calc_data.max()
C:\Users\Demonstrator\Anaconda3\lib\site-packages\numpy\core\_methods.py
в _amin (а, по оси, из, keepdims) 28 защиту _amin (а, ось = None, из = нет, keepdims = False): ---> 29 return umr_minimum (a, axis, None, out, keepdims) 31 def _sum (a, axis = None, dtype = None, out = None, keepdims = False):
ValueError: zero-size array to reduction operation minimum which has no identity
@jeanrjc, посмотрите на последнее изображение, есть проблема: изображение слишком мало, и есть две вертикальные линии (шкала) справа. Я надеюсь, что теперь ясно i'am
спасибо за ваш ответ. Я редактирую свой пост, чтобы больше объяснить проблему – Bio
@Bio либо вы делаете 'df1.set_index (« TIMESTAMP », inplace = 1)' или вы делаете трюк с помощью 'ax.set_yticklabels (...)', а не оба! – jrjc
это работает !! Большое спасибо – Bio