使用GroupByPandas(Python 3.5.1)描述函数

使用GroupByPandas(Python 3.5.1)描述函数,python,pandas,Python,Pandas,我想知道是否可以使用descripe函数按某列的不同值分组 例如,假设我有以下数据帧: import pandas as pd data = {'gender': ['male', 'female', 'female', 'male',' female'], 'name': ['Jason', 'Molly', 'Tina', 'Jake', 'Amy'], 'age': [42, 52, 36, 24, 73], 'preTestScore':

我想知道是否可以使用descripe函数按某列的不同值分组

例如,假设我有以下数据帧:

import pandas as pd
data = {'gender': ['male', 'female', 'female', 'male',' female'],
        'name': ['Jason', 'Molly', 'Tina', 'Jake', 'Amy'],
        'age': [42, 52, 36, 24, 73],
        'preTestScore': [4, 24, 31, 2, 3],
        'postTestScore': [25, 94, 57, 62, 70]}
df = pd.DataFrame(data, columns = ['gender', 'name', 'age', 'preTestScore', 'postTestScore'])
现在如果我使用descripe函数,我会得到整个数据框架的描述性统计数据

df.describe()
    age preTestScore    postTestScore
count   5.000000    5.000000    5.000000
mean    45.400000   12.800000   61.600000
std     18.460769   13.663821   24.905823
min     24.000000   2.000000    25.000000
25%     36.000000   3.000000    57.000000
50%     42.000000   4.000000    62.000000
75%     52.000000   24.000000   70.000000
max     73.000000   31.000000   94.000000

相反,如果我想按性别分组,并按性别获得描述性统计数据(因此可能有两个单独的输出),我如何才能做到这一点?

如果您想要两个单独的输出,您可以执行以下操作:

df[df.gender == 'male'].describe()
df[df.gender == 'female'].describe()

如果需要两个单独的输出,可以执行以下操作:

df[df.gender == 'male'].describe()
df[df.gender == 'female'].describe()

您可以使用groupby.description:

df.groupby('gender').describe()
Out: 
                    age  postTestScore  preTestScore
gender                                              
female count   3.000000       3.000000      3.000000
       mean   53.666667      73.666667     19.333333
       std    18.556221      18.770544     14.571662
       min    36.000000      57.000000      3.000000
       25%    44.000000      63.500000     13.500000
       50%    52.000000      70.000000     24.000000
       75%    62.500000      82.000000     27.500000
       max    73.000000      94.000000     31.000000
male   count   2.000000       2.000000      2.000000
       mean   33.000000      43.500000      3.000000
       std    12.727922      26.162951      1.414214
       min    24.000000      25.000000      2.000000
       25%    28.500000      34.250000      2.500000
       50%    33.000000      43.500000      3.000000
       75%    37.500000      52.750000      3.500000
       max    42.000000      62.000000      4.000000

您可以使用groupby.description:

df.groupby('gender').describe()
Out: 
                    age  postTestScore  preTestScore
gender                                              
female count   3.000000       3.000000      3.000000
       mean   53.666667      73.666667     19.333333
       std    18.556221      18.770544     14.571662
       min    36.000000      57.000000      3.000000
       25%    44.000000      63.500000     13.500000
       50%    52.000000      70.000000     24.000000
       75%    62.500000      82.000000     27.500000
       max    73.000000      94.000000     31.000000
male   count   2.000000       2.000000      2.000000
       mean   33.000000      43.500000      3.000000
       std    12.727922      26.162951      1.414214
       min    24.000000      25.000000      2.000000
       25%    28.500000      34.250000      2.500000
       50%    33.000000      43.500000      3.000000
       75%    37.500000      52.750000      3.500000
       max    42.000000      62.000000      4.000000

熊猫真令人印象深刻!谢谢@ayhan!是否可以在
groupby
中放置多个列。您可以传递字符串列表,而不是字符串:
df.groupby(['gender','age']).descripe()
对于来这里寻找更少描述性统计信息的每个人:
df.groupby(['gender']).agg(['min','max','mean'])
是另一种选择,熊猫真令人印象深刻!谢谢@ayhan!是否可以在
groupby
中放置多个列。您可以传递字符串列表,而不是字符串:
df.groupby(['gender','age'])。descripe()
对于来这里寻找较少描述性统计信息的每个人:
df.groupby(['gender'])。agg(['min','max','mean'])
是另一种选择