电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

Python讀取pdf表格寫入excel的方法

瀏覽:15日期:2022-06-29 13:18:40
背景

今天突然想到之前被要求做同性質銀行的數據分析。媽耶!十幾個銀行,每個銀行近5年的財務數據,而且財務報表一般都是 pdf 的,我們將 pdf 中表的數據一個個的拷貝到 excel 中,再借助 excel 去進行求和求平均等聚合函數操作,完事了還得把求出來的結果再統一 CV 到另一張表中,進行可視化分析…

當然,那時風流倜儻的 老Amy 還熟練的玩轉著 excel ,也是個秀兒~ 今天就思索著,如果當年我會 Python 是不是可以讓我成為班級最靚的崽!用技術占領高地,HHH,所以今天我來了,希望可以幫助大家解決同性質的問題。

開始學習叭避免CV大法

pdf 文件的表格的數據可以復制,但是這是一項非常繁瑣的事情。所以我首先考慮的是,Python 可否幫助我們高效且規(guī)范地讀取 pdf 中的表格數據。所以一頓的檢索,發(fā)現了一個比較優(yōu)質處理 pdf 的庫:pdfplumber,當然這個庫需要大家 pip install pdfplumber 去進行安裝。以及詳細使用可參考全球最大基友社區(qū):https://github.com/jsvine/pdfplumber

步驟: 導入 pdfplumber 庫 通過 pdfplumber.open() 函數 獲取 mt2018.pdf 文件對象 通過該 對象.pages 獲取 pdf 每頁的對象,截取我們需要的頁對象即可 通過 頁對象.extract_tables() 獲取表格數據(若需要獲取文本:頁對象.extract_text())

代碼實現:

import pdfplumber# 獲取 pdf 文件對象pdf_mt = pdfplumber.open('mt2018.pdf')# 因為我需要獲取的資產負債表在 51-53頁 但是索引從0開始 所以切片取 50-52即可for pdf_pg in pdf_mt.pages[50:53]: # 只提取當前頁表格數據 print(pdf_pg.extract_tables()) --------------------------------------------------------------------------結果比較多,截取一部分:[[[’項目’, ’附注’, ’期末余額’, ’期初余額’], [’流動資產:’, ’’, ’’, ’’], [’貨幣資金’, ’1’, ’112,074,791,420.06’, ’87,868,869,913.34’], [’結算備付金’, ’’, ’’, ’’], [’拆出資金’, ’’, ’’, ’’], [’以公允價值計量且其變動計入當n期損益的金融資產’, ’’, ’’, ’’], [’衍生金融資產’, ’’, ’’, ’’], [’應收票據及應收賬款’, ’2’, ’563,739,710.00’, ’1,221,706,039.00’]]]將完整表保存到 csv 文件中

我們發(fā)現,返回的數據集是一個三維的列表。那么在我們平時處理的 excel 表格數據(行與列)都是二維的數據。那么,這多出的一維是什么呢?其實就是我們的夜[頁]~ 再來一個循環(huán)取出二維數據進行保存即可

for pdf_pg in pdf_mt.pages[50:53]: for pdf_tb in pdf_pg.extract_tables(): print(pdf_tb) ------------------------------------------------------------------------------結果比較多,截取一部分:[[’項目’, ’附注’, ’期末余額’, ’期初余額’], [’流動資產:’, ’’, ’’, ’’], [’貨幣資金’, ’1’, ’112,074,791,420.06’, ’87,868,869,913.34’], [’結算備付金’, ’’, ’’, ’’], [’拆出資金’, ’’, ’’, ’’], [’以公允價值計量且其變動計入當n期損益的金融資產’, ’’, ’’, ’’], [’衍生金融資產’, ’’, ’’, ’’], [’應收票據及應收賬款’, ’2’, ’563,739,710.00’, ’1,221,706,039.00’]]

但是,真的那么簡單嗎?這時,我們就需要細品我們的 pdf 了,如下圖

Python讀取pdf表格寫入excel的方法

我們發(fā)現,一張完整的資產負債表分布在多頁上。也就是說,每一頁的里面的表格數據都是一個三維的列表,所以我們保存數據的時候,需要讓其有共同的表頭(列索引),并且進行拼接。

那必須就要強推我們的 pandas 了,pandas.DataFrame() 非常完美的創(chuàng)建表格式的二維數組,以及指定列索引(表頭)。包括可以直接 使用 df.append() 進行共同表頭數據的堆疊拼接。

import pdfplumberimport pandas as pdimport numpy as np# 創(chuàng)建僅有表頭的 dataframe 數組pdf_df = pd.DataFrame(columns=[’項目’, ’附注’, ’期末余額’, ’期初余額’])# 獲取 pdf 文件對象pdf_mt = pdfplumber.open('mt2018.pdf')# 因為我需要獲取的資產負債表在 51-53頁 但是索引從0開始 所以切片取 50-52即可for pdf_pg in pdf_mt.pages[50:53]: # 獲取二維列表 for pdf_tb in pdf_pg.extract_tables():# 將其拼接 pdf_df = pdf_df.append(pd.DataFrame(np.array(pdf_tb),columns=[’項目’, ’附注’, ’期末余額’, ’期初余額’]))# 顯示后五條pdf_df.tail()

dataframe數據輸出如下:

Python讀取pdf表格寫入excel的方法

pdf 53頁如下:

Python讀取pdf表格寫入excel的方法

實際上,大家也發(fā)現,我們獲取的最后一頁的數據還有一部分是另一個表的,所以我們需要將其去除,并且有序的設置行索引,再保存到 csv 文件中。

# 去除后三行pdf_df = pdf_df.iloc[:-3,:]# 重置索引pdf_df = pdf_df.reset_index(drop=True)# 保存到 csv 文件中pdf_df.to_csv('mt_2018.csv')

Python讀取pdf表格寫入excel的方法

當然,今天就到這里,其它的需求我們下次給大家完善。大家也可以自己將代碼封裝成函數,這樣就可以實現傳入 pdf文件名稱、頁數以及保存的文件名來復用代碼。如果大家再掌握了 pandas 就可以根據自己的需求,對各個表格數據進行處理。再結合 seaborn 繪圖可視化,完爆 excel ~ 快學習起來叭,GOGOGO

以上就是Python讀取pdf表格寫入excel的方法的詳細內容,更多關于Python讀取pdf表格寫入excel的資料請關注好吧啦網其它相關文章!

標簽: python
相關文章:
主站蜘蛛池模板: 罗茨真空机组,立式无油往复真空泵,2BV水环真空泵-力侨真空科技 | 并网柜,汇流箱,电控设备,中高低压开关柜,电气电力成套设备,PLC控制设备订制厂家,江苏昌伟业新能源科技有限公司 | 模温机-油温机-电加热导热油炉-工业冷水机「欧诺智能」 | led全彩屏-室内|学校|展厅|p3|户外|会议室|圆柱|p2.5LED显示屏-LED显示屏价格-LED互动地砖屏_蕙宇屏科技 | 安徽净化板_合肥岩棉板厂家_玻镁板厂家_安徽科艺美洁净科技有限公司 | AR开发公司_AR增强现实_AR工业_AR巡检|上海集英科技 | 气动隔膜泵-电动隔膜泵-循环热水泵-液下排污/螺杆/管道/化工泵「厂家」浙江绿邦 | 代理记账_公司起名核名_公司注册_工商注册-睿婕实业有限公司 | 印刷人才网 印刷、包装、造纸,中国80%的印刷企业人才招聘选印刷人才网! | 法兰连接型电磁流量计-蒸汽孔板节流装置流量计-北京凯安达仪器仪表有限公司 | 加气混凝土砌块设备,轻质砖设备,蒸养砖设备,新型墙体设备-河南省杜甫机械制造有限公司 | 品牌设计_VI设计_电影海报设计_包装设计_LOGO设计-Bacross新越品牌顾问 | 尊享蟹太太美味,大闸蟹礼卡|礼券|礼盒在线预订-蟹太太官网 | 超声波分散机-均质机-萃取仪-超声波涂料分散设备-杭州精浩 | 深圳装修_店面装修设计_餐厅设计_装修全包价格-尚泰装饰设计 | 西点培训学校_法式西点培训班_西点师培训_西点蛋糕培训-广州烘趣西点烘焙培训学院 | 加气混凝土砌块设备,轻质砖设备,蒸养砖设备,新型墙体设备-河南省杜甫机械制造有限公司 | 广州企亚 - 数码直喷、白墨印花、源头厂家、透气无手感方案服务商! | 起好名字_取个好名字_好名网免费取好名在线打分 | 冷热冲击试验箱_温度冲击试验箱价格_冷热冲击箱排名_林频厂家 | 杜康白酒加盟_杜康酒代理_杜康酒招商加盟官网_杜康酒厂加盟总代理—杜康酒神全国运营中心 | 橡胶接头_橡胶软接头_套管伸缩器_管道伸缩器厂家-巩义市远大供水材料有限公司 | 24位ADC|8位MCU-芯易德科技有限公司 | 南方珠江-南方一线电缆-南方珠江科技电缆-南方珠江科技有限公司 南汇8424西瓜_南汇玉菇甜瓜-南汇水蜜桃价格 | 德州万泰装饰 - 万泰装饰装修设计软装家居馆 | 无机纤维喷涂棉-喷涂棉施工工程-山东华泉建筑工程有限公司▲ | 超高频感应加热设备_高频感应电源厂家_CCD视觉检测设备_振动盘视觉检测设备_深圳雨滴科技-深圳市雨滴科技有限公司 | 小区健身器材_户外健身器材_室外健身器材_公园健身路径-沧州浩然体育器材有限公司 | 铣刨料沥青破碎机-沥青再生料设备-RAP热再生混合料破碎筛分设备 -江苏锡宝重工 | 安徽成考网-安徽成人高考网 | 汽车润滑油厂家-机油/润滑油代理-高性能机油-领驰慧润滑科技(河北)有限公司 | ★店家乐|服装销售管理软件|服装店收银系统|内衣店鞋店进销存软件|连锁店管理软件|收银软件手机版|会员管理系统-手机版,云版,App | 湖南档案密集架,智能,物证,移动,价格-湖南档案密集架厂家 | 膏剂灌装旋盖机-眼药水灌装生产线-西林瓶粉剂分装机-南通博琅机械科技 | 拉力机-万能试验机-材料拉伸试验机-电子拉力机-拉力试验机厂家-冲击试验机-苏州皖仪实验仪器有限公司 | 健身器材-健身器材厂家专卖-上海七诚健身器材有限公司 | ZHZ8耐压测试仪-上海胜绪电气有限公司 | 粤丰硕水性环氧地坪漆-防静电自流平厂家-环保地坪涂料代理 | 哈希余氯测定仪,分光光度计,ph在线监测仪,浊度测定仪,试剂-上海京灿精密机械有限公司 | 免费分销系统 — 分销商城系统_分销小程序开发 -【微商来】 | 聚丙烯酰胺PAM-聚合氯化铝PAC-絮凝剂-河南博旭环保科技有限公司 巨野电机维修-水泵维修-巨野县飞宇机电维修有限公司 |