【Python】 에너지 데이터를 왠지 CalenderHeatmap 【Plotly】 메모
개요
calmap 하지만, pandas1.0 이상에 대응하고 있지 않는 것 같다. (ix를 사용하고 있습니까?)
구현
gen_calmap
def gen_calmap(df,column_name_lst,aggr='sum',height= 260,width = 900):
try:
for column_name in column_name_lst:
# heatmap_df_lst生成
heatmap_df_lst = _calender_heatmap_df(df,column_name,aggr)
for heatmap_df in heatmap_df_lst:
fig = px.imshow(heatmap_df[0],
x=heatmap_df[0].columns.unique(),
y=heatmap_df[0].index.unique(),
labels={'y':'Weekday','x':'Week','color':column_name},
width=width,
height=height,
aspect='auto',
)
# セル間に隙間を入れる
fig.data[0]['ygap']=1
fig.data[0]['xgap']=1
fig.update_traces(
text = heatmap_df[1],
hovertemplate="Date: %{text} <br>Week: %{x} <br>Weekday: %{y} <br> "+ column_name +": %{z}"
)
fig.show()
except:
print('calmapの生成に失敗しました。')
def _calender_heatmap_df(df,column_name,aggr='sum'):
heatmap_df_lst =[]
# DataFrame再生成
data = pd.DataFrame(eval("df[column_name].resample('D').{}()".format(aggr)))
data.index = pd.to_datetime(data.index)
## add data
data['week'] = pd.to_datetime(data.index).strftime('Week:%W')
data['weekday'] = pd.to_datetime(data.index).weekday
data['date'] = pd.to_datetime(data.index).strftime('%Y/%m/%d')
weekday_dic = {0:'Mon',1:'Tue',2:'Wed',3:'Thr',4:'Fri',5:'Sat',6:'Sun'}
# データの展開
for year in data.index.year.unique():
# heatmap生成
heatmap_df = data.loc[data.index.year == year,:].pivot_table(index='weekday',columns='week',values=column_name)
# 曜日を月曜日→日曜日の順番に並べ替える
heatmap_df = heatmap_df.rename(index=weekday_dic)
# 日付dfを生成
date_df = data.loc[data.index.year == year,:].pivot(index='weekday',columns='week',values='date')
date_df = date_df.rename(index=weekday_dic)
# dfをリストに加える
heatmap_df_lst.append([heatmap_df,np.array(date_df)])
return heatmap_df_lst
실행
gen_calmap(df=data,column_name_lst=['電力量[kWh]','ガス量[m3]'],aggr='sum')
결과
요약
Reference
이 문제에 관하여(【Python】 에너지 데이터를 왠지 CalenderHeatmap 【Plotly】 메모), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/snuow/items/4bca5a109d94b8a2c8ec텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)