Pandas: 超级分类分类数据

Pandas: Super categories the category data

我正在关注 Kaggle's Titanic 数据集问题。我有一个包含许多列的数据框。其中之一是名为 Cabin(分类数据)的列,其中包含分配给乘客的机舱号, 和另一列 Survived 仅包含 01(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  

我想根据 Cabin 对这些数据进行分组,看看每个 group/Cabin 有多少人幸存下来。我尝试使用 groupby 函数

df.groupby(["Cabin"]["Survived"].sum()

这将数据分成了太多详细的组。

A10      0
A14      2
A16      1
A19      4
A20      5
F38      1
F4       3
G6       7
T        0

相反,我希望它们根据 Cabin A、Cabin B、Cabin 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……),单单做一个任务实在是太多了。是否有任何内置功能可以帮助完成此任务?

您可以 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

您不必经历创建字典的麻烦。