Pandas read_html函数
阅读更多:Pandas 教程
在本文中,我们将介绍Pandas Library中的一个重要函数read_html。这个函数可以让你从HTML文件中读取表格数据,并将其变成Pandas DataFrame对象。Pandas DataFrame是一种二维表格数据结构,类似于电子表格软件中的工作表。
read_html的基本语法
Pandas的read_html函数可以从一个HTML文件中读取表格数据。函数的基本语法如下:
import pandas as pd
tables = pd.read_html(url or file)
其中,url是HTML文件的URL地址,file是文件路径。read_html函数会自动解析HTML文件中的表格,将其转换成Pandas DataFrame对象,并返回一个包含DataFrame对象的列表。如果HTML文件中包含多个表格,那么读取结果就是一个列表,列表中的每个元素是一个DataFrame对象。
示例代码
下面是一个示例代码,可以从HTML文件中读取表格数据,并将其打印到控制台:
import pandas as pd
# 从HTML文件中读取表格数据
url = 'http://www.nuforc.org/webreports/ndxevent.html'
tables = pd.read_html(url)
# 打印第一个表格
print(tables[0])
在上面的示例代码中,我们使用了Pandas的read_html函数,从http://www.nuforc.org/webreports/ndxevent.html这个URL地址读取了一个HTML文件中的所有表格。然后,我们打印了第一个表格。
输出的结果如下:
Date / Time City State Shape \
0 12/12/20 19:00 Middleburg FL Light
1 12/12/20 17:00 Middleburg FL Chevrons
2 12/12/20 09:30 Rocky Hill CT NaN
3 12/11/20 18:00 Bangor ME Light
4 12/11/20 05:20 Buffalo NY Light
... ... ... ... ...
13881 01/01/61 12:00 NaN NaN Disk
13882 01/01/60 18:00 Gatlinburg TN Fireball
13883 01/01/60 00:00 Telluride CO Disk
13884 01/01/58 22:00 Newport Beach CA Fireball
13885 01/01/34 22:00 Londonderry (UK/England) NaN Other
Duration Summary \
0 20 min Bright orange and red disc shaped object sight...
1 1 min V-shaped formation traveling south. Burnt out ...
2 5:30min Saw Dark Strange object clouds turns into a Gr...
3 2 hours Multiple star like object with strobing light ...
4 1 min. Green lights moving at high speeds and then fa...
... ... ...
13881 nan This object was in the January 1961 issue of N...
13882 1min Red/orange fireball seen on two consecutive da...
13883 nan My first UFO sighting, at camp outside of Tell...
13884 1min Newport Beach, CA. Disc with dome. 6:30 p.m. N...
13885 nan Green fire ball that falls out of the sky at ni
URL
0 http://www.nuforc.org/webreports/162/S162974.html
1 http://www.nuforc.org/webreports/162/S162973.html
2 http://www.nuforc.org/webreports/162/S162969.html
3 http://www.nuforc.org/webreports/162/S162977.html
4 http://www.nuforc.org/webreports/162/S162987.html
... ...
13881 http://www.nuforc.org/webreports/013/S13360.html
13882 http://www.nuforc.org/webreports/010/S10322.html
13883 http://www.nuforc.org/webreports/001/S01384.html
13884 http://www.nuforc.org/webreports/069/S69718.html
输出结果中,可以看到该表格包含6个列,分别是”Date/Time”,”City”,”State”,”Shape”,”Duration”以及”Summary”。其中,”Date/Time”列包含UFO事件的日期和时间信息,”City”和”State”列包含事件地点的城市和州信息,”Shape”列包含UFO的形状信息,”Duration”列包含事件持续时长,”Summary”列包含事件简要描述,”URL”列包含事件报告的网址链接。这个示例表格中共包含13886条记录。
读取HTML表格的附加参数
除了基本语法,Pandas的read_html函数还支持一些用于解析HTML表格的附加参数。
- header参数:指定解析表格时使用的表头。可以是数字、列表或None。如果是数字,表示从第几行开始认为是表头。如果是列表,列表中应该包含所有的表头单元格的内容。如果是None,默认使用第一行作为表头。
-
skiprows参数:指定要跳过的行数。可以是整数、列表或callable对象。
-
flavor参数:指定解析HTML表格的解析器。可以是“html5lib”,“lxml”或“bs4”之一。默认值是“html5lib”。
下面是一个示例代码,演示如何使用这些参数:
import pandas as pd
# 从HTML文件中读取表格数据,指定使用第2行作为表头,跳过第1行和第3行
url = 'http://www.nuforc.org/webreports/ndxevent.html'
tables = pd.read_html(url, header=1, skiprows=[0, 2])
# 打印第一个表格
print(tables[0])
在上面的示例代码中,我们使用header和skiprows参数,分别指定了表格的表头和要跳过的行数。最后,我们打印了第一个表格。
总结
在本文中,我们介绍了Pandas Library中的read_html函数,这个函数可以让我们方便地从HTML文件中读取表格数据,并将其转换为Pandas DataFrame对象。我们还学习了如何使用read_html的附加参数来定制表格的解析。希望本文能够对你掌握Pandas的数据处理能力有所帮助。