如何使用 Pandas 的 stack() 函式將寬格式 DataFrame 轉換為整潔格式 DataFrame?
由於 Python 擁有豐富的庫和框架,它已成為資料分析和處理中最流行的程式語言之一。在這些庫中,Pandas 作為資料處理中最有價值和最強大的工具之一脫穎而出。使用 Pandas,您可以輕鬆載入、轉換和分析各種格式的資料。
在本教程中,我們將探討如何使用 Pandas 的 stack() 函式將寬格式 DataFrame 轉換為整潔格式 DataFrame。將寬格式 DataFrame 轉換為整潔格式是許多資料分析工作流程中的一個必要步驟,因為它可以更輕鬆地進行資料操作、繪圖和建模。在本文的下一部分,我們將深入探討 Pandas stack() 函式的細節,並演示如何將其用於此轉換過程。
如何使用 Pandas 的 stack() 函式將寬格式 DataFrame 轉換為整潔格式 DataFrame?
在深入瞭解轉換過程之前,讓我們花點時間瞭解寬格式和整潔格式 DataFrame 的概念。
寬格式 DataFrame 的結構方式是,每一行代表一個單獨的實體或觀測值,例如一個人或一個產品。寬格式通常包含多個列,這些列儲存與每個實體相關的不同屬性或變數。
相反,整潔格式 DataFrame 遵循特定的結構,這使得資料分析和處理更容易。在整潔格式 DataFrame 中,每一行代表一個唯一的觀測值或測量值。另一方面,列包含不同的變數或屬性。
現在我們已經對寬格式和整潔格式 DataFrame 有了基本的瞭解,讓我們深入探討如何使用 Pandas 的 stack() 函式將寬格式 DataFrame 轉換為整潔格式 DataFrame。
探索 Pandas 的 stack() 函式
Pandas 中的 stack() 函式專門用於旋轉或重塑 DataFrame。它以寬格式 DataFrame 作為輸入,並透過將列堆疊到行中將其轉換為整潔格式 DataFrame。此操作通常稱為“堆疊”,因為它垂直堆疊列值,從而產生一個更窄、更長的 DataFrame。
現在,讓我們來看一個示例場景,以演示如何使用 Pandas 中的 stack() 函式將寬格式 DataFrame 轉換為整潔格式 DataFrame。
考慮以下包含學生不同科目分數的寬格式 DataFrame
示例
import pandas as pd # Create a sample wide dataframe data = { 'Name': ['Student1', 'Student2', 'Student3'], 'Math Score': [85, 70, 95], 'Science Score': [90, 80, 92] } wide_df = pd.DataFrame(data) print("Wide DataFrame:") print(wide_df)
輸出
上述程式碼的寬格式 DataFrame 將如下所示
Name Math Score Science Score 0 Student1 85 90 1 Student2 70 80 2 Student3 95 92
要將此寬格式 DataFrame 轉換為整潔格式,我們將按照以下步驟操作
匯入必要的庫並載入 DataFrame
我們首先匯入 Pandas 庫,它為我們提供了用於轉換的 stack() 函式。我們還使用 Pandas 的 DataFrame 建構函式載入寬格式 DataFrame。
示例
import pandas as pd # Create a sample wide dataframe data = { 'Name': ['Student1', 'Student2', 'Student3'], 'Math Score': [85, 70, 95], 'Science Score': [90, 80, 92] } wide_df = pd.DataFrame(data) print("Wide DataFrame:") print(wide_df)
檢查寬格式 DataFrame 並識別要堆疊的列
仔細檢視寬格式 DataFrame 並識別需要堆疊的列。在我們的示例中,我們希望堆疊“數學分數”和“科學分數”列,以將其轉換為單獨的行。
# Inspect the wide dataframe print("Wide DataFrame:") print(wide_df)
寬格式 DataFrame 將如下所示
Name Math Score Science Score 0 Student1 85 90 1 Student2 70 80 2 Student3 95 92
應用 stack() 函式重塑 DataFrame
現在,讓我們使用 stack() 函式將寬格式 DataFrame 轉換為整潔格式。我們將 stack() 函式應用於 wide_df 並將結果分配給一個新的變數 tidy_df。
# Apply the stack() function tidy_df = wide_df.stack().reset_index() tidy_df.columns = ['ID', 'Subject', 'Score']
討論生成的整潔格式 DataFrame 及其結構
應用 stack() 後,我們獲得了一個新的 DataFrame tidy_df,它以整潔格式表示原始的寬格式 DataFrame。整潔格式 DataFrame 有三列:“ID”、“科目”和“分數”。整潔格式 DataFrame 中的每一行對應於特定學生在特定科目中的分數。
# Display the resulting tidy dataframe print("\nTidy DataFrame:") print(tidy_df)
上述 DataFrame 對應的整潔格式 DataFrame 將如下所示
ID Subject Score 0 0 Math Score 85 1 0 Science Score 90 2 1 Math Score 70 3 1 Science Score 80 4 2 Math Score 95 5 2 Science Score 92
在生成的整潔格式 DataFrame 中,我們可以看到“ID”列表示寬格式 DataFrame 的原始行索引,“科目”列包含科目名稱,“分數”列包含相應的分數。現在每一行都表示一個唯一的觀測值,這使得資料分析和操作更加容易。
因此,我們已成功使用 Pandas 的 stack() 函式將寬格式 DataFrame 轉換為整潔格式 DataFrame。
結論
在本文中,我們學習瞭如何使用 Pandas 的 stack() 函式將寬格式 DataFrame 轉換為整潔格式 DataFrame。首先,我們探討了寬格式和整潔格式 DataFrame 之間的區別,後者更容易分析和處理。然後,我們透過一個示例場景進行了演示,在這個場景中,我們使用了 stack() 函式來轉換一個包含學生不同科目分數的寬格式 DataFrame。我們還提供了有關如何應用 stack() 函式的分步指南,並展示了生成的整潔格式 DataFrame 的結構及其列。總的來說,Pandas 的 stack() 函式是用於重塑和轉換 DataFrame 以滿足我們的資料分析需求的寶貴工具。