[Python] Calender Heatmap [Plotly] Memo

Aperçu

la mise en oeuvre

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_première génération
            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',
                                )
                
                #Insérer un espace entre les cellules
                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('Échec de la génération de calmap.')

def _calender_heatmap_df(df,column_name,aggr='sum'):
    heatmap_df_lst =[]
    
    #Régénération 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'}
    
    #Expansion des données
    for year in data.index.year.unique():
        #génération de heatmap
        heatmap_df = data.loc[data.index.year == year,:].pivot_table(index='weekday',columns='week',values=column_name)
        
        #Triez les jours dans l'ordre lundi → dimanche
        heatmap_df = heatmap_df.rename(index=weekday_dic)
        
        #Générer la date df
        date_df = data.loc[data.index.year == year,:].pivot(index='weekday',columns='week',values='date')
        date_df = date_df.rename(index=weekday_dic)
        
        #Ajouter df à la liste
        heatmap_df_lst.append([heatmap_df,np.array(date_df)])
        
    return heatmap_df_lst

Courir


gen_calmap(df=data,column_name_lst=['Énergie électrique[kWh]','Quantité de gaz[m3]'],aggr='sum')

résultat

plotly_calmap.gif

Résumé

Recommended Posts

[Python] Calender Heatmap [Plotly] Memo
Qu'est-ce que python
Qu'est-ce que Python
[Python] Qu'est-ce que Pipeline ...
[Python] Qu'est-ce que virtualenv
[Python] Python et sécurité-① Qu'est-ce que Python?
Mémo récapitulatif des types de données Python
[Python] * args ** Qu'est-ce que kwrgs?
Cours de base Python (1 Qu'est-ce que Python)
[Python] Qu'est-ce qu'une fonction zip?
[Python] Qu'est-ce qu'une instruction with?
[Python] Qu'est-ce que @? (À propos des décorateurs)
[python] Quelle est la clé triée?
Python pour la déclaration ~ Qu'est-ce qui est itérable ~
À quoi sert le trait de soulignement Python (_)?
Python> Qu'est-ce qu'une tranche étendue?
[Python] Qu'est-ce que la série pandas et DataFrame?
[Python] Qu'est-ce qui est hérité par l'héritage multiple?
Qu'est-ce que NaN? NaN Zoya (Python) (394 jours de retard)
Quel type de langage de programmation est Python?
Un mémo python utilisant perl --format est pratique.
Qu'est-ce que "mahjong" dans la bibliothèque Python? ??
Structure et fonctionnement des données Python (mémo d'apprentissage Python ③)
Qu'est-ce qu'un chien? Volume d'installation Python
[Python] Mémo de prétraitement complet tel quel
Mémo Python
mémo python
Mémo Python
mémo python
Mémo Python
Mémo Python
Qu'est-ce qu'un algorithme? Introduction à l'algorithme de recherche] ~ Python ~
Qu'est-ce que la «programmation fonctionnelle» et «orientée objet»? Édition Python
Qu'est-ce que wheezy dans l'image Docker Python?
J'ai essayé Python! ] Diplômé aujourd'hui de "Tout le monde Python! Qu'est-ce que Python!"!
[Python] Mémo de conversion entre les données temporelles et les données numériques
Que comparez-vous avec Python et ==?
[Introduction à l'application Udemy Python3 +] 54. Qu'est-ce que Docstrings?
Dites-moi ce qu'est une cartographie équiangulaire, Python!