導航:首頁 > 數據處理 > python如何將數據輸出為表格形式

python如何將數據輸出為表格形式

發布時間:2023-01-18 07:10:12

A. Python利器:如何處理PDF表格數據

大家好,我是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格式為例:

我們可以看到

B. 如何通過python快速輸出資料庫數據到excel

操作如下:
1.首先在mysql管理工具上面新建一個表,設置表中的欄位。
2.使用的mysql管理工具是navicat
for
mysql,打開工具,選擇表所在的資料庫。
3.然後點擊資料庫名字,右鍵數據,出來下拉菜單選擇import
wizard。
4.點擊next,選擇對應的excel文件。

C. Python數據統計導出excel

一、數據查詢方法(此項可根據實際業務需求更改)

二、數據生成excel

三、發送郵件方法介紹

導出excel如遇到下圖報錯:
1.排查編碼 #coding:utf-8 sys.setdefaultencoding('utf8') 等
2.寫入第一行數據的中文字元,或者字元串需要有引號,忽略會報錯。

D. 求助用python從資料庫取數據動態生成表格的方法

一、可使用的第三方庫
python中處理excel表格,常用的庫有xlrd(讀excel)表、xlwt(寫excel)表、openpyxl(可讀寫excel表)等。xlrd讀數據較大的excel表時效率高於openpyxl,所以我在寫腳本時就採用了xlrd和xlwt這兩個庫。介紹及下載地址為:http://www.python-excel.org/ 這些庫文件都沒有提供修改現有excel表格內容的功能。一般只能將原excel中的內容讀出、做完處理後,再寫入一個新的excel文件。
二、常見問題
使用python處理excel表格時,發現兩個個比較難纏的問題:unicode編碼和excel中記錄的時間。
因為python的默認字元編碼都為unicode,所以列印從excel中讀出的中文或讀取中文名的excel表或sheet時,程序提示錯誤UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-2: ordinal not in range(128)。這是由於在windows中,中文使用了gb2312編碼方式,python將其當作unicode和ascii來解碼都不正確才報出的錯誤。使用VAR.encode('gb2312')即可解決列印中文的問題。(很奇怪,有的時候雖然能列印出結果,但顯示的不是中文,而是一堆編碼。)若要從中文文件名的excel表中讀取數據,可在文件名前加『u』表示將該中文文件名採用unicode編碼。
有excel中,時間和日期都使用浮點數表示。可看到,當『2013年3月20日』所在單元格使用『常規』格式表示後,內容變為『41353』;當其單元格格式改變為日期後,內容又變為了『2013年3月20日』。而使用xlrd讀出excel中的日期和時間後,得到是的一個浮點數。所以當向excel中寫入的日期和時間為一個浮點數也不要緊,只需將表格的表示方式改為日期和時間,即可得到正常的表示方式。excel中,用浮點數1表示1899年12月31日。
三、常用函數
以下主要介紹xlrd、xlwt、datetime中與日期相關的函數。

import xlrd
import xlwt
from datetime

def testXlrd(filename):
book=xlrd.open_workbook(filename)
sh=book.sheet_by_index(0)
print "Worksheet name(s): ",book.sheet_names()[0]
print 'book.nsheets',book.nsheets
print 'sh.name:',sh.name,'sh.nrows:',sh.nrows,'sh.ncols:',sh.ncols
print 'A1:',sh.cell_value(rowx=0,colx=1)
#如果A3的內容為中文
print 'A2:',sh.cell_value(0,2).encode('gb2312')

def testXlwt(filename):
book=xlwt.Workbook()
sheet1=book.add_sheet('hello')
book.add_sheet('word')
sheet1.write(0,0,'hello')
sheet1.write(0,1,'world')
row1 = sheet1.row(1)
row1.write(0,'A2')
row1.write(1,'B2')

sheet1.col(0).width = 10000

sheet2 = book.get_sheet(1)
sheet2.row(0).write(0,'Sheet 2 A1')
sheet2.row(0).write(1,'Sheet 2 B1')
sheet2.flush_row_data()

sheet2.write(1,0,'Sheet 2 A3')
sheet2.col(0).width = 5000
sheet2.col(0).hidden = True

book.save(filename)

if __name__=='__main__':
testXlrd(u'你好。xls')
testXlwt('helloWord.xls')
base=datetime.date(1899,12,31).toordinal()
tmp=datetime.date(2013,07,16).toordinal()
print datetime.date.fromordinal(tmp+base-1).weekday()

E. python怎麼把數據輸出到excel

python導出數據到excel文件的方法:

1、調用Workbook()對象中的add_sheet()方法

1

2

wb = xlwt.Workbook()

ws = wb.add_sheet('A Test Sheet')

2、通過add_sheet()方法中的write()函數將數據寫入到excel中,然後使用save()函數保存excel文件

1

2

3

4

5

6

7

ws.write(0, 0, 1234.56, style0)

ws.write(1, 0, datetime.now(), style1)

ws.write(2, 0, 1)

ws.write(2, 1, 1)

ws.write(2, 2, xlwt.Formula("A3+B3"))

wb.save('example.xls')

完整代碼如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

import xlwtfrom datetime import datetime

style0 = xlwt.easyxf('font: name Times New Roman, color-index red, bold on',num_format_str='#,##0.00')

style1 = xlwt.easyxf(num_format_str='D-MMM-YY')

wb = xlwt.Workbook()

ws = wb.add_sheet('A Test Sheet')

ws.write(0, 0, 1234.56, style0)

ws.write(1, 0, datetime.now(), style1)

ws.write(2, 0, 1)

ws.write(2, 1, 1)

ws.write(2, 2, xlwt.Formula("A3+B3"))

wb.save('example.xls')

程序執行結果如下:

更多Python知識,請關註:Python自學網!!

(推薦操作系統:windows7系統、Python 3.9.1,DELL G3電腦。)

閱讀全文

與python如何將數據輸出為表格形式相關的資料

熱點內容
信息技術ps題是怎麼給分的 瀏覽:563
本科研究論文數據一般為多少 瀏覽:269
excel替換後的數據怎麼作圖 瀏覽:623
市場經濟制度監督什麼作用 瀏覽:553
管家婆軟體怎麼在代理品牌加貨 瀏覽:853
模切技術後期工資怎麼樣 瀏覽:116
花唄如何支付交易費用 瀏覽:478
安幕茵代理公司怎麼樣 瀏覽:414
銀行系統交易碼四位數是什麼意思 瀏覽:712
什麼技術能帶回家 瀏覽:520
專利中多個技術點什麼意思 瀏覽:314
寬頻數據掉了怎麼修 瀏覽:620
貴港水果批發市場在哪裡 瀏覽:614
氣溫高溫差大是可以養什麼水產品 瀏覽:802
正大飼料黑河代理是哪裡 瀏覽:642
excel如何輸入規律數據 瀏覽:961
如何落實產品一致性檢查 瀏覽:987
民房交易在什麼地方辦理 瀏覽:368
程序後面加點什麼意思 瀏覽:347
小程序每日交作業怎麼批改 瀏覽:99