web-dev-qa-db-fra.com

Calculer les statistiques récapitulatives des colonnes dans le cadre de données

J'ai un dataframe de la forme suivante (par exemple)

shopper_num,is_martian,number_of_items,count_pineapples,birth_country,tranpsortation_method
1,FALSE,0,0,MX,
2,FALSE,1,0,MX,
3,FALSE,0,0,MX,
4,FALSE,22,0,MX,
5,FALSE,0,0,MX,
6,FALSE,0,0,MX,
7,FALSE,5,0,MX,
8,FALSE,0,0,MX,
9,FALSE,4,0,MX,
10,FALSE,2,0,MX,
11,FALSE,0,0,MX,
12,FALSE,13,0,MX,
13,FALSE,0,0,CA,
14,FALSE,0,0,US,

Comment utiliser Pandas pour calculer les statistiques récapitulatives de chaque colonne (les types de données de colonne sont variables, certaines colonnes ne contiennent aucune information)

Et retournez ensuite le dataframe du formulaire:

columnname, max, min, median,

is_martian, NA, NA, FALSE

Et ainsi de suite

40
Tyler Wood

describe peut vous donner tout ce que vous voulez, sinon vous pouvez effectuer des agrégations en utilisant groupby et passer une liste de fonctions agg: http://pandas.pydata.org/pandas- docs/stable/groupby.html # application-plusieurs-fonctions-à-une fois

In [43]:

df.describe()

Out[43]:

       shopper_num is_martian  number_of_items  count_pineapples
count      14.0000         14        14.000000                14
mean        7.5000          0         3.357143                 0
std         4.1833          0         6.452276                 0
min         1.0000      False         0.000000                 0
25%         4.2500          0         0.000000                 0
50%         7.5000          0         0.000000                 0
75%        10.7500          0         3.500000                 0
max        14.0000      False        22.000000                 0

[8 rows x 4 columns]

Notez que certaines colonnes ne peuvent pas être résumées car il n’existe aucun moyen logique de les résumer, par exemple les colonnes contenant des données de chaîne.

Comme vous préférez, vous pouvez transposer le résultat si vous préférez:

In [47]:

df.describe().transpose()

Out[47]:

                 count      mean       std    min   25%  50%    75%    max
shopper_num         14       7.5    4.1833      1  4.25  7.5  10.75     14
is_martian          14         0         0  False     0    0      0  False
number_of_items     14  3.357143  6.452276      0     0    0    3.5     22
count_pineapples    14         0         0      0     0    0      0      0

[4 rows x 8 columns]
73
EdChum

Maintenant, il y a le package pandas_profiling , qui est une alternative plus complète à df.describe().

Si votre image pandas est df, le texte ci-dessous renverra une analyse complète comprenant des avertissements concernant les valeurs manquantes, l'asymétrie, etc.). Il présente également des histogrammes et des diagrammes de corrélation.

import pandas_profiling
pandas_profiling.ProfileReport(df)

Voir le exemple cahier détaillant l'utilisation.

15
akilat90

Pour clarifier un point de la réponse de @ EdChum, selon la documentation, vous pouvez inclure les colonnes d'objet à l'aide de df.describe(include='all'). Il ne fournira pas beaucoup de statistiques, mais quelques informations, notamment le nombre, le nombre de valeurs uniques et la valeur maximale. Cela peut être une nouvelle fonctionnalité, je ne le sais pas car je suis un utilisateur relativement nouveau.

3
Ken Wallace