💎【行业认证·权威头衔】
✔ 华为云天团核心成员:特约编辑/云享专家/开发者专家/产品云测专家
✔ 开发者社区全满贯:CSDN博客&商业化双料专家/阿里云签约作者/腾讯云内容共创官/掘金&亚马逊&51CTO顶级博主
✔ 技术生态共建先锋:横跨鸿蒙、云计算、AI等前沿领域的技术布道者
🏆【荣誉殿堂】
🎖 连续三年蝉联"华为云十佳博主"(2022-2024)
🎖 双冠加冕CSDN"年度博客之星TOP2"(2022&2023)
🎖 十余个技术社区年度杰出贡献奖得主
📚【知识宝库】
覆盖全栈技术矩阵:
◾ 编程语言:.NET/Java/Python/Go/Node...
◾ 移动生态:HarmonyOS/iOS/Android/小程序
◾ 前沿领域:物联网/网络安全/大数据/AI/元宇宙
◾ 游戏开发:Unity3D引擎深度解析
在数据分析的过程中,数据的转换是一个不可或缺的环节。无论是在进行数据整合、特征工程,还是在准备数据以适应不同的分析需求,掌握DataFrame数据转换的技巧都显得尤为重要。Pandas库中的DataFrame对象为数据转换提供了丰富的功能,使得我们能够轻松地对数据进行变换和处理,以适应不同的分析场景。
本文将重点介绍DataFrame数据转换的常用方法,包括数据的重塑、透视、合并与连接、类型转换等。通过实际案例,我们将深入探讨如何灵活运用这些功能来优化数据结构,提升分析效率。
数据转换是数据预处理的重要环节,本节介绍如何将DataFrame转换为字典、列表和元组。
使用 to_dict()
方法,通过 orient
参数控制转换格式。
默认以列名为键,每列数据转换为嵌套字典(索引为内层键):
import pandas as pd
data = [[110, 105, 99], [105, 88, 115]]
name = ['明日', '七月流火']
columns = ['语文', '数学', '英语']
df = pd.DataFrame(data, index=name, columns=columns)
print(df.to_dict())
输出:
{
'语文': {'明日': 110, '七月流火': 105},
'数学': {'明日': 105, '七月流火': 88},
'英语': {'明日': 99, '七月流火': 115}
}
列名为键,列数据转换为列表:
print(df.to_dict(orient='list'))
输出:
{
'语文': [110, 105],
'数学': [105, 88],
'英语': [99, 115]
}
行索引为键,每行数据转换为字典(列名为内层键):
print(df.to_dict(orient='index'))
输出:
{
'明日': {'语文': 110, '数学': 105, '英语': 99},
'七月流火': {'语文': 105, '数学': 88, '英语': 115}
}
orient='records'
:转换为字典列表,每行一个字典。print(df.to_dict(orient='records'))
# 输出:[{'语文':110, '数学':105, '英语':99}, {'语文':105, '数学':88, '英语':115}]orient='split'
:分离索引、列名和数据。print(df.to_dict(orient='split'))
# 输出:{'index': ['明日', '七月流火'], 'columns': ['语文', '数学', '英语'], 'data': [[110, 105, 99], [105, 88, 115]]}使用 iloc
或 loc
获取行数据后调用 tolist()
:
# 示例数据:二手房信息
data = [['80万', 110, '3室2厅'], ['99.8万', 122, '2室2厅']]
name = ['吉盛小区', '万科城']
columns = ['总价', '面积', '户型']
df = pd.DataFrame(data, index=name, columns=columns)
# 获取第一行数据并转列表
print(df.iloc[0].tolist()) # 输出:['80万', 110, '3室2厅']
# 通过索引获取行数据并转列表
print(df.loc['万科城'].tolist()) # 输出:['99.8万', 122, '2室2厅']
直接对列调用 tolist()
:
print(df['总价'].tolist()) # 输出:['80万', '99.8万']
print(df.户型.tolist()) # 输出:['3室2厅', '2室2厅']
通过循环遍历DataFrame值并转换为元组:
import pandas as pd # 导入pandas模块
#解决数据输出时列名不对齐的问题
pd.set_option('display.unicode.east_asian_width', True)
data = [['Aaron',18,'boy'],['Abby',23,'girl']] # 创建数据
columns = ['name','age','sex'] # 创建列名
df = pd.DataFrame(data=data, columns=columns) # 创建DataFrame对象
print('原数据如下:\n',df)
tuples = tuple(tuple(t) for t in df.values) # 将DataFrame数据转换为元组数据
print('转换后的元组数据如下:\n',tuples)
输出:
高效方法:使用 itertuples()
tuples = tuple(df.itertuples(index=False, name=None))
print(tuples)
# 输出:(('Aaron', 18, 'boy'), ('Abby', 23, 'girl'))
orient
参数适配不同需求。通过合理选择转换方法,可高效实现数据在不同格式间的流转,满足多样化的数据处理需求。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。