python pandas数据融合

python pandas数据融合

0 背景

python pandas数据融合

之前我们提到了pandas的数据透视: python pandas数据透视 . 数据透视操作通过 pivotpivot_table方法可以将数据从长格式转换为宽格式, 以便用于特定场景下的数据分析. 数据融合df.melt()df.pivot()的逆操作函数, 用于将DataFrame从宽格式转换为长格式或堆叠格式。这个过程通常被称为“数据融合”或“融化”,因为它将多个列“融化”成两列,一列包含变量名,另一列包含值。

数据融合的主要用途包括:

  1. 数据重构:将DataFrame的结构从宽格式转换为长格式,这在处理数据时特别有用,当我们想要将数据集整理成一种更易于分析和可视化的形式时是非常有用的。
  2. 简化数据分析:许多数据分析和可视化工具更适合处理长格式数据,因为它们可以更容易地对数据进行分组、比较和绘图。
  3. 准备数据以进行建模:在机器学习或统计建模中,经常需要将数据转换为长格式,以便更灵活地定义模型规范,尤其是在处理类别数据和时间序列数据时。

1 使用

参数说明

melt()

def melt(
        self,
        id_vars=None,
        value_vars=None,
        var_name=None,
        value_name: Hashable = "value",
        col_level: Level | None = None,
        ignore_index: bool = True,
    )
 -> DataFrame:

  1. id_vars:在数据融合过程中保持不变的列, 有tuple、list或ndarray(可选),要取消透视的列。这些列的数据会被复制到输出DataFrame的相应行中。
  2. value_vars:需要被融合的列。如果未指定,所有不在id_vars中的列都会被融合。
  3. var_name:融合后变量名列的名称。默认为”variable”。
  4. value_name:融合后值列的名称。默认为”value”。
  5. col_level:int或str(可选),如果列是多层索引,则使用此级别来融合。

初始化数据

import pandas as pd
import numpy as np
data = {
    "year": [2023202320242024],
    "region": ["East""West""East""West"],
    "a_sales": [100150110130],
    "b_sales": [9012095115]
}
df = pd.DataFrame(data)
df

year region a_sales b_sales
0 2023 East 100 90
1 2023 West 150 120
2 2024 East 110 95
3 2024 West 130 115

数据融合

没有任何参数, 它会将所有的列[year, region, a_sales, b_sales]作为标识和值展开,一列为标签,默认列名variable,另一列为值,默认列名为value

df.melt()

variable value
0 year 2023
1 year 2023
2 year 2024
3 year 2024
9 a_sales 150
10 a_sales 110
11 a_sales 130
12 b_sales 90
13 b_sales 120
14 b_sales 95
15 b_sales 115

指定标识和值

df.melt(id_vars=['year','region'])
df.melt(id_vars=['year','region'], value_vars=['a_sales''b_sales'])

year region variable value
0 2023 East a_sales 100
1 2023 West a_sales 150
2 2024 East a_sales 110
3 2024 West a_sales 130
4 2023 East b_sales 90
5 2023 West b_sales 120
6 2024 East b_sales 95
7 2024 West b_sales 115
df.melt(id_vars=['year','region'], value_vars='a_sales', )
df.melt(id_vars=['year''region'], value_vars=['a_sales', ], )

year region variable value
0 2023 East a_sales 100
1 2023 West a_sales 150
2 2024 East a_sales 110
3 2024 West a_sales 130

指定标识和值的列名.

df.melt(id_vars=['year''region'], value_vars=['a_sales', ], var_name='A产品销售', value_name='销售额')

year region A产品销售 销售额
0 2023 East a_sales 100
1 2023 West a_sales 150
2 2024 East a_sales 110
3 2024 West a_sales 130

2 其他

数据融合让数据无限度地铺开,它是数据透视的反向操作, 以便我们能够在一些场景下可以更好的观察数据, 以适应我们的特定数据分析需求。

如果你觉得这期内容不错的话, 欢迎点赞, 在看, 关注我的微信公众号


原文始发于微信公众号(其之):python pandas数据融合

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/204724.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!