• 最新论文
  • 2020航空食品展|带你了解上半年猪肉进口量 2020航空食品展|带你了解上半年猪肉进口量 2020年天津市十二重点中学高三毕业班联考一答案及试题汇总 南方高温“团灭” 北方反而要更热了?! 大爆冷!混双头号种子2:3出局,张本智和0:3惨遭一轮游 9月1日起湖南施行建筑工人实名制管理 作为多项监管参考 一声巨响!醉酒乘客突然倒地 多亏他们悉心照料 Python骚操作,提取pdf文件中的表格数据 一声巨响!醉酒乘客突然倒地 多亏他们悉心照料 一声巨响!醉酒乘客突然倒地 多亏他们悉心照料 Python骚操作,提取pdf文件中的表格数据 恒盛地产:半年亏损13亿元,资本负债比连升四年至425% 陈宏教授:肥胖糖尿病的医学营养干预 | CSE2019
  • 推荐论文
  • 2020航空食品展|带你了解上半年猪肉进口量 2020航空食品展|带你了解上半年猪肉进口量 2020年天津市十二重点中学高三毕业班联考一答案及试题汇总 南方高温“团灭” 北方反而要更热了?! 大爆冷!混双头号种子2:3出局,张本智和0:3惨遭一轮游 9月1日起湖南施行建筑工人实名制管理 作为多项监管参考 一声巨响!醉酒乘客突然倒地 多亏他们悉心照料 Python骚操作,提取pdf文件中的表格数据 一声巨响!醉酒乘客突然倒地 多亏他们悉心照料 一声巨响!醉酒乘客突然倒地 多亏他们悉心照料 Python骚操作,提取pdf文件中的表格数据 恒盛地产:半年亏损13亿元,资本负债比连升四年至425% 陈宏教授:肥胖糖尿病的医学营养干预 | CSE2019
  • 热门标签
  • 日期归档
  • Python骚操作,提取pdf文件中的表格数据

    来源:www.nwovbc.com 发布时间:2019-09-19

    在实际研究中,我们经常需要获取大量数据,并且大部分数据以pdf形式呈现,例如公司的年度报告,上市公告等。面对如此多的数据表,显然不建议使用手动复制和粘贴。那么我们如何才能有效地提取pdf文件中的表格数据呢?

    Python提供了许多用于pdf表识别的库,例如camelot,tabula,pdfplumber等。总而言之,pdfplumber库表现更好,并提取完整的,相对标准的表格。因此,这条推文还介绍了pdfplumber库在pdf表提取中的作用。

    作为一个功能强大的pdf文件解析工具,pdfplumber库可以快速将pdf文档转换为易于处理的txt文件,并输出包含字符,页面,页码等的pdf文档,以及页面可视化。在使用pdfplumber库之前,需要先安装它,即在cmd命令行中输入它:

    pip install pdfplumber

    pdfplumber库提供了两个pdf表提取函数,extract_tables()和.extract_table(),它们在两个函数的结果上有所不同。为了示范,我们的网站以pdf格式下载了一份短期融资券主要信用评级报告。任意选择一个表,界面如下:

    Python操作,在pdf文件中提取表数据!

    接下来,我们简要分析两种提取模式之间的结果差异。

    (1).extract_tables( )

    它可以输出页面中的所有表,并返回一个嵌套列表,其结构级别为表→行→单元格。此时,页面上的整个表放在一个大的列表中,原始表中的行组成了大列表中的各个子列表。要输出单个外部列表元素,您将获得原始表中相同行元素的列表。例如,我们执行以下过程:

    Python操作,在pdf文件中提取表数据!

    输出:

    Python操作,在pdf文件中提取表数据!

    (2).extract_table( )

    返回结构级别为row→cell的多个独立列表。如果页面中有多个具有相同行数的表,则默认输出顶部表;否则,只输出一个具有最大行数的表。此时,表的每一行都被视为一个单独的列表,列表中的每个元素都是原始表的每个单元格的内容。如果需要输出元素,则会获得特定值或字符串。如下:

    Python操作,在pdf文件中提取表数据!

    输出:

    Python操作,在pdf文件中提取表数据!

    在此基础上,我们详细介绍了如何从pdf文件中提取表格数据。其中一个想法是将提取的列表视为字符串。使用Python的正则表达式re模块进行字符串处理后,将其保存为由标准英语逗号分隔并由Excel识别的csv格式文件。执行以下操作:

    Python操作,在pdf文件中提取表数据!

    输出:

    Python操作,在pdf文件中提取表数据!

    尽管可以获得完整的表格数据,但这种方法相对难以理解,并且在处理不规则结构的表时容易出错。 pdfplumber库提取的表数据是一个整齐的列表结构,包含数字和字符串等数据类型。因此,我们可以调用pandas库下的DataFrame()函数将列表转换为可以直接导出到Excel的DataFrame数据结构。 DataFrame的基本构造函数如下:

    DataFrame([data,index, columns])

    三个参数data,index和columns分别表示创建的对象,行索引和列索引。可以从二维ndarray对象,列表,字典,元组等创建DataFrame类型。本推文中的数据是指整个pdf表格,提取程序如下:

    Python操作,在pdf文件中提取表数据!

    其中table [1:]表示为DataFrame对象创建选择了整个表,columns=table [0]表示该表的第一行元素用作列变量名,并且未创建行索引。输出Excel表格如下:

    Python操作,在pdf文件中提取表数据!

    通过上述简单程序,我们提取了完整的pdf表格。但是,应该注意的是,面对不规则的表数据提取,创建DataFrame对象的方法可能仍然是错误的,并且有必要检查实际操作。

    友情链接: