使用GroupByPandas(Python 3.5.1)描述函数
我想知道是否可以使用descripe函数按某列的不同值分组 例如,假设我有以下数据帧:使用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':
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'])
是另一种选择