再見 Excel,你好 Python Spreadsheets!⛵
highlight: a11y-dark
攜手創作,共同成長!這是我參與「掘金日新計劃 · 8 月更文挑戰」的第9天,點選檢視活動詳情
- 💡 作者:韓信子@ShowMeAI
- 📘 資料分析 ◉ 技能提升系列:http://www.showmeai.tech/tutorials/33
- 📘 資料分析實戰系列:http://www.showmeai.tech/tutorials/40
- 📘 本文地址:http://www.showmeai.tech/article-detail/294
- 📢 宣告:版權所有,轉載請聯絡平臺與作者並註明出處
- 📢 收藏ShowMeAI檢視更多精彩內容
Excel是大家最常用的資料分析工具之一,藉助它可以便捷地完成資料清理、統計計算、資料分析(資料透檢視)和圖表呈現等。
但是!大家有沒有用 Excel 處理過大一些的資料(比如幾十上百萬行的資料表),Excel 就會變得非常慢,甚至直接崩潰。
辛辛苦苦做一半的工作很有可能要重做!那就不只是 Excel 崩潰了,我們也得一邊崩潰一邊加班趕 deadline。
在本篇文中,ShowMeAI 將給大家介紹到 Python 中非常好用的互動式表格工具,它們的功能性和使用便捷度和 Excel 相當,同時有很好的記憶體優化,非常適合處理大檔案表格。
工具1:Mito
Mito 是 Python 中的電子表格,它同時擁有 Excel 電子表格的簡單易用性和 Python 的強大功能。我們可以像使用 Excel 一樣使用 Mito,並且在我們執行每個操作之後,Mito 將自動生成與每個操作對應的 Python 程式碼。
使用 Mito 工具庫,我們首先需要安裝 Python 和 Jupyter Notebook 或 Jupyter Lab, 然後我們通過終端或命令列執行以下命令來安裝 Mito。
python -m pip install mitoinstaller
python -m mitoinstaller install
下面我們來演示一下,如何在 Mito 中完成我們在 Excel 中的操作,如讀取檔案、建立列、資料透視表、視覺化等。
💡 Mito:檔案讀取
Excel 預設對檔案行數有限制。在記憶體足夠時,Excel 可以開啟數百萬行的檔案,但是隻顯示前 1048576 行。感興趣的話可以測試下這個資料~同樣在記憶體充足的情況下,Mito 開啟檔案的大小沒有限制。來看具體操作!
讀入表格檔案
在讀取 CSV 檔案之前,先匯入工具庫,建立一個 Mito 電子表格物件,程式碼如下:
import mitosheet
mitosheet.sheet()
接下來的讀取操作就可以用滑鼠完成了, 下圖的演示中,使用到的資料集是學校成績資料集,大家可以在ShowMeAI的百度網盤地址下載 。 下載檔案後,單擊『+』或『匯入』按鈕進行閱讀,如下圖所示:
🏆 實戰資料集下載(百度網盤):公眾號『ShowMeAI研究中心』回覆『實戰』,或者點選 這裡 獲取本文 [7] 使用 Mito 和 Bamboolib 進行超大量資料的處理(Python) 『Spreadsheets 資料集』
⭐ ShowMeAI官方GitHub:http://github.com/ShowMeAI-Hub
自動生成程式碼
除了匯入之外,還會自動生成下面的程式碼。(這本是需要熟悉 Pandas 工具庫的同學通過編碼完成的。但現在我們簡單操作之後,就可以自動生成了!)
import pandas as pd
StudentsPerformance_csv = pd.read_csv(r'StudentsPerformance.csv')
💡 Mito:基本表格操作
在 Excel 中,我們會建立一個『巨集』來記錄一組可以隨時執行的操作。對應到 Mito中,我們可以做同樣的事情,藉助於 Python 生態與各種開源庫,我們可以完成更多自動化的操作,比如處理完表格之後通過電子郵件傳送報告,使用微信傳送檔案,匯入資料到資料庫中等。
下面我們用 Mito 執行一些操作,就好像我們在使用 Excel 一樣。
建立新列&重新命名列
如果要建立新列,只需單擊『新增列』按鈕。預設情況下,『Add Col』按鈕將建立一個名為『new-column』的列,我們將通過雙擊列名將其重新命名為『average』。
自動程式碼生成
這一步結束後,Mito 又生成了與我們在電子表格上執行的操作相對應的 Python 程式碼!
```
Added column new-column-uca5 to StudentsPerformance_csv
StudentsPerformance_csv.insert(8, 'new-column-uca5', 0)
Renamed new-column-uca5 to average in StudentsPerformance_csv
StudentsPerformance_csv.rename(columns={'new-column-uca5': 'average'}, inplace=True) ```
💡 Mito:統計分析
我們經常要對資料做統計分析,如果要對一行做統計計算,我們只需將公式寫在一個單元格中。
求平均統計
假設我們要計算數學、閱讀和寫作的平均分數。 我們只需要在『average』列的任何單元格中填入公式 (math score+reading score+writing score)/3
,如下圖所示:
自動程式碼生成
同樣 Mito 生成了pandas的統計程式碼:
```
Set new-column-uca5 in StudentsPerformance_csv to =(math score+reading score+writing score)/3
StudentsPerformance_csv['average'] = (StudentsPerformance_csv['math score']+StudentsPerformance_csv['reading score']+StudentsPerformance_csv['writing score'])/3 ```
💡 Mito:資料透視表
在Mito中建立資料透視表同樣非常簡單,單擊『資料透視』按鈕, 然後選擇行、列和值。
建立資料透視表
下圖演示了我們建立一個數據透視表,在『種族/民族』列中顯示 A、B、C、D 和 E 組的數學和閱讀分數的平均值。
自動生成程式碼
同樣在Mito操作過後,我們生成了如下的 Python 程式碼。
```
Imported StudentsPerformance.csv
import pandas as pd StudentsPerformance_csv = pd.read_csv(r'StudentsPerformance.csv')
Pivoted StudentsPerformance_csv into df2
unused_columns = StudentsPerformance_csv.columns.difference(set(['race/ethnicity']).union(set([])).union(set({'math score', 'reading score'}))) tmp_df = StudentsPerformance_csv.drop(unused_columns, axis=1) pivot_table = tmp_df.pivot_table( index=['race/ethnicity'], values=['math score', 'reading score'], aggfunc={'math score': ['mean'], 'reading score': ['mean']} ) pivot_table.columns = [flatten_column_header(col) for col in pivot_table.columns.values] df2 = pivot_table.reset_index() ```
💡 Mito:視覺化&繪圖
使用 Mito 可以輕鬆建立餅圖和條形圖等基本圖例用於視覺化, 我們只需要點選『圖表』並選擇圖表型別。
條形圖示例
讓我們為之前建立的資料透視表建立一個條形圖,在 X 軸上顯示『種族/民族』,在 Y 軸上顯示『數學分數平均值』。
很炫酷有沒有!而且 a、b、c 和 d 中生成的程式碼行相當於 Excel 巨集, 每次我們執行程式碼時,我們都會執行所有記錄下來的操作。
工具2:Bamboolib
當我們在Excel工作簿中進行記憶體密集型計算時,它非常容易卡頓感和崩潰,但這些計算在 Python 中是非常簡單可以完成的,我們可以結合另一個名為bamboolib 的 Python 庫完成一系列資料操作。
大家可以通過命令 pip install --upgrade bamboolib --user
安裝 bamboolib。
安裝完成之後,我們執行以下命令來讀取 CSV 或 Excel 檔案。
import bamboolib as bam
bam
📢 Bamboolib:大檔案讀取
在這裡,我們使用包含超過 100 萬行的 CSV 大檔案sales-data-1M來講解操作和計算實現,大家可以在ShowMeAI的百度網盤地址下載。
🏆 實戰資料集下載(百度網盤):公眾號『ShowMeAI研究中心』回覆『實戰』,或者點選 這裡 獲取本文 [7] 使用 Mito 和 Bamboolib 進行超大量資料的處理(Python) 『Spreadsheets 資料集』
⭐ ShowMeAI官方GitHub:http://github.com/ShowMeAI-Hub
和 Mito 工具庫一樣,Bamboolib 也為我們生成程式碼如下
後續內容中我們只演示步驟,但會隱藏生成的程式碼,大家可以實際操作來檢視生成的程式碼
import pandas as pd
df = pd.read_csv('./data/sales-data.csv', sep=',', decimal='.', nrows=100000)
df
📢 Bamboolib:新建列&統計計算
如果我們要建立一個新列,我們可以在搜尋欄上搜索『列命名』操作,然後鍵入列公式。下圖演示我們使用公式建立一個『價格』列 (revenue/quantity)
.
📢 Bamboolib:資料透視表
下面我們在搜尋欄中輸入『資料透視表』。 然後我們在資料行中按產品對資料進行分組,並使用『sum』作為聚合函式,整個操作如下圖所示:
📢 Bamboolib:視覺化&繪圖
接下來,我們建立一個餅圖。 我們點選『Create Plot』按鈕,選擇圖形型別,然後選擇我們想要顯示的值。
📢 Bamboolib:資訊/屬性抽取
下面我們從『日期』列中提取屬性,我們希望提取出月份,要完成這個操作,我們會將『日期』列的資料型別更改為 date
(現在型別為 str
),然後再提取屬性。操作動圖演示如下:
參考資料
- 🏆 實戰資料集下載(百度網盤):公眾號『ShowMeAI研究中心』回覆『實戰』,或者點選 這裡 獲取本文 [7] 使用 Mito 和 Bamboolib 進行超大量資料的處理(Python) 『Spreadsheets 資料集』
- ⭐ ShowMeAI官方GitHub:http://github.com/ShowMeAI-Hub
- 📘 Mito 官方文件 http://docs.trymito.io/
- 📘 Mito Github http://github.com/mito-ds/monorepo
- 📘 Mito 使用示例 http://github.com/mito-ds/mito-demo
- 📘 Bamboolib官方文件 http://bamboolib.8080labs.com/
- 📘 Bamboolib Github http://github.com/tkrabel/bamboolib
- 感謝飛書放過幕布!100個GPT-4實戰案例;GPT-4免費平替Poe;AI繪畫新手指南之SD篇;new Bing靠譜教程 | ShowMeAI日報
- whylogs工具庫的工業實踐!機器學習模型流程與效果監控 ⛵
- 脈脈瘋傳!2023年程式設計師生存指南;多款prompt效率加倍工具;提示工程師最全祕籍;AI裁員正在發生 | ShowMeAI日報
- 中國風?古典系?AI中文繪圖創作嚐鮮!⛵
- Python中內建資料庫!SQLite使用指南!
- Pandas中你一定要掌握的時間序列相關高階功能
- 資料科學家賺多少?資料全分析與視覺化 ⛵
- 互動式儀表板!Python輕鬆完成!⛵
- ChatGPT!我是你的破壁人;比爾·蓋茨不看好Web3與元宇宙;FIFA押中4屆世界盃冠軍;GitHub今日熱榜 | ShowMeAI資訊日報
- ChatGPT要收費了;華爾街大裁員;阿里2023十大科技趨勢;小紅書元宇宙虛擬服飾被吐槽;GitHub今日熱榜 | ShowMeAI資訊日報
- AI創業時代!這9個方向有錢途;AIGC再添霸榜應用Lensa;美團SemEval2022冠軍方法分享;醫學影象處理工具箱… | ShowMeAI資訊日報
- 噓!P站資料分析年報;各省市疫情感染進度條;愛奇藝推出元宇宙App;You推出AI聊天機器人;GitHub今日熱榜 | ShowMeAI資訊日報
- 美國公司裁員潮時間線◉科技寒冬視覺化;3份報告回顧中國開發者2022;自動駕駛下半場,誰會衝出重圍 | ShowMeAI每週通訊 #005-01.07
- 副業月入過萬?資料有話說;掃地機器人發展到哪步了;疫情後要不要重返辦公室;淘寶元宇宙直播間;GitHub今日熱榜 | ShowMeAI資訊日報
- 大戰谷歌!微軟Bing引入ChatGPT;羊了個羊40萬年薪招研發;Debian徹底移除Python2;GitHub今日熱榜 | ShowMeAI資訊日報
- 酸了!樂視工作制改為四天半;高通新年裁員;AI繪畫公司開始倒閉;網易入股張藝謀元宇宙公司;GitHub今日熱榜 | ShowMeAI資訊日報
- 要麼幹要麼滾!推特開始裁員了;深度學習產品應用·隨書程式碼;可分離各種樂器音源的工具包;Transformer教程;前沿論文 | ShowMeAI資訊日報
- 真實世界的人工智慧應用落地——OpenAI篇 ⛵
- 陽過→陽康,資料裡的時代側影;谷歌慌了!看各公司如何應對ChatGPT;兩份優質AI年報;本週技術高光時刻 | ShowMeAI每週通訊 #003-12.24
- 用魔法打敗魔法!這件毛衣讓攝像頭看不到你;兩款酷炫的AI寫作軟體;快如閃電的B站下載工具;基於擴散模型的蛋白質設計 | ShowMeAI資訊日報