大家好,我是Peter~
在很多情况下,我们都需要处理PDF格式的文件。尤其当我们遇到PDF表格数据需要进行提取,真的是一个令人头疼的问题。
因为PDF文件不能像Word那样直接复制,即使复制了再黏贴也可能会出现格式排版错乱甚至乱码问题。如何从一个PDF文件提取出表格数据?本文提供两个解决方案:
首先提供的一种方法是从文字 PDF 中提取表格信息的工具:Camelot,它能够直接将大部分表格转换为 Pandas 的 Dataframe。
更多的详细信息,请参考项目地址: https://github.com/camelot-dev/camelot
camelot的安装有多种方式。如果有报错,网上一般有解决方式:
1、通过conda安装
2、使用pip进行安装
3、通过GitHub进行安装
首先将项目复制到本地:
然后进入文件中进行安装:
下面通过一个案例来讲解如何使用camelot。假设我们现在有一个只有一页的PDF文件test.pdf:
1、先读取文件
导出成csv格式的数据(方式1)
查看tables的相关信息:
导出方式2:
将数据转换成DataFrame:
tabula的功能比camelot更加强大,可以同时对多个表格数据进行提取。项目的具体地址请参考: https://github.com/chezou/tabula-py
tabula的安装是非常简单的:
安装之后检验这个库是否安装成功:
通过tabula这个库来读取PDF文件:
然后我们发现列表中唯一的一个元素就是dataframe:
将读取到的数据输出成CSV格式的文件:
上面读取的PDF文件是比较简单的,只有一页,而且刚好是一个很标准的表格形式的数据,下面看一个比较复杂的例子:
下面是第一页,第一列可以看成是索引:
在第二页中有两份表格,而且中间有很多的空白行:
第三页的数据比较标准:
这3页是在同一个PDF文件中,这3页是在同一个PDF文件中,这3页是在同一个PDF文件中
上面的红色提示中我们看到:当没有指定pages参数的时候,只会默认读取第一页的数据,所以列表的长度为1。
转成dataframe后将原来的索引变成新的一列 (部分数据)
通过pages来读取全部数据:
通过指定pages="all":
同时获取两个表格的数据:
通过area参数来指定:
删除在读取的表格中我们不需要的字段信息
可以将得到的数据输出成不同格式的文件,以json格式为例:
我们可以看到
‘贰’ 谁有利用python进行数据分析 pdf 的中文 完整版的,求发一下
链接:
提取码:z8fs复制这段内容后打开网络网盘手机App,操作更方便哦
作品简介:
Python由荷兰数学和计算机科学研究学会的GuidovanRossum于1990年代初设计,作为一门叫做ABC语言的替代品。
‘叁’ python数据分析与应用-Python数据分析与应用 PDF 内部全资料版
给大家带来的一篇关于Python数据相关的电子书资源,介绍了关于Python方面的内容,本书是由人民邮电出版社出版,格式为PDF,资源大小281 MB,黄红梅 张良均编写,目前豆瓣、亚马逊、当当、京东等电子书综合评分为:7.8。
内容介绍
目录
第1章Python数据分析概述1
任务1.1认识数据分析1
1.1.1掌握数据分析的概念2
1.1.2掌握数据分析的流程2
1.1.3了解数据分析应用场景4
任务1.2熟悉Python数据分析的工具5
1.2.1了解数据分析常用工具6
1.2.2了解Python数据分析的优势7
1.2.3了解Python数据分析常用类库7
任务1.3安装Python的Anaconda发行版9
1.3.1了解Python的Anaconda发行版9
1.3.2在Windows系统中安装Anaconda9
1.3.3在Linux系统中安装Anaconda12
任务1.4掌握Jupyter Notebook常用功能14
1.4.1掌握Jupyter Notebook的基本功能14
1.4.2掌握Jupyter Notebook的高 级功能16
小结19
课后习题19
第2章NumPy数值计算基础21
任务2.1掌握NumPy数组对象ndarray21
2.1.1创建数组对象21
2.1.2生成随机数27
2.1.3通过索引访问数组29
2.1.4变换数组的形态31
任务2.2掌握NumPy矩阵与通用函数34
2.2.1创建NumPy矩阵34
2.2.2掌握ufunc函数37
任务2.3利用NumPy进行统计分析41
2.3.1读/写文件41
2.3.2使用函数进行简单的统计分析44
2.3.3任务实现48
小结50
实训50
实训1创建数组并进行运算50
实训2创建一个国际象棋的棋盘50
课后习题51
第3章Matplotlib数据可视化基础52
任务3.1掌握绘图基础语法与常用参数52
3.1.1掌握pyplot基础语法53
3.1.2设置pyplot的动态rc参数56
任务3.2分析特征间的关系59
3.2.1绘制散点图59
3.2.2绘制折线图62
3.2.3任务实现65
任务3.3分析特征内部数据分布与分散状况68
3.3.1绘制直方图68
3.3.2绘制饼图70
3.3.3绘制箱线图71
3.3.4任务实现73
小结77
实训78
实训1分析1996 2015年人口数据特征间的关系78
实训2分析1996 2015年人口数据各个特征的分布与分散状况78
课后习题79
第4章pandas统计分析基础80
任务4.1读/写不同数据源的数据80
4.1.1读/写数据库数据80
4.1.2读/写文本文件83
4.1.3读/写Excel文件87
4.1.4任务实现88
任务4.2掌握DataFrame的常用操作89
4.2.1查看DataFrame的常用属性89
4.2.2查改增删DataFrame数据91
4.2.3描述分析DataFrame数据101
4.2.4任务实现104
任务4.3转换与处理时间序列数据107
4.3.1转换字符串时间为标准时间107
4.3.2提取时间序列数据信息109
4.3.3加减时间数据110
4.3.4任务实现111
任务4.4使用分组聚合进行组内计算113
4.4.1使用groupby方法拆分数据114
4.4.2使用agg方法聚合数据116
4.4.3使用apply方法聚合数据119
4.4.4使用transform方法聚合数据121
4.4.5任务实现121
任务4.5创建透视表与交叉表123
4.5.1使用pivot_table函数创建透视表123
4.5.2使用crosstab函数创建交叉表127
4.5.3任务实现128
小结130
实训130
实训1读取并查看P2P网络贷款数据主表的基本信息130
实训2提取用户信息更新表和登录信息表的时间信息130
实训3使用分组聚合方法进一步分析用户信息更新表和登录信息表131
实训4对用户信息更新表和登录信息表进行长宽表转换131
课后习题131
第5章使用pandas进行数据预处理133
任务5.1合并数据133
5.1.1堆叠合并数据133
5.1.2主键合并数据136
5.1.3重叠合并数据139
5.1.4任务实现140
任务5.2清洗数据141
5.2.1检测与处理重复值141
5.2.2检测与处理缺失值146
5.2.3检测与处理异常值149
5.2.4任务实现152
任务5.3标准化数据154
5.3.1离差标准化数据154
5.3.2标准差标准化数据155
5.3.3小数定标标准化数据156
5.3.4任务实现157
任务5.4转换数据158
5.4.1哑变量处理类别型数据158
5.4.2离散化连续型数据160
5.4.3任务实现162
小结163
实训164
实训1插补用户用电量数据缺失值164
实训2合并线损、用电量趋势与线路告警数据164
实训3标准化建模专家样本数据164
课后习题165
第6章使用scikit-learn构建模型167
任务6.1使用sklearn转换器处理数据167
6.1.1加载datasets模块中的数据集167
6.1.2将数据集划分为训练集和测试集170
6.1.3使用sklearn转换器进行数据预处理与降维172
6.1.4任务实现174
任务6.2构建并评价聚类模型176
6.2.1使用sklearn估计器构建聚类模型176
6.2.2评价聚类模型179
6.2.3任务实现182
任务6.3构建并评价分类模型183
6.3.1使用sklearn估计器构建分类模型183
6.3.2评价分类模型186
6.3.3任务实现188
任务6.4构建并评价回归模型190
6.4.1使用sklearn估计器构建线性回归模型190
6.4.2评价回归模型193
6.4.3任务实现194
小结196
实训196
实训1使用sklearn处理wine和wine_quality数据集196
实训2构建基于wine数据集的K-Means聚类模型196
实训3构建基于wine数据集的SVM分类模型197
实训4构建基于wine_quality数据集的回归模型197
课后习题198
第7章航空公司客户价值分析199
任务7.1了解航空公司现状与客户价值分析199
7.1.1了解航空公司现状200
7.1.2认识客户价值分析201
7.1.3熟悉航空客户价值分析的步骤与流程201
任务7.2预处理航空客户数据202
7.2.1处理数据缺失值与异常值202
7.2.2构建航空客户价值分析关键特征202
7.2.3标准化LRFMC模型的5个特征206
7.2.4任务实现207
任务7.3使用K-Means算法进行客户分群209
7.3.1了解K-Means聚类算法209
7.3.2分析聚类结果210
7.3.3模型应用213
7.3.4任务实现214
小结215
实训215
实训1处理信用卡数据异常值215
实训2构造信用卡客户风险评价关键特征217
实训3构建K-Means聚类模型218
课后习题218
第8章财政收入预测分析220
任务8.1了解财政收入预测的背景与方法220
8.1.1分析财政收入预测背景220
8.1.2了解财政收入预测的方法222
8.1.3熟悉财政收入预测的步骤与流程223
任务8.2分析财政收入数据特征的相关性223
8.2.1了解相关性分析223
8.2.2分析计算结果224
8.2.3任务实现225
任务8.3使用Lasso回归选取财政收入预测的关键特征225
8.3.1了解Lasso回归方法226
8.3.2分析Lasso回归结果227
8.3.3任务实现227
任务8.4使用灰色预测和SVR构建财政收入预测模型228
8.4.1了解灰色预测算法228
8.4.2了解SVR算法229
8.4.3分析预测结果232
8.4.4任务实现234
小结236
实训236
实训1求取企业所得税各特征间的相关系数236
实训2选取企业所得税预测关键特征237
实训3构建企业所得税预测模型237
课后习题237
第9章家用热水器用户行为分析与事件识别239
任务9.1了解家用热水器用户行为分析的背景与步骤239
9.1.1分析家用热水器行业现状240
9.1.2了解热水器采集数据基本情况240
9.1.3熟悉家用热水器用户行为分析的步骤与流程241
任务9.2预处理热水器用户用水数据242
9.2.1删除冗余特征242
9.2.2划分用水事件243
9.2.3确定单次用水事件时长阈值244
9.2.4任务实现246
任务9.3构建用水行为特征并筛选用水事件247
9.3.1构建用水时长与频率特征248
9.3.2构建用水量与波动特征249
9.3.3筛选候选洗浴事件250
9.3.4任务实现251
任务9.4构建行为事件分析的BP神经网络模型255
9.4.1了解BP神经网络算法原理255
9.4.2构建模型259
9.4.3评估模型260
9.4.4任务实现260
小结263
实训263
实训1清洗运营商客户数据263
实训2筛选客户运营商数据264
实训3构建神经网络预测模型265
课后习题265
附录A267
附录B270
参考文献295
学习笔记
Jupyter Notebook(此前被称为 IPython notebook)是一个交互式笔记本,支持运行 40 多种编程语言。 Jupyter Notebook 的本质是一个 Web 应用程序,便于创建和共享文学化程序文档,支持实时代码,数学方程,可视化和 markdown。 用途包括:数据清理和转换,数值模拟,统计建模,机器学习等等 。 定义 (推荐学习:Python视频教程) 用户可以通过电子邮件,Dropbox,GitHub 和 Jupyter Notebook Viewer,将 Jupyter Notebook 分享给其他人。 在Jupyter Notebook 中,代码可以实时的生成图像,视频,LaTeX和javaScript。 使用 数据挖掘领域中最热门的比赛 Kaggle 里的资料都是Jupyter 格式 。 架构 Jupyter组件 Jupyter包含以下组件: Jupyter Notebook 和 ……
本文实例讲述了Python实现的微信好友数据分析功能。分享给大家供大家参考,具体如下: 这里主要利用python对个人微信好友进行分析并把结果输出到一个html文档当中,主要用到的python包为 itchat , pandas , pyecharts 等 1、安装itchat 微信的python sdk,用来获取个人好友关系。获取的代码 如下: import itchatimport pandas as pdfrom pyecharts import Geo, Baritchat.login()friends = itchat.get_friends(update=True)[0:]def User2dict(User): User_dict = {} User_dict["NickName"] = User["NickName"] if User["NickName"] else "NaN" User_dict["City"] = User["City"] if User["City"] else "NaN" User_dict["Sex"] = User["Sex"] if User["Sex"] else 0 User_dict["Signature"] = User["Signature"] if User["Signature"] else "NaN" ……
基于微信开放的个人号接口python库itchat,实现对微信好友的获取,并对省份、性别、微信签名做数据分析。 效果: 直接上代码,建三个空文本文件stopwords.txt,newdit.txt、unionWords.txt,下载字体simhei.ttf或删除字体要求的代码,就可以直接运行。 #wxfriends.py 2018-07-09import itchatimport sysimport pandas as pdimport matplotlib.pyplot as pltplt.rcParams['font.sans-serif']=['SimHei']#绘图时可以显示中文plt.rcParams['axes.unicode_minus']=False#绘图时可以显示中文import jiemport jieba.posseg as psegfrom scipy.misc import imreadfrom wordcloud import WordCloudfrom os import path#解决编码问题non_bmp_map = dict.fromkeys(range(0x10000, sys.maxunicode + 1), 0xfffd) #获取好友信息def getFriends():……
Python数据分析之双色球基于线性回归算法预测下期中奖结果示例
本文实例讲述了Python数据分析之双色球基于线性回归算法预测下期中奖结果。分享给大家供大家参考,具体如下: 前面讲述了关于双色球的各种算法,这里将进行下期双色球号码的预测,想想有些小激动啊。 代码中使用了线性回归算法,这个场景使用这个算法,预测效果一般,各位可以考虑使用其他算法尝试结果。 发现之前有很多代码都是重复的工作,为了让代码看的更优雅,定义了函数,去调用,顿时高大上了 #!/usr/bin/python# -*- coding:UTF-8 -*-#导入需要的包import pandas as pdimport numpy as npimport matplotlib.pyplot as pltimport operatorfrom sklearn import datasets,linear_modelfrom sklearn.linear_model import LogisticRegression#读取文件d……
以上就是本次介绍的Python数据电子书的全部相关内容,希望我们整理的资源能够帮助到大家,感谢大家对鬼鬼的支持。
注·获取方式:私信(666)
‘肆’ 用python批量提取pdf的表格数据,保存为excel
pdfplumber 是一个开源 python 工具库-,可以方便地获取 pdf 的各种信息,包括文本、表格、图表、尺寸等。完成我们本文的需求,主要使用 pdfplumber 提取 pdf 表格数据。
python 中还有很多库可以处理 pdf,比如 PyPDF2、pdfminer 等,本文选择pdfplumber 的原因在于能轻松访问有关 PDF 的所有详细信息,包括作者、来源、日期等,并且用于提取文本和表格的方法灵活可定制。大家可以根据手头数据需求,再去解锁 pdfplumber 的更多用法。
‘伍’ Python解析PDF表格——PDFPlumber vs Camelot
题图来自 Camelot: List o’ 10 Intriguing Mythical Places
为获取LEED认证项目的评分表明细,可念带以从USGBC的项目页面上爬取,或者从pdf格式的项目评分表中解析得到。以 重庆某LEED EM:OB v2009 Gold项目 为例,USGBC上公布的 LEED项目得分表 其格式并不统一,利用XPath爬取后需要进一步清洗处理。相对而言,LEED项目所对应的 项目评分表PDF文件 的数据更为规范完整。因此考虑尝试解析出PDF文件中的表格,以便后续分析。
Python 处理PDF文件的程序包,pdfminer、tabula、型高缺pdfplumber、camelot……查询资料表明,似乎普遍认为pdfminer的效果不怎么好,而tabula需要java支卜辩持 ,想偷懒于是只试了pdfplumber和camelot。
安装过程不赘述,直接来看运行结果。
pdfplumber无法直接解析出Scorecard.pdf文件中的表格,但实际上要解决此问题也并非难事。调整下思路,可先解析出pdf文件中的文本,让后通过分列来得到表格。
利用pdfplumber的extract_text()命令可解析出pdf文件中的文本,但由于本次需要解析的得分表pdf文件的排版的原因,左右两个表格的文本行并未完全对齐,因此如果直接解析完整页面上的文本的话,文字会出错。先用corp()命令指定识别范围,然后再extract_text(),识别得到的文本列表如下所示。
对于类似本例中Scorecard.pdf表格排版有错位的情况,也可以按照表格在页面中所处的位置,指定表格识别的范围。所用到的指令:camelot.plot()可以绘制出页面的略图,table_area参数可以指定表格识别的范围。
又及,Camelot原来是亚瑟王和圆桌骑士们的宫殿所在地,和Asgard的Valhalla一样,也是传说中的圣域。搜索camelot程序安装包时无意中学到的,涨知识了。
[1] Python:解析PDF文本及表格——pdfminer、tabula、pdfplumber 的用法及对比
[2] 用Python提取pdf文件中的表格数据
[3] python读取pdf文件
[4] Github: pdfplumber
[5] Camelot: PDF Table Extraction for Humans
[6] ImageMagick Installation
[7] ImageMagick之PDF转换成图片(image)
[8] LEED 2009 for Existing Buildings: Operations & Maintenance
[9] Camelot - Wikipedia
[10] List o’ 10 Intriguing Mythical Places
[11] Camelot识别pdf表格时的参数设置补充