【愚公系列】《Python网络爬虫从入门到精通》031-DataFrame数据的转换
【摘要】 标题详情作者简介愚公搬代码头衔华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,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 单行数据转列表
使用 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厅']
在这里插入图片描述
🦋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)