2017-07-26 5 views
0

Je suis assez nouveau pour Python et j'ai du mal à reproduire quelque chose qui est assez facile à faire dans un progiciel statistique standard tel que SAS et SPSS. Fondamentalement, j'essaie de calculer une table de fréquence sur une variable, "type", qui est catégorique mais stockée sous la forme d'un nombre entier allant de 1 à 5. Chacune de ces valeurs correspond à une catégorie distincte, par ex. 1 est Professional, 2 est Manager, etc. J'utilise la commande panda crosstab. Lorsque vous effectuez un tableau croisé pour obtenir le nombre de personnes appartenant à ma base de données appartenant à chaque catégorie, je souhaite que les en-têtes de colonne (ou de ligne) affichent l'étiquette, par ex. "Professionnel" au lieu de la valeur réelle, par ex. "1" pour faciliter l'interprétation.Comment afficher les étiquettes de valeur dans une table

J'ai essayé de créer un dictionnaire pour assigner chaque touche (par exemple mes valeurs 1-5) à chaque valeur (mes étiquettes), mais je ne peux pas savoir comment modifier la commande de tableau croisé pour choisir le dictionnaire Étiquettes. Je suis sûr qu'il doit y avoir un moyen facile de le faire! Merci pour toute aide

Répondre

0

Vous pouvez utiliser un dictionnaire pour changer les en-têtes de colonnes:

import pandas as pd 

# Dictionary mapping category numbers to titles 
category_map = {1: "Professional", 2: "Manager", 3: "Etc."} 

# Dummy dataframe 
df = pd.DataFrame({ 
    1: ["Hello", "mister", "professional"], 
    2: ["Hello", "mister", "manager"], 
    3: ["Who", "are", "you?"] 
}) 

# Dataframe before conversion 
print df 

# Replace category numbers with titles 
new_columns = [category_map[category_number] for category_number in list(df.columns)] 
df.columns = new_columns 

# Dataframe after conversion 
print df 

qui délivre en sortie:

   1  2  3 
0   Hello Hello Who 
1  mister mister are 
2 professional manager you? 

et:

Professional Manager Etc. 
0   Hello Hello Who 
1  mister mister are 
2 professional manager you?