在数据分析领域,Pandas库是Python中不可或缺的一部分,它提供了高效的数据处理能力。宽表和窄表是数据处理中常见的两种表格式。宽表通常包含多个变量(列)在同一行中,而窄表则将每个变量值作为一个单独的行记录。在某些情况下,将宽表转换为窄表能够更好地展示数据并进行后续分析。本文将详细介绍如何使用Pandas将宽表转换为窄表,并提供一个实际例子来说明这一过程。 我们创建一个宽表数据示例: ```python import pandas as pd fake_data = {'subject':['math', 'english'], 'A': [88, 90], 'B': [70, 80], 'C': [60, 78]} test = pd.DataFrame(fake_data, columns=['subject', 'A', 'B', 'C']) ``` 在这个例子中,`test` DataFrame有两个固定变量——`subject`,以及三个变量值列`A`、`B`和`C`。宽表的结构使得每个观察(row)包含一个人在不同科目上的成绩。 要将宽表转换为窄表,我们可以使用Pandas的`melt()`函数。`melt()`函数可以将DataFrame的列名转换为行,同时将原有的值分布到新行中。在上述例子中,我们可以这样做: ```python narrow_test = pd.melt(test, id_vars=['subject']) ``` 这将生成一个新的DataFrame `narrow_test`,其中包含三列:`subject`保持不变,`variable`包含了原来的列名(`A`、`B`或`C`),而`value`则包含了对应的值。 ```markdown subject variable value 0 math A 88 1 english A 90 2 math B 70 3 english B 80 4 math C 60 5 english C 78 ``` 现在,每个观察(row)代表一个特定主题的成绩。这种方法有助于当我们需要按科目分组或进行其他分析时。 补充知识部分讲述了如何从单条目数据集生成宽表。在医院体检数据的例子中,原始数据可能以这样的形式存在: | StuID | Type | Num | |-------|------|-----| | 111021| Math | 89 | | 111021| English | 93 | | 312983| English | 91 | | 314621| English | 82 | | 314621| Math | 92 | | 112341| Math | 82 | 要将这种格式转换为宽表,可以按照以下步骤操作: 1. 使用`~df.duplicated(subset=['StuID'])`找出唯一的学生ID,然后将其保存到列表`num`。 2. 创建一个新的DataFrame `result_df`,包含`StuID`列,并预先设定`English`和`Math`列为空。 3. 遍历原始DataFrame的索引,根据`Type`列的值将对应的`Num`值填入`result_df`的相应列。 最终得到的宽表会是这样的: | StuID | English | Math | |-------|---------|------| | 111021| 93 | 89 | | 312983| 91 | NaN | | 314621| 82 | 92 | | 112341| NaN | 82 | 这种转换有利于分析学生的各个科目成绩,例如计算平均分或比较不同科目的表现。 总结起来,Pandas的`melt()`函数是将宽表转换为窄表的关键工具,而生成宽表的方法则需要通过遍历和填充数据来实现。理解这两种转换对于数据分析师来说非常重要,因为它们能帮助我们将数据整理成适合分析的格式。在实际工作中,根据数据的特性选择合适的转换方法,可以有效地提升数据分析的效率和质量。
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![py](https://img-home.csdnimg.cn/images/20210720083646.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![avatar-default](https://csdnimg.cn/release/downloadcmsfe/public/img/lazyLogo2.1882d7f4.png)
![avatar](https://profile-avatar.csdnimg.cn/default.jpg!1)
- 粉丝: 4
- 资源: 933
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![voice](https://csdnimg.cn/release/downloadcmsfe/public/img/voice.245cc511.png)
![center-task](https://csdnimg.cn/release/downloadcmsfe/public/img/center-task.c2eda91a.png)
最新资源
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback-tip](https://img-home.csdnimg.cn/images/20220527035111.png)
![dialog-icon](https://csdnimg.cn/release/downloadcmsfe/public/img/green-success.6a4acb44.png)