竟可打通了Python和Excel,還能自動生成程式碼,這個外掛絕了

2022-01-02 18:00:04

載入一個Jupyter外掛後,無需寫程式碼就能做資料分析,還幫你生成相應程式碼?

圖片

沒錯,只需要載入這個名為Mito的小工具包,用Python做資料分析,變得和用Excel一樣簡單:

圖片

資料專欄

介紹

以 Excel 為代表的電子試算表是探索資料集的最重要、最具適應性的方式之一。它可以幫助對資料型別進行必要的更改、建立新特徵、對資料進行排序以及從現有特徵中建立新特徵。

遵循以上相同的思路,Mito是一個Jupyter-Lab擴充套件和Python庫,它使得在支援GUI的電子試算表環境中運算元據變得超級容易。

Mito的出現,像是將Python的強大功能、和Excel的易用性進行了結合。

只需要掌握Excel的用法,就能使用Python的資料分析功能,還能將寫出來的程式碼「打包帶走」

它彌補了Excel在資料分析上的幾個缺陷

  • Excel無法做巨量資料分析(大型資料集處理得不好)

  • Excel執行緩慢

  • Excel無法輕鬆建立可重複流程

同時,又比SQL和Python更簡單、直觀。畢竟這些專業工具對於0基礎初學者來說,需要至少幾年時間,才能完全上手。

在本文中,我們將一起學習:

  1. 如何合理設定Mito

  2. 如何debug安裝錯誤

  3. 使用 Mito 提供的各種功能

  4. 該庫如何為對資料集所做的所有操作生成 Python 等效程式碼

安裝Mito

Mito 是一個 Python 庫,可以通過 pip 包管理器安裝。它需要 Python 3.6 及以上版本。此外,系統上需要安裝 Nodejs,一個 JavaScript 執行時環境。

另外,可以在單獨的環境(虛擬環境)中安裝這個包,可以避免一些依賴錯誤。接下來在終端中執行這些命令,完成安裝即可。

1. 建立環境

我正在使用 Conda 建立一個新環境。你還可以使用 Python 的「venv」來建立虛擬環境。

conda create -n mitoenv python=3.8

2. 啟用環境

conda activate mitoenv

3. 通過pip安裝Mito

pip install mitoinstaller

4. 執行 Mito 安裝程式

python -m mitoinstaller install

此過程將需要一段時間來安裝和設定 Mito。

5. 啟動 Jupyter Lab

jupyter lab

報錯解決

當啟動 Jupyter Lab時,可能會遇到如下錯誤:

File "c:userslenovoanaconda3envsmitoenvlibsite-packagesjupyter_corepaths.py", line 387, in win32_restrict_file_to_user
    import win32api
ImportError: DLL load failed while importing win32api: The specified module could not be found.

要修復此錯誤,只需執行以下命令:

pip install --upgrade pywin32==225

如果你遇到其他困難,請隨時在下面發表評論。我很樂意提供幫助。

MitoSheets 介面

在 Jupyter Lab中,建立一個新筆電並初始化 Mitosheet:

import mitosheet
mitosheet.sheet()

第一次,系統會提示輸入你的電子郵件地址進行註冊:
在這裡插入圖片描述

填寫完基礎知識後,將被重定向到 GUI 電子試算表。接下來我們一起看看這個介面的所有特性,並一起學習如何生成 Python 等效程式碼。

載入資料集

要在 MitoSheets 中載入資料集,只需單擊匯入。有兩個選擇:

  1. 從當前資料夾新增檔案: 這將列出當前目錄中的所有 CSV 檔案,可以從下拉式選單中選擇檔案。

  2. 按檔案路徑新增檔案: 這將僅新增該特定檔案。

如下圖所示

圖片

如果你看下面的單元格,你會發現Python等效的程式碼匯入一個資料集使用pandas已經生成了適當的註釋!

在這裡插入圖片描述

這就是 Mito 的魅力,你在 Mitosheet 中執行的每個操作都將轉換為 Python 等效程式碼!接下來我們一起詳細探討一下 Mito 的所有功能。

新增和刪除列

新增列

就像在 Excel 等電子試算表中一樣,你可以新增一個新列,該列可能是從現有列或特徵建立的。要在 Mito 中執行此操作,只需單擊「Add Col」按鈕。該列將新增到當前選定的列旁邊。最初,列名將是一個字母表,列的所有值都為零。

圖片

編輯新列的內容

  1. 單擊新列名稱(分配的字母表)

  2. 將彈出側邊欄選單,你可以在其中編輯列的名稱。

  3. 要更新該列的內容,請單擊該列的任何單元格,然後輸入值。你可以輸入一個常數值,也可以根據資料集的現有特徵建立值。如果要從現有列建立值,則直接使用要執行的運運算元呼叫列名。

  4. 新列的資料型別根據分配的值進行更改。

下面的 GIF 演示了上面提到的所有內容:

圖片

刪除列

  1. 通過單擊選擇任何列。

  2. 單擊「Del Col」,該特定列將從資料集中刪除。

圖片

Python程式碼

在下一個單元格中生成帶有正確註釋的 Python 等效程式碼,用於執行的操作是:

# MITO CODE START (DO NOT EDIT)
from mitosheet import * # Import necessary functions from Mito
register_analysis('UUID-7bf77d26-84f4-48ed-b389-3f7a3b729753') # Let Mito know which analysis is being run
# Imported edxCourses.csv
import pandas as pd
edxCourses_csv = pd.read_csv('edxCourses.csv')
# Added column H to edxCourses_csv
edxCourses_csv.insert(7, 'H', 0)
# Renamed H to newCol in edxCourses_csv
edxCourses_csv.rename(columns={"H": "newCol"}, inplace=True)
# Set newCol in edxCourses_csv to =coursePrice + courseEnrollments
edxCourses_csv['newCol'] = edxCourses_csv['coursePrice'] + edxCourses_csv['courseEnrollments']
# Deleted column newCol from edxCourses_csv
edxCourses_csv.drop('newCol', axis=1, inplace=True)
# MITO CODE END (DO NOT EDIT)

建立資料透視表

資料透視表是一個重要的 excel 功能,它根據另一個分類特徵彙總數位變數。要使用 Mito 建立這樣的表,

  1. 單擊「Pivot」並選擇源資料集(預設載入 CSV)

  2. 選擇資料透視表的行、列和值列。還可以為值列選擇聚合函數。所有下拉選項,如求和、平均值、中值、最小值、最大值、計數和標準偏差都可用。

  3. 選擇所有必要的欄位後,將獲得一個單獨的表,其中包含資料透視表的實現。

下面的 GIF 演示瞭如何為聚合函數「均值」建立資料透視表:

圖片

Python程式碼

# MITO CODE START (DO NOT EDIT)
from mitosheet import * # Import necessary functions from Mito
register_analysis('UUID-a35246c0-e0dc-436b-8667-076d4f08e0c1') # Let Mito know which analysis is being run
# Imported edxCourses.csv
import pandas as pd
edxCourses_csv = pd.read_csv('edxCourses.csv')
# Pivoted edxCourses_csv into df2
pivot_table = edxCourses_csv.pivot_table(
    index=['courseOrganization'],
    values=['coursePrice'],
    aggfunc={'coursePrice': 'mean'}
)
# Reset the column name and the indexes
df2 = pivot_table.rename_axis(None, axis=1).reset_index()
# MITO CODE END (DO NOT EDIT)

合併兩個資料集

合併資料集是資料科學專案的重要組成部分。通常,資料集被劃分到不同的表格中,以增加資訊的可存取性和可讀性。合併 Mitosheets 很容易。

  1. 單擊「Merge」並選擇資料來源。

  2. 需要指定要對其進行合併的鍵。

  3. 也可以從資料來源中選擇合併後要保留的列。預設情況下,所有列都將保留在合併的資料集中。

圖片

Python程式碼

# MITO CODE START (DO NOT EDIT)
from mitosheet import * # Import necessary functions from Mito
register_analysis('UUID-88ac4a92-062f-4ed8-a55d-729394975740') # Let Mito know which analysis is being run
# Imported Airport-Pets.csv, Zipcode-Data.csv
import pandas as pd
Airport_Pets_csv = pd.read_csv('Airport-Pets.csv')
Zipcode_Data_csv = pd.read_csv('Zipcode-Data.csv')
# Merged Airport_Pets_csv and Zipcode_Data_csv
temp_df = Zipcode_Data_csv.drop_duplicates(subset='Zip')
Airport_Pets_csv_tmp = Airport_Pets_csv.drop(['State', 'Division'], axis=1)
Zipcode_Data_csv_tmp = temp_df.drop(['Mean_Income', 'Pop'], axis=1)
df3 = Airport_Pets_csv_tmp.merge(Zipcode_Data_csv_tmp, left_on=['Zip'], right_on=['Zip'], how='left', suffixes=['_Airport_Pets_csv', '_Zipcode_Data_csv'])
# MITO CODE END (DO NOT EDIT)

修改列資料型別、排序和過濾

你可以更改現有列的資料型別,按升序或降序對列進行排序,或通過邊界條件過濾它們。在 Mito 中的這些都很簡單,可以通過選擇螢幕上的選項通過GUI本身完成。

  1. 單擊所需的列

  2. 將看到一個資料型別列表。可以根據需要從下拉選單中選擇任何資料型別,該資料型別將應用於整個列。

  3. 接下來可以通過選擇提供的選項按升序或降序對資料進行排序。

  4. 還可以使用自定義過濾器過濾資料。
    圖片

Python程式碼

# MITO CODE START (DO NOT EDIT)
from mitosheet import * # Import necessary functions from Mito
register_analysis('UUID-cc414267-d9aa-4017-8890-ee3b7461c15b') # Let Mito know which analysis is being run
# Imported edxCourses.csv
import pandas as pd
edxCourses_csv = pd.read_csv('edxCourses.csv')
# Changed coursePrice from int64 to float
edxCourses_csv['coursePrice'] = edxCourses_csv['coursePrice'].astype('float')
# Sorted coursePrice in edxCourses_csv in descending order
edxCourses_csv = edxCourses_csv.sort_values(by='coursePrice', ascending=False, na_position='first')
edxCourses_csv = edxCourses_csv.reset_index(drop=True)
# Filtered coursePrice in edxCourses_csv
edxCourses_csv = edxCourses_csv[edxCourses_csv['coursePrice'] >= 500]
edxCourses_csv = edxCourses_csv.reset_index(drop=True)
# MITO CODE END (DO NOT EDIT)

圖表和統計資料生成

還可以直接在此擴充套件中生成圖形,而無需編寫繪圖邏輯。預設情況下,此擴充套件生成的所有圖都是使用 Plotly 製作的。這意味著繪圖是互動式的,可以即時修改。

注意,這裡並沒有像操作列一樣,在下一個單元格中生成圖形程式碼(也許開發人員會在以後的更新中推播此程式碼)

可以使用 Mito 生成兩種型別的圖:

1. 通過點選圖表按鈕

你將看到一個側邊欄選單,用於選擇圖形型別和要選擇的相應軸。

圖片

2. 通過點選列名

當你點選電子試算表中的列名稱時,可以看見過濾器和排序選項。但如果你導航到「Summary Stats」,則會根據變數的型別顯示線圖或條形圖以及變數的摘要。此摘要更改為文字和沒有文字變數。

圖片

儲存和回放

對資料集所做的所有轉換都可以儲存並用於其他類似的資料集。這在 Excel 中採用宏或 VBA 的形式。也可以通過這些功能完成相同的操作。

圖片

檔案是以Python編寫的,而不是用比較難懂的VBA。

圖片

回溯執行的所有步驟

要想重複上面的步驟的話,也非常容易,Mito自帶「重複已儲存分析步驟」功能,一鍵就能用同樣的方法分析其他資料。這個功能是最有趣的。你實際上可以追蹤在 Mitosheet 中應用的所有轉換。所有操作的列表都帶有適當的標題。

此外,你可以檢視該特定步驟!這意味著假設你更改了一些列,然後刪除了它們。你可以退回到未刪除的時間。

圖片

寫在最後

到這裡,我們一起學習了一個新工具「Mito」。用於在 Python 環境中實現類似電子試算表的功能,併為所做的每一步生成等效操作的 Python 程式碼。

專案主頁:
https://trymito.io/launch