Maison > développement back-end > Tutoriel Python > Comment construire efficacement un DataFrame Pandas à partir d'un dictionnaire imbriqué avec un index hiérarchique ?

Comment construire efficacement un DataFrame Pandas à partir d'un dictionnaire imbriqué avec un index hiérarchique ?

DDD
Libérer: 2024-12-01 09:27:11
original
845 Les gens l'ont consulté

How to Efficiently Construct a Pandas DataFrame from a Nested Dictionary with a Hierarchical Index?

Construire un DataFrame Pandas à partir de dictionnaires imbriqués

Lorsque vous travaillez avec des dictionnaires imbriqués, il peut être difficile de convertir les données en un DataFrame Pandas dans d'une manière qui s'aligne sur la structure souhaitée. En particulier, extraire des données du niveau le plus profond du dictionnaire sous forme de séries peut s'avérer fastidieux.

Supposons que vous disposiez d'un dictionnaire structuré comme suit :

  • Niveau 1 : UserId (Long Integer)
  • Niveau 2 : Catégorie (Chaîne)
  • Niveau 3 : Assorti Attributs (floats, ints, etc.)

Le but est de construire un DataFrame avec un index hiérarchique en utilisant les données du troisième niveau du dictionnaire.

Utilisation un MultiIndex

Un Pandas MultiIndex est un moyen pratique de représenter des données hiérarchiques dans un DataFrame. Pour créer un MultiIndex à partir du dictionnaire imbriqué, remodelez les clés en tuples correspondant aux valeurs multi-index.

user_dict = {12: {'Category 1': {'att_1': 1, 'att_2': 'whatever'},
                  'Category 2': {'att_1': 23, 'att_2': 'another'}},
             15: {'Category 1': {'att_1': 10, 'att_2': 'foo'},
                  'Category 2': {'att_1': 30, 'att_2': 'bar'}}}

df = pd.DataFrame.from_dict({(i,j): user_dict[i][j] 
                           for i in user_dict.keys() 
                           for j in user_dict[i].keys()},
                       orient='index')
Copier après la connexion

Cette approche créera un DataFrame avec un index hiérarchique, où le premier niveau contient les UserIds et le deuxième niveau contient les catégories. Les données du troisième niveau sont désormais organisées en séries accessibles en utilisant à la fois le UserId et la Category comme index.

Approche alternative utilisant la concaténation

Une autre façon de construire le DataFrame est en concaténant les dataframes des composants.

user_ids = []
frames = []

for user_id, d in user_dict.iteritems():
    user_ids.append(user_id)
    frames.append(pd.DataFrame.from_dict(d, orient='index'))

df = pd.concat(frames, keys=user_ids)
Copier après la connexion

Cette méthode parcourt le dictionnaire, créant un DataFrame pour chaque combinaison user_id et catégorie. Les trames de données résultantes sont ensuite concaténées verticalement et jointes à l'aide de clés comme index hiérarchique.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal