大家好,我是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表格時的參數設置補充