Pandas 中文手册

6.6 其他格式数据读取(拓展)

Pandas进阶:读取HTML、Pickle、Parquet和Feather文件全攻略

Pandas 中文手册

本章节详细讲解如何在Pandas中读取HTML表格数据、Pickle序列化文件以及高效存储格式Parquet和Feather,适合数据分析新手快速入门。

推荐工具
PyCharm专业版开发必备

功能强大的Python IDE,提供智能代码补全、代码分析、调试和测试工具,提高Python开发效率。特别适合处理列表等数据结构的开发工作。

了解更多

其他格式数据读取(拓展)

在数据科学和数据分析中,我们经常需要处理各种来源和格式的数据。Pandas作为Python的强大工具库,不仅支持常见的CSV、Excel文件读取,还提供了多种拓展功能来读取HTML表格数据、序列化文件以及高效存储格式。本章节将深入介绍这些方法,帮助您轻松应对不同数据源。

读取HTML表格数据(pd.read_html)

简介

HTML表格是网页上常见的展示数据方式,例如新闻网站上的排行榜或财务报表。Pandas的pd.read_html函数能够自动解析HTML中的表格标签(如<table>),将其转换为DataFrame,非常适合快速抓取网页数据。

用法

pd.read_html的基本用法非常简单,支持从URL或本地HTML文件读取。它会返回一个DataFrame列表,因为一个HTML页面可能包含多个表格。

import pandas as pd

# 从网页URL读取HTML表格
tables = pd.read_html('https://example.com/data.html')
df = tables[0]  # 假设第一个表格是我们需要的数据,您可以根据索引选择

# 从本地HTML文件读取
tables = pd.read_html('path/to/your/file.html')

注意事项

  • 表格标签:确保HTML文件中包含标准的<table>标签,否则可能无法正确解析。
  • 编码问题:如果HTML文件有特定编码,可以设置encoding参数,例如pd.read_html('file.html', encoding='utf-8')
  • 性能优化:对于复杂或大型HTML文件,考虑使用更快的解析器(如lxml),通过参数flavor指定。

示例

假设一个简单HTML表格,pd.read_html会将其转换为DataFrame,便于进一步分析或可视化。

读取Pickle文件(pd.read_pickle)

简介

Pickle是Python的标准序列化模块,能够将Python对象(如DataFrame、列表或字典)保存为二进制文件。使用pd.read_pickle可以轻松读取这些文件,保留对象的完整状态,常用于模型保存或数据缓存。

用法

首先,使用Pandas的to_pickle方法将DataFrame保存为Pickle文件,然后通过pd.read_pickle读取。

import pandas as pd

# 创建一个示例DataFrame
df = pd.DataFrame({'A': [1, 2, 3], 'B': ['a', 'b', 'c']})

# 保存为Pickle文件
df.to_pickle('data.pkl')

# 读取Pickle文件
df_loaded = pd.read_pickle('data.pkl')
print(df_loaded)  # 输出原始DataFrame

优点

  • 状态保留:Pickle文件完整保存了对象的属性和数据,读取时无需重新计算。
  • 效率高:相比文本格式(如CSV),二进制文件读写速度更快,节省内存。
  • 易于传输:适合在Python程序间共享数据,例如机器学习模型持久化。

安全提示

Pickle文件可能包含恶意代码,建议只读取可信来源的文件,并在必要时使用pickle.load的安全版本。

读取Parquet和Feather文件

简介

Parquet和Feather是现代高效的数据存储格式,特别适合大数据场景。它们采用列式存储,提高查询性能,压缩率高,并能跨语言使用(如与Apache Spark集成)。

读取Parquet文件(pd.read_parquet)

Parquet是一种开源列式存储格式,常用于大数据平台。Pandas的pd.read_parquet函数支持读取Parquet文件。

import pandas as pd

# 读取Parquet文件
df = pd.read_parquet('data.parquet')

# 如果文件在远程位置,如S3,可以使用完整路径
# df = pd.read_parquet('s3://bucket/data.parquet')

读取Feather文件(pd.read_feather)

Feather是另一种轻量级列式存储格式,由R和Python社区共同开发,读写速度极快。

import pandas as pd

# 读取Feather文件
df = pd.read_feather('data.feather')

优势

  • 高性能:列式存储减少I/O操作,加速数据查询和处理。
  • 压缩性:自动压缩数据,节省存储空间。
  • 跨平台:支持多种编程语言,便于团队协作。
  • 易于使用:Pandas原生支持,API简单直观。

对比建议

  • 对于大数据集,优先选择Parquet或Feather,因为它们读写快、压缩好。
  • 如果需要在Python和其他语言(如R)间共享数据,Feather是很好的选择。
  • 对于序列化Python对象,Pickle更合适,但不适合跨语言场景。

总结

通过本章节的学习,您应该掌握了Pandas中读取HTML表格数据、Pickle序列化文件以及高效存储格式Parquet和Feather的方法。这些工具极大地拓展了数据处理的灵活性,帮助您高效应对各种数据源。实践中,建议根据数据大小、来源和团队需求选择合适的格式,以优化工作流程。

接下来,您可以尝试将这些技巧应用到实际项目中,例如爬取网页数据、保存模型结果或管理大数据文件。不断练习,您将成为一名更高效的Pandas用户!

开发工具推荐
Python开发者工具包

包含虚拟环境管理、代码格式化、依赖管理、测试框架等Python开发全流程工具,提高开发效率。特别适合处理复杂数据结构和算法。

获取工具包