Python 3.x 如何在列范围内对观察结果进行分组?
我有一个专栏名为Python 3.x 如何在列范围内对观察结果进行分组?,python-3.x,pandas,Python 3.x,Pandas,我有一个专栏名为Age 如何打印每个年龄组的观察次数 Example age groups: 20 - 25 25 - 30 30 - 35 35 - 40 40 - 45 50 - 50 Age Column 11 7 49 31 16 33 55 47 当然,我可以在loc语句中使用print with conditional,但这实在是太冗长了。 还有更好的办法吗 print(myDataFrame.loc[(myDataFrame.Age >= 20) &
Age
如何打印每个年龄组的观察次数
Example age groups:
20 - 25
25 - 30
30 - 35
35 - 40
40 - 45
50 - 50
Age Column
11
7
49
31
16
33
55
47
当然,我可以在loc语句中使用print with conditional,但这实在是太冗长了。
还有更好的办法吗
print(myDataFrame.loc[(myDataFrame.Age >= 20) & (myDataFrame.Age < 30)].count)
print(myDataFrame.loc[(myDataFrame.Age >= 30) & (myDataFrame.Age < 40)].count)
print(myDataFrame.loc[(myDataFrame.Age >= 40) & (myDataFrame.Age < 50)].count)
打印(myDataFrame.loc[(myDataFrame.Age>=20)和(myDataFrame.Age<30)].count)
打印(myDataFrame.loc[(myDataFrame.Age>=30)和(myDataFrame.Age<40)].count)
打印(myDataFrame.loc[(myDataFrame.Age>=40)和(myDataFrame.Age<50)].count)
一种方法,您可以使用pd.Series.value\u计数
和bin
参数:
df['Age Column'].value_counts(bins=[0,10,20,30,40,50,60], sort=False)
输出:
(-0.001, 10.0] 1
(10.0, 20.0] 2
(20.0, 30.0] 0
(30.0, 40.0] 2
(40.0, 50.0] 2
(50.0, 60.0] 1
Name: Age Column, dtype: int64
0-10 1
11-20 2
21-30 0
31-40 2
41-50 2
51-60 1
Name: Age Column, dtype: int64
如果要控制更多,可以使用pd.cut和value_计数:
s = pd.cut(df['Age Column'], bins=[0,10,20,30,40,50,60], labels=['0-10', '11-20', '21-30', '31-40', '41-50', '51-60'])
s.value_counts(sort=False)
输出:
(-0.001, 10.0] 1
(10.0, 20.0] 2
(20.0, 30.0] 0
(30.0, 40.0] 2
(40.0, 50.0] 2
(50.0, 60.0] 1
Name: Age Column, dtype: int64
0-10 1
11-20 2
21-30 0
31-40 2
41-50 2
51-60 1
Name: Age Column, dtype: int64
问题是
value\u计数
只返回唯一的值。如果我有33,15,33会怎么样?只算33次?不算。。。。它计算该值的数目。试试看pd.Series([33,12,33]).value_counts()
That's beautiful:)我如何在同一行上为您的解决方案添加一个条件,即性别==myDataFrame中的男性?我通常的做法是创建新变量malesDF=myDataFrame.loc[(myDataFrame.Gender=='Male')]
@bibscy。。。是的,这是正确的。首先筛选列以获取所需的值,然后使用值\计数并重命名结果以匹配筛选结果。