手把手教你用Pandas读取所有主流数据存储
導讀:從常見的Excel和CSV到JSON及各種數據庫,Pandas幾乎支持市面上所有的主流數據存儲形式。
作者:李慶輝
來源:大數據DT(ID:hzdashuju)
Pandas提供了一組頂層的I/O API,如pandas.read_csv()等方法,這些方法可以將眾多格式的數據讀取到DataFrame數據結構中,經過分析處理后,再通過類似DataFrame.to_csv()的方法導出數據。
表3-1列出了一些常見的數據格式讀取和輸出方法。
▼表3-1 Pandas中常見數據的讀取和輸出函數
輸入和輸出的方法如下:
讀取函數一般會賦值給一個變量df,df = pd.read_<xxx>();
輸出函數是將變量自身進行操作并輸出df.to_<xxx>()。
01 CSV文件
CSV(Comma-Separated Values)是用逗號分隔值的數據形式,有時也稱為字符分隔值,因為分隔字符也可以不是逗號。CSV文件的一般文件擴展名為.csv,用制表符號分隔也常用.tsv作為擴展名。CSV不僅可以是一個實體文件,還可以是字符形式,以便于在網絡上傳輸。
CSV文件的讀取方法如下(以下代碼省略了賦值操作):
#?文件目錄 pd.read_csv('data.csv')?#?如果文件與代碼文件在同一目錄下 pd.read_csv('data/my/data.csv')?#?指定目錄 pd.read_csv('data/my/my.data')?#?CSV文件的擴展名不一定是.csv CSV文件可以存儲在網絡上,通過URL來訪問和讀取: #?使用URL pd.read_csv('https://www.gairuo.com/file/data/dataset/GDP-China.csv')CSV不帶數據樣式,標準化較強,是最為常見的數據格式。Pandas為讀取CSV數據提供了強大的功能,了解更多詳細操作請閱讀《史上最全!用Pandas讀取CSV,看這篇就夠了》。
02 Excel
Excel電子表格是微軟公司開發的被廣泛使用的電子數據表格軟件,一般可以將它的使用分為兩類。一類是文字或者信息的結構化,像排班表、工作日報、客戶名單之類,以文字為主;另一類為統計報表,如學生成績表、銷售表等,以數字為核心。
Pandas主要處理統計報表,當然也可以對文字信息類表格做整理,在新版本的Pandas中加入了非常強大的文本處理功能。
Excel雖然易于上手,功能也很強大,但在數據分析中缺點也很明顯。
無法進行復雜的處理:有時Excel提供的函數和處理方法無法滿足復雜邏輯。
無法支持更大的數據量:目前Excel支持的行數上限為1 048 576(2的20次方),列數上限為16 384(2的14次方,列標簽為XFD),在數據分析、機器學習操作中往往會超過這個體量。
處理方法無法復用:Excel一般采用設定格式的公式,然后將數據再復制,但這樣仍然無法對數據的處理過程進行靈活復用。
無法自動化:數據分析要經過一個數據輸入、處理、分析和輸出的過程,這些都是由人工來進行操作,無法實現自動化。
Pandas可以讀取、處理大體量的數據,通過技術手段,理論上Pandas可以處理的數據體量無限大。編程可以更加自由地實現復雜的邏輯,邏輯代碼可以進行封裝、重復使用并可實現自動化。
Pandas也提供了非常豐富的讀取操作,這些在《手把手教你用Python讀取Excel》有詳細介紹。最基礎的讀取方法如下:
#?返回DataFrame pd.read_excel('team.xlsx')?#?默認讀取第一個標簽頁Sheet pd.read_excel('path_to_file.xlsx',?sheet_name='Sheet1')?#?指定Sheet #?從URL讀取 pd.read_excel('https://www.gairuo.com/file/data/dataset/team.xlsx')03 JSON
JSON是互聯網上非常通用的輕量級數據交換格式,是HTTP請求中數據的標準格式之一。Pandas提供的JSON讀取方法在解析網絡爬蟲數據時,可以極大地提高效率??扇缦伦x取JSON文件:
#?data.json為同目錄下的一個文件 pd.read_json('data.json') 可以解析一個JSON字符串,以下是從HTTP服務檢測到的設備信息: jdata='{"res":{"model":"iPhone","browser":"Safari","version":"604.1"},"status":200}' pd.read_json(jdata) '''res??status browser??Safari?????200 model????iPhone?????200 version???604.1?????200 '''Pandas還提供了pd.json_normalize(data)方法來讀取半結構化的JSON數據。
04 HTML
pd.read_html()函數可以接受HTML字符串、HTML文件、URL,并將HTML中的<table>標簽表格數據解析為DataFrame。如返回有多個df的列表,則可以通過索引取第幾個。如果頁面里只有一個表格,那么這個列表就只有一個DataFrame。此方法是Pandas提供的一個簡單實用的實現爬蟲功能的方法。
dfs?=?pd.read_html('https://www.gairuo.com/p/pandas-io') dfs[0]?#?查看第一個df #?讀取網頁文件,第一行為表頭 dfs?=?pd.read_html('data.html',?header=0) #?第一列為索引 dfs?=?pd.read_html(url,?index_col=0)如果一個網頁表格很多,可以指定元素來獲取:
#?id='table'的表格,注意這里仍然可能返回多個 dfs1?=?pd.read_html(url,?attrs={'id':?'table'}) #?dfs1[0] #?class='sortable' dfs2?=?pd.read_html(url,?attrs={'class':?'sortable'})常用的參數與read_csv的基本相同。
05 剪貼板
剪貼板(Clipboard)是操作系統級的一個暫存數據的地方,它保存在內存中,可以在不同軟件之間傳遞,非常方便。Pandas支持讀取剪貼板中的結構化數據,這就意味著我們不用將數據保存成文件,而可以直接從網頁、Excel等文件中復制,然后從操作系統的剪貼板中讀取,非常方便。
'''x?y?z a?1?2?3 b?4?5?6 c?7?8?9 '''#?復制上邊的數據,然后直接賦值 cdf?=?pd.read_clipboard()變量cdf就是上述文本的DataFrame結構數據。read_clipboard的參數使用與read_csv完全一樣。
06 SQL
Pandas需要引入SQLAlchemy庫來支持SQL,在SQLAlchemy的支持下,它可以實現所有常見數據庫類型的查詢、更新等操作。Pandas連接數據庫進行查詢和更新的方法如下。
read_sql_table(table_name, con[, schema, …]):把數據表里的數據轉換成DataFrame。
read_sql_query(sql, con[, index_col, …]):用sql查詢數據到DataFrame中。
read_sql(sql, con[, index_col, …]):同時支持上面兩個功能。
DataFrame.to_sql(self, name, con[, schema, …]):把記錄數據寫到數據庫里。
以下是一些代碼示例:
#?需要安裝SQLAlchemy庫 from?sqlalchemy?import?create_engine #?創建數據庫對象,SQLite內存模式 engine?=?create_engine('sqlite:///:memory:') #?取出表名為data的表數據 with?engine.connect()?as?conn,?conn.begin():data?=?pd.read_sql_table('data',?conn)#?data #?將數據寫入 data.to_sql('data',?engine) #?大量寫入 data.to_sql('data_chunked',?engine,?chunksize=1000) #?使用SQL查詢 pd.read_sql_query('SELECT?*?FROM?data',?engine)07 小結
Pandas支持讀取非常多的數據格式,本文僅介紹了幾種常見的數據文件格式,更多格式可以在其官網查詢。
https://pandas.pydata.org/docs/user_guide/io.html
關于作者:李慶輝,數據產品專家,某電商公司數據產品團隊負責人,擅長通過數據治理、數據分析、數據化運營提升公司的數據應用水平。精通Python數據科學及Python Web開發,曾獨立開發公司的自動化數據分析平臺,參與教育部“1+X”數據分析(Python)職業技能等級標準評審。中國人工智能學會會員,企業數字化、數據產品和數據分析講師,在個人網站“蓋若”上編寫的技術和產品教程廣受歡迎。
本書摘編自《深入淺出Pandas:利用Python進行數據處理與分析》,機械工業出版社華章公司2021年出版。轉載請與我們取得授權。
延伸閱讀《深入淺出Pandas》
點擊上圖了解及購買
轉載請聯系微信:DoctorData
推薦語:這是一本全面覆蓋了Pandas使用者的普遍需求和痛點的著作,基于實用、易學的原則,從功能、使用、原理等多個維度對Pandas做了全方位的詳細講解,既是初學者系統學習Pandas難得的入門書,又是有經驗的Python工程師案頭必不可少的查詢手冊。《利用Python進行數據分析》學習伴侶,用好Python必備。
刷刷視頻👇
干貨直達👇
視頻時代的大數據:問題、挑戰與解決方案
一圖看懂邊緣計算整體架構
這4種分析方法,大牛產品經理都在用
一圖梳理企業數據治理的8項舉措
更多精彩👇
在公眾號對話框輸入以下關鍵詞
查看更多優質內容!
讀書?|?書單?|?干貨?|?講明白?|?神操作?|?手把手
大數據?|?云計算?|?數據庫?|?Python?|?爬蟲?|?可視化
AI?|?人工智能?|?機器學習?|?深度學習?|?NLP
5G?|?中臺?|?用戶畫像?|?數學?|?算法?|?數字孿生
據統計,99%的大咖都關注了這個公眾號
👇
總結
以上是生活随笔為你收集整理的手把手教你用Pandas读取所有主流数据存储的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: asp.net最常用的三十三种编程代码
- 下一篇: 一步一步学Remoting之二:激活模式