【愚公系列】《Python网络爬虫从入门到精通》031-DataFrame数据的转换

举报
愚公搬代码 发表于 2025/05/04 13:20:22 2025/05/04
【摘要】 标题详情作者简介愚公搬代码头衔华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,亚马逊技领云博主,51CTO博客专家等。近期荣誉2022年度博客之星TOP2,2023年度博客之星TOP2,2022年华为云十佳博主,2023年华为云十佳博主,2024年华为云十佳...
标题 详情
作者简介 愚公搬代码
头衔 华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,亚马逊技领云博主,51CTO博客专家等。
近期荣誉 2022年度博客之星TOP2,2023年度博客之星TOP2,2022年华为云十佳博主,2023年华为云十佳博主,2024年华为云十佳博主等。
博客内容 .NET、Java、Python、Go、Node、前端、IOS、Android、鸿蒙、Linux、物联网、网络安全、大数据、人工智能、U3D游戏、小程序等相关领域知识。
欢迎 👍点赞、✍评论、⭐收藏

🚀前言

在数据分析的过程中,数据的转换是一个不可或缺的环节。无论是在进行数据整合、特征工程,还是在准备数据以适应不同的分析需求,掌握DataFrame数据转换的技巧都显得尤为重要。Pandas库中的DataFrame对象为数据转换提供了丰富的功能,使得我们能够轻松地对数据进行变换和处理,以适应不同的分析场景。

本文将重点介绍DataFrame数据转换的常用方法,包括数据的重塑、透视、合并与连接、类型转换等。通过实际案例,我们将深入探讨如何灵活运用这些功能来优化数据结构,提升分析效率。

🚀一、DataFrame数据的转换

数据转换是数据预处理的重要环节,本节介绍如何将DataFrame转换为字典、列表和元组。

🔎1.DataFrame转换为字典

使用 to_dict() 方法,通过 orient 参数控制转换格式。 在这里插入图片描述

🦋1.1 默认转换(orient='dict')

默认以列名为键,每列数据转换为嵌套字典(索引为内层键):

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}
}

🦋1.2 orient='list'

列名为键,列数据转换为列表:

print(df.to_dict(orient='list'))

输出:

{
    '语文': [110, 105],
    '数学': [105, 88],
    '英语': [99, 115]
}

🦋1.3 orient='index'

行索引为键,每行数据转换为字典(列名为内层键):

print(df.to_dict(orient='index'))

输出:

{
    '明日': {'语文': 110, '数学': 105, '英语': 99},
    '七月流火': {'语文': 105, '数学': 88, '英语': 115}
}

🦋1.4 其他常用参数

  • 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]]}
    

🔎2.DataFrame转换为列表

🦋2.1 单行数据转列表

使用 ilocloc 获取行数据后调用 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厅']
在这里插入图片描述在这里插入图片描述

🦋2.2 单列数据转列表

直接对列调用 tolist()

print(df['总价'].tolist())  # 输出:['80万', '99.8万']
print(df.户型.tolist())    # 输出:['3室2厅', '2室2厅']

🔎3.DataFrame转换为元组

通过循环遍历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'))

🔎4.总结

  • 字典转换:灵活选择 orient 参数适配不同需求。
  • 列表转换:按行或列提取数据,适用于后续遍历或批量处理。
  • 元组转换:适合需要不可变数据结构的场景,如哈希键或数据库操作。

通过合理选择转换方法,可高效实现数据在不同格式间的流转,满足多样化的数据处理需求。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。