📌  相关文章
📜  如何将分类变量存储在单独的数据框中 - Python (1)

📅  最后修改于: 2023-12-03 15:24:44.330000             🧑  作者: Mango

如何将分类变量存储在单独的数据框中 - Python

有时候我们需要将数据表中的分类变量存储在单独的数据框中,例如制作交叉表或者进行统计分析时。本文将介绍在 Python 中如何将分类变量存储在单独的数据框中。

准备数据

我们使用 Pandas 中的 pd.read_csv() 函数读取一个包含分类变量的数据集。假设数据集长这样:

import pandas as pd

data = pd.DataFrame({'name': ['John', 'Mary', 'Anne', 'Peter', 'Bob', 'Linda', 'David', 'Jeff'],
                     'age': [23, 45, 31, 18, 27, 36, 29, 41],
                     'gender': ['F', 'F', 'F', 'M', 'M', 'F', 'M', 'M'],
                     'education': ['Bachelor', 'Master', 'PhD', 'Bachelor', 'Master', 'Bachelor', 'PhD', 'Master']})

print(data)

输出为:

    name  age gender education
0   John   23      F  Bachelor
1   Mary   45      F    Master
2   Anne   31      F       PhD
3  Peter   18      M  Bachelor
4    Bob   27      M    Master
5  Linda   36      F  Bachelor
6  David   29      M       PhD
7   Jeff   41      M    Master

数据集中包含 4 个变量,其中 gendereducation 是分类变量。

将分类变量存储在单独的数据框中

我们可以使用 Pandas 中的 groupby() 函数将数据按分类变量分组,并将每个组存储在一个单独的数据框中。具体步骤如下:

groups = data.groupby(['gender', 'education'])
dfs = [group.drop('gender', axis=1).reset_index(drop=True) for name, group in groups]
names = ['_'.join(name) for name in list(groups.groups.keys())]
result = dict(zip(names, dfs))

for name, df in result.items():
    print(name)
    print(df)

代码的具体步骤如下:

  1. 使用 groupby() 函数将数据按 gendereducation 分组,创建一个包含所有组的迭代器。
  2. 遍历迭代器,对于每个组,将 gender 列移除并重置行索引,然后将结果存储到一个列表中。
  3. group.groups.keys() 获取所有组的名称。
  4. 将名称和对应的数据框打包成一个字典,返回结果。

输出结果为:

F_Bachelor
    name  age education
0   John   23  Bachelor
1  Linda   36  Bachelor

F_Master
   name  age education
0  Mary   45    Master

F_PhD
   name  age education
0  Anne   31       PhD

M_Bachelor
    name  age education
0  Peter   18  Bachelor

M_Master
   name  age education
0   Bob   27    Master
1  Jeff   41    Master

M_PhD
    name  age education
0  David   29       PhD

可以看到,我们成功将分类变量存储在了单独的数据框中。每个数据框的名称由 gendereducation 组成,用 _ 连接。数据框中不包含 gender 列。

总结

本文介绍了如何将分类变量存储在单独的数据框中。具体步骤包括使用 Pandas 中的 groupby() 函数按分类变量分组,并将每个组存储在一个单独的数据框中。