自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

代碼詳解:使用Python從不同表格中提取數(shù)據(jù)

開(kāi)發(fā) 后端 數(shù)據(jù)庫(kù)
常用的表格數(shù)據(jù)存儲(chǔ)文件格式——CSV,Microsoft Excel,GoogleExcel。Python通常稱為粘合語(yǔ)言。這個(gè)名稱歸因于人們逐漸開(kāi)發(fā)出的大量接口庫(kù)和特征,也得益于廣泛的使用和良好的開(kāi)源社區(qū)。

常用的表格數(shù)據(jù)存儲(chǔ)文件格式——CSV,Microsoft Excel,Google Excel 。

[[278156]]

Python通常稱為粘合語(yǔ)言。這個(gè)名稱歸因于人們逐漸開(kāi)發(fā)出的大量接口庫(kù)和特征,也得益于廣泛的使用和良好的開(kāi)源社區(qū)。這些接口庫(kù)和特征能直接訪問(wèn)不同的文件格式,還可以訪問(wèn)數(shù)據(jù)源如數(shù)據(jù)庫(kù)、網(wǎng)頁(yè)和各種API。

本文的學(xué)習(xí)內(nèi)容:

從谷歌表格中提取數(shù)據(jù)

  • 從CSV文件中提取數(shù)據(jù)
  • 從Excel文件中提取數(shù)據(jù)

本文適用于以下讀者:

  • Python初學(xué)者
  • 必須定期處理數(shù)據(jù)的人員

由于本文附有代碼,建議處在開(kāi)發(fā)環(huán)境之下(建議使用JupyterNotebook / Lab),并建立一個(gè)新的筆記本。

源代碼和文件:https://github.com/FBosler/Medium-Data-Extraction

解決方法

本文將帶你進(jìn)入一個(gè)虛構(gòu)但卻可能異常熟悉的場(chǎng)景。你可以結(jié)合不同的數(shù)據(jù)來(lái)源去創(chuàng)建報(bào)告或進(jìn)行分析。

注意!!!下面的示例和數(shù)據(jù)純屬虛構(gòu)。

假設(shè),你的任務(wù)是搞清楚如何提高銷售團(tuán)隊(duì)的業(yè)績(jī)。假設(shè)潛在的客戶有相當(dāng)自發(fā)的需求。這種情況發(fā)生時(shí),銷售團(tuán)隊(duì)將訂單導(dǎo)入系統(tǒng)。然后,銷售代表們會(huì)在訂單交付時(shí)安排一個(gè)會(huì)議。具體日期有時(shí)在交付期之前,有時(shí)在交付期之后。你的銷售代表有一筆費(fèi)用預(yù)算,會(huì)在開(kāi)會(huì)期間支付餐費(fèi)。他們負(fù)責(zé)報(bào)銷這筆費(fèi)用,并將發(fā)票交給會(huì)計(jì)團(tuán)隊(duì)處理。在潛在客戶決定是否要接受報(bào)價(jià)后,銷售代表會(huì)跟蹤訂單是否達(dá)成。

可使用以下三個(gè)資料來(lái)源進(jìn)行分析:

  • 100,000 份訂單 (Google表格)
  • 約50,000張餐費(fèi)發(fā)票(Excel文件)
  • 負(fù)責(zé)公司及銷售代表名單(CVS文件)

獲取谷歌表格數(shù)據(jù)

訪問(wèn)谷歌表格是這三種方法中最復(fù)雜的,因?yàn)槟阈枰谑褂霉雀璞砀馎PI前設(shè)置一些證書。理論上,你可以獲取一個(gè)公開(kāi)可用的谷歌表(即提取源HTML代碼)但必須使用Beautiful Soup之類的工具進(jìn)行大量數(shù)據(jù)操作,才能將HTML轉(zhuǎn)儲(chǔ)轉(zhuǎn)換為有用的內(nèi)容。我確實(shí)嘗試過(guò),但是結(jié)果很糟糕,不值得一試。所以,API就是如此。此外,還將使用gspread無(wú)縫轉(zhuǎn)換數(shù)據(jù)分析DataFrame。

獲取OAuth2證書

前往谷歌開(kāi)發(fā)人員控制臺(tái),創(chuàng)建一個(gè)新項(xiàng)目(或選擇現(xiàn)有的項(xiàng)目)。點(diǎn)擊“創(chuàng)建項(xiàng)目”。如果公司使用谷歌郵件,可將其更改為私人帳戶,以避免潛在的權(quán)限沖突。

代碼詳解:使用Python從不同表格中提取數(shù)據(jù)

為項(xiàng)目命名(名稱無(wú)關(guān)緊要,此處將其命名為媒體數(shù)據(jù)提取)。

代碼詳解:使用Python從不同表格中提取數(shù)據(jù)

點(diǎn)擊APIs & Services ,前往library。

代碼詳解:使用Python從不同表格中提取數(shù)據(jù)

啟用谷歌Sheets API。單擊結(jié)果,并在如下頁(yè)面上單擊啟用 API。

代碼詳解:使用Python從不同表格中提取數(shù)據(jù)

創(chuàng)建一個(gè)服務(wù)帳戶和密鑰文件。服務(wù)帳戶是用于程序訪問(wèn)的專用帳戶,訪問(wèn)權(quán)限有限。服務(wù)帳戶可以而且應(yīng)該通過(guò)有盡可能多的特定權(quán)限項(xiàng)目進(jìn)行設(shè)置,當(dāng)前的任務(wù)也需要如此。

代碼詳解:使用Python從不同表格中提取數(shù)據(jù)

創(chuàng)建JSON(另一種文件格式)密鑰文件。在角色上,選擇“Project -> Viewer”。

代碼詳解:使用Python從不同表格中提取數(shù)據(jù)

如果還沒(méi)有在前面的步驟中設(shè)置角色請(qǐng)立即設(shè)置。

代碼詳解:使用Python從不同表格中提取數(shù)據(jù)

注意:設(shè)置為“Viewer”會(huì)存在一些限制。如果希望以編程方式創(chuàng)建谷歌表格,則必須選擇不同的設(shè)置。

然后,私有JSON密鑰文件就可以下載或自動(dòng)下載了。建議將該文件重命名為'Medium_Data_Extraction_Key,并將文件移動(dòng)到JupyterNotebook文件夾中,以便與下面的示例無(wú)縫銜接。JSON文件包含最近創(chuàng)建的服務(wù)帳戶證書。

非常好,就要成功了。

下載數(shù)據(jù)

首先,必須下載并安裝其他軟件包,在筆記本中運(yùn)行以下命令。

!pip install gspread

!pip install oauth2client

其次,如果還沒(méi)有移動(dòng)密鑰文件的話,必須確保將之前創(chuàng)建的JSON密鑰文件移動(dòng)到目前運(yùn)行的木星筆記本(Jupyternotebook)文件夾中?;蛘撸梢灾付ㄒ粋€(gè)不同的GOOGLE_KEY_FILE路徑。

  1. from oauth2client.service_account import ServiceAccountCredentials 
  2. import gspread 
  3. import pandas as pd 
  4. scope = [ 
  5.  'https://www.googleapis.com/auth/spreadsheets'
  6. GOOGLE_KEY_FILE='Medium_Data_Extraction_Key.json' 
  7. credentials = ServiceAccountCredentials.from_json_keyfile_name(GOOGLE_KEY_FILE, scope) 
  8. gc = gspread.authorize(credentials) 
  9. wokbook_key ='10HX66PbcGDvx6QKM8DC9_zCGp1TD_CZhovGUbtu_M6Y' 
  10. workbook = gc.open_by_key(wokbook_key) 
  11. sheet = workbook.get_worksheet(0) 
  12. values = sheet.get_all_values() 
  13. sales_data = pd.DataFrame(values[1:],columns=values[0]) 
  14. WORKBOOK_KEY是為本章內(nèi)容準(zhǔn)備的谷歌表格的工作簿id。 
  15. WORKBOOK_KEY = '10HX66PbcGDvx6QKM8DC9_zCGp1TD_CZhovGUbtu_M6Y' 

這份工作簿是公開(kāi)的,如果想下載不同的數(shù)據(jù),需要更改WORKBOOK_KEY。URL有問(wèn)題的話,id通??梢栽诠雀璞砀竦淖詈髢蓚€(gè)反斜杠之間找到。

獲取CSV數(shù)據(jù)

可以從repo以傳統(tǒng)方式下載CSV數(shù)據(jù),也可以使用以下代碼片段進(jìn)行下載。同樣地,可能需要在筆記本上安裝并運(yùn)行缺失的請(qǐng)求包:

  1. !pip install requests 
  2. import requests 
  3. url ='https://raw.githubusercontent.com/FBosler/Medium-Data-Extraction/master/sales_team.csv' 
  4. res = requests.get(url, allow_redirects=True
  5. withopen('sales_team.csv','wb') asfile: 
  6.  file.write(res.content) 
  7. sales_team = pd.read_csv('sales_team.csv'

CSV數(shù)據(jù)的美妙之處在于Python /panda可以立即進(jìn)行處理。Excel則需要額外的庫(kù)。 

獲取Excel數(shù)據(jù)

在開(kāi)始之前,很可能還要安裝openpyxl和xlrd,這能讓Pandas也可以打開(kāi)Excel表。

!pip install openpyxl

!pip install xlrd

完成這些步驟之后,可以相同的方式獲得Excel數(shù)據(jù),并將其加載到另一個(gè)DataFrame中。

  1. url ='https://github.com/FBosler/Medium-Data-Extraction/blob/master/invoices.xlsx?raw=true' 
  2. res = requests.get(url, allow_redirects=True
  3. withopen('invoices.xlsx','wb') asfile: 
  4.  file.write(res.content) 
  5. invoices = pd.read_excel('invoices.xlsx'

大功告成!已經(jīng)創(chuàng)建了三個(gè)不同的Pandas數(shù)據(jù)幀,并且可以在同一個(gè)Jupyter notebook中進(jìn)行訪問(wèn):

  • sales_data
  • sales_team
  • invoices

 

責(zé)任編輯:華軒 來(lái)源: 今日頭條
相關(guān)推薦

2023-11-15 13:04:30

Python提取表格

2020-07-08 07:54:03

PythonPDF數(shù)據(jù)

2021-12-17 12:12:22

Python 開(kāi)發(fā)數(shù)據(jù)

2025-02-17 12:00:00

PythonOpenCV提取圖像

2019-10-09 15:51:45

Python 開(kāi)發(fā)編程語(yǔ)言

2021-11-18 10:20:22

代碼PDFPython

2018-04-20 08:37:23

災(zāi)難恢復(fù)數(shù)據(jù)備份

2022-11-23 10:31:54

2014-07-16 17:35:03

Android表單模型

2016-01-26 11:08:54

2015-03-04 14:12:58

數(shù)據(jù)庫(kù)mysql工作量

2020-07-08 15:43:26

數(shù)據(jù)機(jī)器學(xué)習(xí)提取

2021-05-13 23:54:12

DockerDockerfile鏡像

2013-04-01 11:14:56

IT大數(shù)據(jù)網(wǎng)絡(luò)信息化

2019-09-04 11:09:38

物聯(lián)網(wǎng)數(shù)據(jù)邊緣

2021-03-15 21:50:22

Linux提取文本GUI工具

2023-11-29 11:30:17

PDF語(yǔ)言模型

2022-01-05 18:18:01

Flink 數(shù)倉(cāng)連接器

2019-02-01 14:45:41

前端

2012-06-28 10:00:07

硬件可靠性
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)