Pandas实战100例 | 案例 9: 数据重塑 - `pivot` 和 `melt`

案例 9: 数据重塑 - pivotmelt

知识点讲解

在 Pandas 中,pivotmelt 是用于数据重塑的两个强大工具。pivot 可以帮助你重新排列数据的格式,使其更加适合分析。而 melt 是进行“熔化”操作的,它可以将数据从宽格式转换为长格式。

  • pivot 用于创建一个新的派生表格,其中一列的值会成为多个列的标题。
  • melt 将 DataFrame 从宽格式转换为长格式,通常用于将多列合并成两列,一列存储变量名,另一列存储值。
示例代码

使用 pivot

# 原始数据
data = {
   'Date': ['2023-01-01', '2023-01-02', '2023-01-03'],
        'Type': ['A', 'B', 'C'],
        'Value': [100, 200, 300]}
df = pd.DataFrame(data)

# 使用 pivot
pivot_df = df.pivot(index='Date', columns='Type', values='Value')
print(pivot_df)

这段代码演示了如何使用 pivot 方法。我们首先创建了一个包含日期、类型和值的简单 DataFrame。然后,我们使用 pivot 方法,将 Date 列作为索引,Type 列的唯一值作为新的列,并以 Value 列的值填充这些新列。

使用 melt

# 使用 melt
melted_df = df.melt(id_vars=['Date'], value_vars=['Type', 'Value'])
print(melted_df)

这段代码展示了 melt 方法的使用。我们将 Date 列作为标识变量列(保持不变),然后将 TypeValue 列“熔化”成两列,其中一列存储了原始列名(Type, Value),另一列存储了相应的值。

数据重塑是数据预处理中的一个关键步骤,可以大大改善数据的可读性和适应性。

案例 9: 数据重塑 - pivotmelt(续)

示例代码运行结果

使用 pivot

import pandas as pd

# 准备数据和示例代码的运行结果,用于案例 9

# 原始数据
data = {
   'Date': ['2023-01-01', '2023-01-02', '2023-01-03'],
        'Type': ['A', 'B', 'C'],
        'Value': [100, 200, 300]}
df = pd.DataFrame(data)

# 使用 pivot
pivot_df = df.pivot(index='Date', columns='Type', values='Value')

# 使用 melt
melted_df = df.melt(id_vars=['Date'], value_vars=['Type', 'Value'])

pivot_df, melted_df


运行结果:

Type            A      B      C
Date                           
2023-01-01  100.0    NaN    NaN
2023-01-02    NaN  200.0    NaN
2023-01-03    NaN    NaN  300.0

这个结果显示了 pivot 方法如何将原始数据转换为新格式,其中日期作为索引,不同的 Type 值(A, B, C)作为列标题。

使用 melt

melted_df = df.melt(id_vars=['Date'], value_vars=['Type', 'Value'])
print(melted_df)

运行结果:

         Date variable value
0  2023-01-01     Type     A
1  2023-01-02     Type     B
2  2023-01-03     Type     C
3  2023-01-01    Value   100
4  2023-01-02    Value   200
5  2023-01-03    Value   300

在这个结果中,melt 方法将数据转换为长格式,其中 Date 列保持不变,而 TypeValue 列的内容被合并到两个新列中。

通过这样的数据重塑操作,你可以根据需要将数据结构从宽格式转换为长格式,或反之,以适应不同的分析需求。

相关推荐

  1. Pandas实战100 | 案例 9: 数据重塑 - `pivot` `melt`

    2024-01-13 03:02:01       52 阅读
  2. Pandas实战100 | 案例 46: 列重新排序

    2024-01-13 03:02:01       44 阅读
  3. Pandas实战100 | 案例 43: 数据排序

    2024-01-13 03:02:01       55 阅读
  4. Pandas实战100 | 案例 31: 转换为分类数据

    2024-01-13 03:02:01       57 阅读
  5. Pandas实战100 | 案例 27: 数据合并 - 使用 `merge`

    2024-01-13 03:02:01       49 阅读
  6. Pandas实战100 | 案例 19: 基本数学运算

    2024-01-13 03:02:01       53 阅读
  7. Pandas实战100 | 案例 49: 数值运算

    2024-01-13 03:02:01       50 阅读
  8. Pandas实战100 | 案例 25: 计算相关系数

    2024-01-13 03:02:01       61 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-13 03:02:01       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-13 03:02:01       106 阅读
  3. 在Django里面运行非项目文件

    2024-01-13 03:02:01       87 阅读
  4. Python语言-面向对象

    2024-01-13 03:02:01       96 阅读

热门阅读

  1. SQL server 给列添加描述

    2024-01-13 03:02:01       69 阅读
  2. 图像处理中常用的距离

    2024-01-13 03:02:01       55 阅读
  3. c++对象拷贝与堆中的对象实例拷贝

    2024-01-13 03:02:01       60 阅读
  4. 77. 组合(回溯)

    2024-01-13 03:02:01       55 阅读
  5. go-zero 如何在任意地方获取yaml中的值

    2024-01-13 03:02:01       50 阅读
  6. Web前端篇——element-plus组件设置全局中文

    2024-01-13 03:02:01       53 阅读
  7. 100. 相同的树

    2024-01-13 03:02:01       51 阅读
  8. mysql 一对多 合并多个通过 逗号拼接展示

    2024-01-13 03:02:01       54 阅读
  9. python - 依赖 pycryptodome

    2024-01-13 03:02:01       52 阅读
  10. Mysql 触发器

    2024-01-13 03:02:01       50 阅读