Python Pandas pandas.read_html函数方法的使用

Pandas是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。Pandas提供了大量能使我们快速便捷地处理数据的函数和方法。你很快就会发现,它是使Python成为强大而高效的数据分析环境的重要因素之一。本文主要介绍一下Pandas中read_html方法的使用。

pandas.read_html(io, match='.+', flavor=None, header=None, index_col=None, skiprows=None, attrs=None, parse_dates=False, thousands=',', encoding=None, decimal='.', converters=None, na_values=None, keep_default_na=True, displayed_only=True)源代码

将HTML表读入DataFrame对象列表。

参数:

iostr, path对象 或 file-like 对象

URL、类似文件的对象或包含HTML的原始字符串。

注意,lxml只接受httpftp和文件url协议。

如果你有一个以'https'开头的URL

可以尝试删除's'

matchstr 或 编译的正则表达式, 可选

将返回包含与此正则表达式或字符串匹配的文本的表集。

除非HTML非常简单,否则可能需要在这里传递一个非空字符串。

默认为.+ (匹配任何非空字符串)。

默认值将返回页面中包含的所有表。

这个值被转换为一个正则表达式,

以便在Beautiful Soup和lxml之间有一致的行为。

flavorstr,可选

要使用的解析引擎。

' bs4 '和' html5lib '是彼此是同义的,

它们都是为了向后兼容。

None的默认值尝试使用lxml解析,

如果失败,则返回bs4 + html5lib

headerint list-like, 可选

用于使列成为标题的行(或MultiIndex的行列表)。

index_colintlist-like, 可选

用于创建索引的列(或列的列表)。

skiprowsint, list-likeslice, 可选

解析列整数后要跳过的行数。基于0

如果给定了一个整数序列或一个切片,

则将跳过由该序列索引的行。

注意,单个元素序列表示“跳过第n行”,

而整数表示“跳过n行”。

attrsdict,可选

attrs是一个属性字典,可以通过它来识别HTML中的表。

在传递给lxml或Beautiful Soup之前,

不会检查它们的有效性。

但是,这些属性必须是有效的HTML表属性才能正常工作。

例如,

attrs = {'id': 'table'}

是一个有效的属性字典,

因为' id ' HTML标签属性,

依据文档任何HTML标签的有效HTML属性。

attrs = {'asdf': 'table'}

不是一个有效的属性字典,

因为' asdf '不是一个有效的HTML属性,

即使它是一个有效的XML属性。

这里可以找到有效的HTML 4.01表属性。

HTML 5规范的工作草案可以在这里找到。

它包含了关于现代网络的表属性的最新信息。

parse_datesbool, 可选

详情请参阅read_csv()

thousandsstr, 可选

分隔符用来解析千位。默认为','

encodingstr, 可选

用来解码网页的编码。默认为None

``None`` 保留了之前的编码行为,

这取决于底层解析器库(例如,

解析器库将尝试使用文档提供的编码)。

decimalstr, 默认为‘.’

可识别为小数点的字符(例如,使用 ‘,’ 表示欧洲数据)。

convertersdict, 默认为 None

函数的字典,用于转换某些列中的值。

key可以是整数或列标签,

value是接受一个输入参数、单元格(不是列)

内容并返回转换后的内容的函数。

na_valuesiterable, 默认为 None

自定义NA值。

keep_default_nabool, 默认为 True

如果指定了na_values并且keep_default_naFalse

则默认的NaN值将被覆盖,否则它们将被追加。

displayed_onlybool, 默认为 True

是否应该解析带有" display: none "的元素。

返回:

dfs

DataFrame的列表。

Notes

在使用此函数之前,应该了解关于HTML解析库的一些问题。

在调用这个函数之后,希望做一些清理工作。例如,如果在传递header=0参数时将列名转换为NaN,则可能需要手动分配列名。尽可能少地假设表的结构,并将表中包含的HTML特性推送给用户。

这个函数搜索<table>元素,并且只搜索表中每个<tr><th>元素中的<tr><th>行和<td>元素。<td>表示“表数据”。此函数试图正确处理 colspanrowspan 属性。如果函数有一个<thead> 参数,它将被用于构造header,否则函数将尝试在体中查找header(通过将只有<th>元素的行放入header中)。

与read_csv()类似,header参数是在应用skiprows之后应用的。

这个函数将总是返回一个DataFrame列表,否则它将失败,例如,它将不会返回一个空列表。

例如,

import pandas as pd
url = (
       "https://raw.githubusercontent.com/pandas-dev/pandas/master/"
        "pandas/tests/io/data/html/spam.html"
   )
dfs = pd.read_html(url)
print(dfs)

推荐阅读
cjavapy编程之路首页