导读:本期聚焦于小伙伴创作的《Pandas中如何按分组计算数值列相关性并进行分类变量编码》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《Pandas中如何按分组计算数值列相关性并进行分类变量编码》有用,将其分享出去将是对创作者最好的鼓励。

在Pandas的数据处理流程中,按分组计算数值列相关性以及分类变量编码是两项高频操作,前者可以帮助我们挖掘不同分组下变量间的关联规律,后者则是将非数值类型的分类数据转换为模型可识别的数值形式,两者结合能大幅提升数据预处理的完整度。

Pandas中如何按分组计算数值列相关性并进行分类变量编码

按分组计算数值列相关性

要实现按分组计算数值列相关性,核心思路是先通过groupby方法对数据进行分组,再对每个分组选取数值列调用相关性计算方法。Pandas的DataFrameSeries都内置了corr方法,可以计算不同列之间的相关系数,默认使用皮尔逊相关系数。

基础实现步骤

首先我们需要准备包含分组字段、数值字段的测试数据,以下是一份模拟的销售数据:

import pandas as pd
import numpy as np

# 构造测试数据
data = {
    "category": ["A", "A", "A", "B", "B", "B", "C", "C", "C"],
    "price": [10, 12, 15, 20, 22, 25, 30, 32, 35],
    "sales": [100, 120, 130, 200, 210, 220, 300, 310, 320],
    "rating": [4.5, 4.6, 4.7, 4.8, 4.9, 4.7, 4.9, 5.0, 4.8]
}
df = pd.DataFrame(data)
print(df)

接下来按category分组,计算每个分组内pricesalesrating三个数值列的相关性矩阵:

# 按category分组,计算数值列的相关性
corr_result = df.groupby("category").apply(lambda x: x[["price", "sales", "rating"]].corr())
print(corr_result)

上述代码中,groupby("category")先按照分类字段分组,apply方法对每个分组的数据执行匿名函数,匿名函数选取三个数值列后调用corr方法得到相关性矩阵。最终返回的结果是一个多级索引的DataFrame,第一层索引是分组值,第二层索引是每个分组内的相关性矩阵。

提取特定列的相关性

如果只需要获取价格和销量两个列的相关性,可以进一步筛选结果:

# 提取price和sales的相关系数
target_corr = corr_result.loc[:, "price"].loc[:, "sales"].reset_index()
target_corr.columns = ["category", "price_sales_corr"]
print(target_corr)

分类变量编码实践

分类变量编码是将非数值的分类数据转换为数值类型的过程,Pandas提供了多种内置编码方式,不同方式适用于不同的场景。

标签编码

标签编码会将每个分类值映射为一个唯一的整数,适合有序分类变量,比如学历等级、评分等级等。可以使用factorize方法实现:

# 对category列做标签编码
df["category_label"] = pd.factorize(df["category"])[0]
print(df[["category", "category_label"]])

如果需要保留编码映射关系,可以单独存储映射字典:

# 获取编码映射关系
labels, uniques = pd.factorize(df["category"])
mapping = dict(zip(uniques, range(len(uniques))))
print(mapping)

独热编码

独热编码会为每个分类值创建一个新的二进制列,适合无序分类变量,避免模型误以为分类值之间存在顺序关系。可以使用get_dummies方法实现:

# 对category列做独热编码
category_dummies = pd.get_dummies(df["category"], prefix="category")
# 合并回原DataFrame
df = pd.concat([df, category_dummies], axis=1)
print(df)

如果分类变量的取值较多,独热编码会导致特征维度急剧增加,此时可以考虑使用目标编码等其他方式,不过目标编码需要结合标签数据计算,不在Pandas内置功能范围内。

组合应用场景

在实际的数据分析流程中,经常需要先对分类变量编码,再按分组计算相关性。比如先对商品类别做独热编码,再按地区分组计算不同类别商品的销量和价格相关性:

# 构造包含地区和类别的测试数据
test_data = {
    "region": ["East", "East", "West", "West", "East", "West"],
    "category": ["A", "B", "A", "B", "A", "B"],
    "price": [10, 20, 15, 25, 12, 22],
    "sales": [100, 200, 150, 250, 110, 220]
}
test_df = pd.DataFrame(test_data)
# 对category做独热编码
test_df = pd.concat([test_df, pd.get_dummies(test_df["category"], prefix="cat")], axis=1)
# 按region分组,计算price和cat_A的相关性
group_corr = test_df.groupby("region").apply(lambda x: x["price"].corr(x["cat_A"]))
print(group_corr)

通过上述操作,我们可以快速得到不同地区下,类别A商品的价格和是否为类别A这两个变量的相关性,为后续的业务分析提供数据支撑。

Pandasgroupby相关性计算分类变量编码数值列处理修改时间:2026-06-25 18:27:29

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。