亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

 更新時間:2021年01月22日 11:19:13   作者:一只闊愛的程序媛  
這篇文章主要介紹了Python讀取pdf表格寫入excel的方法,幫助大家更好的利用python處理excel表格,感興趣的朋友可以了解下

背景

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

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

開始學(xué)習(xí)叭

避免CV大法

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

步驟:

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

代碼實現(xiàn):

import pdfplumber


# 獲取 pdf 文件對象
pdf_mt = pdfplumber.open("mt2018.pdf")

# 因為我需要獲取的資產(chǎn)負(fù)債表在 51-53頁 但是索引從0開始 所以切片取 50-52即可
for pdf_pg in pdf_mt.pages[50:53]:
  
  # 只提取當(dāng)前頁表格數(shù)據(jù) 
  print(pdf_pg.extract_tables())
  
  
--------------------------------------------------------------------------
結(jié)果比較多,截取一部分:
[[['項目', '附注', '期末余額', '期初余額'], ['流動資產(chǎn):', '', '', ''], ['貨幣資金', '1', '112,074,791,420.06', '87,868,869,913.34'], ['結(jié)算備付金', '', '', ''], ['拆出資金', '', '', ''], ['以公允價值計量且其變動計入當(dāng)\n期損益的金融資產(chǎn)', '', '', ''], ['衍生金融資產(chǎn)', '', '', ''], ['應(yīng)收票據(jù)及應(yīng)收賬款', '2', '563,739,710.00', '1,221,706,039.00']]]

將完整表保存到 csv 文件中

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

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

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

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

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

import pdfplumber
import pandas as pd
import numpy as np

# 創(chuàng)建僅有表頭的 dataframe 數(shù)組
pdf_df = pd.DataFrame(columns=['項目', '附注', '期末余額', '期初余額'])

# 獲取 pdf 文件對象
pdf_mt = pdfplumber.open("mt2018.pdf")

# 因為我需要獲取的資產(chǎn)負(fù)債表在 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數(shù)據(jù)輸出如下:

pdf 53頁如下:

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

# 去除后三行
pdf_df = pdf_df.iloc[:-3,:]

# 重置索引
pdf_df = pdf_df.reset_index(drop=True)

# 保存到 csv 文件中
pdf_df.to_csv("mt_2018.csv")

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

以上就是Python讀取pdf表格寫入excel的方法的詳細(xì)內(nèi)容,更多關(guān)于Python讀取pdf表格寫入excel的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • pip安裝指定版本的tensorflow的實現(xiàn)

    pip安裝指定版本的tensorflow的實現(xiàn)

    本文介紹了如何使用pip安裝指定版本的TensorFlow,包括CPU版本和GPU版本的安裝方法,同時,文中也提到了使用阿里國內(nèi)鏡像源加速下載的方法,以及在安裝GPU版本時需要檢查CUDA和cuDNN的兼容性的注意事項,感興趣的可以了解一下
    2024-10-10
  • python中查找excel某一列的重復(fù)數(shù)據(jù) 剔除之后打印

    python中查找excel某一列的重復(fù)數(shù)據(jù) 剔除之后打印

    python查找excel某一列的重復(fù)數(shù)據(jù),剔除之后打印,供大家學(xué)習(xí)參考
    2013-02-02
  • 詳解Python中RegEx在數(shù)據(jù)處理中的應(yīng)用

    詳解Python中RegEx在數(shù)據(jù)處理中的應(yīng)用

    正則表達(dá)式(Regular?Expressions,簡稱?RegEx)是一種強大的文本匹配和搜索工具,它在數(shù)據(jù)處理、文本解析和字符串操作中發(fā)揮著關(guān)鍵作用,下面就跟隨小編一起來了解一下RegEx的具體使用吧
    2024-01-01
  • Python基礎(chǔ)練習(xí)之用戶登錄實現(xiàn)代碼分享

    Python基礎(chǔ)練習(xí)之用戶登錄實現(xiàn)代碼分享

    這篇文章主要介紹了Python基礎(chǔ)練習(xí)之用戶登錄實現(xiàn)代碼分享,還是比較不錯的,這里分享給大家,供需要的朋友參考。
    2017-11-11
  • Python+Opencv實現(xiàn)數(shù)字識別的示例代碼

    Python+Opencv實現(xiàn)數(shù)字識別的示例代碼

    這篇文章主要介紹了Python+Opencv實現(xiàn)數(shù)字識別的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • Python基于Pytorch的特征圖提取實例

    Python基于Pytorch的特征圖提取實例

    在利用深度學(xué)習(xí)進(jìn)行分類時,有時需要對中間的特征圖進(jìn)行提取操作,下面這篇文章主要給大家介紹了關(guān)于Python基于Pytorch的特征圖提取的相關(guān)資料,需要的朋友可以參考下
    2022-03-03
  • Pycharm基本操作及調(diào)試代碼

    Pycharm基本操作及調(diào)試代碼

    最近天氣狂熱暴躁,很難靜下心來學(xué)習(xí)啦,于是給大家整理一些python開發(fā)工具pycharm基本操作及調(diào)試代碼吧,感興趣的朋友跟隨小編一起看看吧
    2021-06-06
  • Pytorch使用visdom可視化問題

    Pytorch使用visdom可視化問題

    這篇文章主要介紹了Pytorch使用visdom可視化問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • python繪制散點圖和折線圖的方法

    python繪制散點圖和折線圖的方法

    這篇文章主要為大家詳細(xì)介紹了python繪制散點圖和折線圖的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • 一篇文章帶你了解python標(biāo)準(zhǔn)庫--random模塊

    一篇文章帶你了解python標(biāo)準(zhǔn)庫--random模塊

    這篇文章主要給大家介紹了關(guān)于Python中random模塊常用方法的使用教程,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-08-08

最新評論