我正在关注Kaggle's Titanic 数据集问题。我有一个包含许多列的数据框。其中一个是名为Cabin
的列(分类数据),其中包含分配给乘客的机舱编号,
另一列Survived
仅包含0
和1
(0-未幸存,1幸存)
Survived Parch Ticket Fare Cabin Embarked
0 0 A/5 21171 7.2500 C85 S
1 0 PC 17599 71.2833 C85 C
1 0 3101282 7.9250 C85 S
0 0 113803 53.1000 A123 S
0 0 373450 8.0500 B123 S
我想根据小屋对这些数据进行分组,看看有多少人从每个小组/小屋中幸存下来。我尝试使用groupby函数
df.groupby(["Cabin"]["Survived"].sum()
这会将数据分成太多详细的组。
A10 0
A14 2
A16 1
A19 4
A20 5
F38 1
F4 3
G6 7
T 0
相反,我希望它们能够根据机舱A,机舱B,机舱C等进行分组。
A 30
B 0
C 40
我想用字典存储所有不同的A,B等。
dic = {"A": ["A10", "A34", "A36", "A5", "A6", "A7"],
"B": ["B101", "B102", "B18", "B19", "B20"],
.....................
}
但是由于有147个不同的类别(A2,A3,B56,F45 ......),仅仅为一项任务做太多了。是否有任何内置功能可以帮助完成此任务?
答案 0 :(得分:3)
你可以groupby
第一个字母。
df
Survived Parch Ticket Fare Cabin Embarked
0 0 0 A/5 21171 7.2500 C85 S
1 1 0 PC 17599 71.2833 C85 C
2 1 0 3101282 7.9250 C85 S
3 0 0 113803 53.1000 A123 S
4 0 0 373450 8.0500 B123 S
df.groupby(df.Cabin.str[0]).Survived.sum()
Cabin
A 0
B 0
C 2
Name: Survived, dtype: int64
您不必经历创建字典的麻烦。