R&Python Data Science 系列:数据处理(4)长宽格式数据转换
发布日期:2025-05-05 05:31:18
浏览次数:3
分类:精选文章
本文共 1585 字,大约阅读时间需要 5 分钟。
长宽格式数据转换实践指南
在数据分析过程中,数据的存储格式选择至关重要。R语言倾向于使用长格式数据,而SPSS则常用宽格式数据。了解如何在两者之间进行转换是数据分析中的核心技能之一。本文将详细介绍长宽格式数据的定义及其转换方法。
长宽格式数据的定义
长格式数据:
- 每一行记录一个ID(如Player)的属性,形式为key:value对。例如,左表中第一行记录Player1的name属性,key为name,value为Sulie。
宽格式数据:
- 每一行为一个完整的记录,记录ID的多个属性。例如,右表中第一行记录Player1的name、sex、education属性。
注意事项
不要将宽转换为宽格式理解为数据透视表。长转宽仅改变存储形式,不对操作对象进行计算。数据透视表通常用于对操作对象进行统计计算(如计数、求和等)。
转换方法
Python实现
方法一:pandas库中的pivot()和pivot_table()
- 作用:将长格式数据转换为宽格式数据。
- 注意:pivot_table()用于数值型值,不能用于字符串型值。
- 示例代码:
import pandas as pdfrom dfply import *long_data = pd.DataFrame({ 'Player': ['Player1']*3 + ['Player2']*3 + ['Player3']*3, 'Introduction': ['name', 'education', 'sex']*3, 'Message': ['Sulie', 'master', 'male', 'LuBan', 'Bachelor', 'male', 'ZhenJi', 'PhD', 'female']})long_data = long_data[('Player', 'Introduction', 'Message')]long_data.pivot(index='Player', columns='Introduction', values='Message') 方法二:dfply库中的spread()
- 作用:将多个key列展开为宽格式数据。
- 示例代码:
long_data >> spread('Introduction', 'Message') R实现
- 工具:使用tidyr包中的pivot_wider()函数。
- 示例代码:
library(tidyverse)long_data %>% group_by(Player) %>% pivot_wider(names_from = Introduction, values_from = Message)
宽转长函数
Python实现
- 方法一:使用melt()函数。
- 示例代码:
wide_data.melt(id_vars='Player', var_name='Introduction', value_name='Message')
- 方法二:使用dfply库中的gather()函数。
- 示例代码:
wide_data >> gather('Introduction', 'Message', ['name', 'sex', 'education']) R实现
- 工具:使用tidyr包中的pivot_longer()函数。
- 示例代码:
wide_data %>% pivot_longer(cols = -Player, names_to = "Introduction", values_to = "Message")
总结
- Python推荐使用dfply库中的函数,R推荐使用tidyr包中的函数。
- 长转宽和宽转长是数据分析中常见操作,掌握这些方法能显著提升工作效率。
发表评论
最新留言
很好
[***.229.124.182]2026年06月13日 03时34分12秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!