
- Python Pandas 教程
- Python Pandas - 首頁
- Python Pandas - 簡介
- Python Pandas - 環境設定
- Python Pandas - 基礎
- Python Pandas - 資料結構介紹
- Python Pandas - 索引物件
- Python Pandas - 面板
- Python Pandas - 基本功能
- Python Pandas - 索引和資料選擇
- Python Pandas - Series
- Python Pandas - Series
- Python Pandas - 切片 Series 物件
- Python Pandas - Series 物件的屬性
- Python Pandas - Series 物件上的算術運算
- Python Pandas - 將 Series 轉換為其他物件
- Python Pandas - DataFrame
- Python Pandas - DataFrame
- Python Pandas - 訪問 DataFrame
- Python Pandas - 切片 DataFrame 物件
- Python Pandas - 修改 DataFrame
- Python Pandas - 從 DataFrame 中刪除行
- Python Pandas - DataFrame 上的算術運算
- Python Pandas - I/O 工具
- Python Pandas - I/O 工具
- Python Pandas - 使用 CSV 格式
- Python Pandas - 讀取和寫入 JSON 檔案
- Python Pandas - 從 Excel 檔案讀取資料
- Python Pandas - 將資料寫入 Excel 檔案
- Python Pandas - 使用 HTML 資料
- Python Pandas - 剪貼簿
- Python Pandas - 使用 HDF5 格式
- Python Pandas - 與 SQL 的比較
- Python Pandas - 資料處理
- Python Pandas - 排序
- Python Pandas - 重新索引
- Python Pandas - 迭代
- Python Pandas - 連線
- Python Pandas - 統計函式
- Python Pandas - 描述性統計
- Python Pandas - 使用文字資料
- Python Pandas - 函式應用
- Python Pandas - 選項和自定義
- Python Pandas - 視窗函式
- Python Pandas - 聚合
- Python Pandas - 合併/連線
- Python Pandas - 多級索引
- Python Pandas - 多級索引的基礎
- Python Pandas - 使用多級索引進行索引
- Python Pandas - 使用多級索引的高階重新索引
- Python Pandas - 重新命名多級索引標籤
- Python Pandas - 對多級索引進行排序
- Python Pandas - 二元運算
- Python Pandas - 二元比較運算
- Python Pandas - 布林索引
- Python Pandas - 布林掩碼
- Python Pandas - 資料重塑和透視
- Python Pandas - 透視
- Python Pandas - 堆疊和取消堆疊
- Python Pandas - 熔化
- Python Pandas - 計算虛擬變數
- Python Pandas - 類別資料
- Python Pandas - 類別資料
- Python Pandas - 類別資料的排序和分類
- Python Pandas - 比較類別資料
- Python Pandas - 處理缺失資料
- Python Pandas - 缺失資料
- Python Pandas - 填充缺失資料
- Python Pandas - 缺失值的插值
- Python Pandas - 刪除缺失資料
- Python Pandas - 使用缺失資料進行計算
- Python Pandas - 處理重複項
- Python Pandas - 重複資料
- Python Pandas - 計數和檢索唯一元素
- Python Pandas - 重複標籤
- Python Pandas - 分組和聚合
- Python Pandas - GroupBy
- Python Pandas - 時間序列資料
- Python Pandas - 日期功能
- Python Pandas - Timedelta
- Python Pandas - 稀疏資料結構
- Python Pandas - 稀疏資料
- Python Pandas - 視覺化
- Python Pandas - 視覺化
- Python Pandas - 其他概念
- Python Pandas - 警告和陷阱
- Python Pandas 有用資源
- Python Pandas - 快速指南
- Python Pandas - 有用資源
- Python Pandas - 討論
Python Pandas - 熔化
Pandas 中的熔化是指將 DataFrame 從寬格式轉換為長格式的過程。在寬格式中,資料分佈在多個列中。簡單來說,它會“反轉”DataFrame 的列為行,這對於視覺化和對資料集執行統計分析很有用。
Pandas 庫提供了melt() 和wide_to_long() 函式,用於將 DataFrame 從寬格式轉換為長格式。在本教程中,我們將學習 Pandas 中的melt() 和wide_to_long() 函式,以及如何使用這兩種方法將 DataFrame 從寬格式轉換為長格式。
Pandas 中的熔化
Pandas 中的melt() 函式將寬 DataFrame 轉換為長格式。這只不過是“反轉”DataFrame。
示例
以下示例演示了使用pandas.melt() 函式熔化一個簡單的 DataFrame。
import pandas as pd # Create a DataFrame df = pd.DataFrame({'A': {0: 'a', 1: 'b', 2: 'c'},'B': {0: 1, 1: 3, 2: 5},'C': {0: 2, 1: 4, 2: 6}}) # Display the input DataFrame print('Input DataFrame:\n', df) # Melt the DataFrame melted_df = pd.melt(df, id_vars=['A'], value_vars=['B']) print('Output melted DataFrame:\n', melted_df)
以下是上述程式碼的輸出 -
Input DataFrame:
A | B | C | |
---|---|---|---|
0 | a | 1 | 2 |
1 | b | 3 | 4 |
2 | c | 5 | 6 |
A | variable | value | |
---|---|---|---|
0 | a | B | 1 |
1 | b | B | 3 |
2 | c | B | 5 |
示例:在熔化時處理索引值
此示例演示了在使用pandas.melt() 函式熔化 DataFrame 時如何處理缺失值。
import pandas as pd # Create a DataFrame index = pd.MultiIndex.from_tuples([("person", "A"), ("person", "B")]) df= pd.DataFrame({ "first": ["John", "Mary"],"last": ["Doe", "Bo"], "height": [5.5, 6.0],"weight": [130, 150]}, index=index) # Display the input DataFrame print('Input DataFrame:\n', df) # Melt the DataFrame melted_df = pd.melt(df, id_vars=["first", "last"], ignore_index=False) print('Output melted DataFrame:\n', melted_df)
以下是上述程式碼的輸出 -
Input DataFrame:
first | last | height | weight | ||
---|---|---|---|---|---|
person | A | John | Doe | 5.5 | 130 |
B | Mary | Bo | 6.0 | 150 |
first | last | variable | value | ||
---|---|---|---|---|---|
person | A | John | Doe | height | 5.5 |
B | Mary | Bo | height | 6.0 | |
A | John | Doe | weight | 130.0 | |
B | Mary | Bo | weight | 150.0 |
使用 wide_to_long() 熔化
pandas wide_to_long() 函式提供了對轉換的更多控制。當您的列具有包含字尾的結構化命名模式時,它很有用。
示例
此示例使用wide_to_long() 函式執行高階熔化轉換。
import pandas as pd # Create a DataFrame df = pd.DataFrame({'famid': [1, 1, 1, 2, 2, 2, 3, 3, 3], 'birth': [1, 2, 3, 1, 2, 3, 1, 2, 3], 'ht1': [2.8, 2.9, 2.2, 2, 1.8, 1.9, 2.2, 2.3, 2.1], 'ht2': [3.4, 3.8, 2.9, 3.2, 2.8, 2.4, 3.3, 3.4, 2.9]}) # Display the input DataFrame print('Input DataFrame:\n', df) # Melt the DataFrame using wide_to_long() long_df = pd.wide_to_long(df, stubnames='ht', i=['famid', 'birth'], j='age') print('Output Long Melted DataFrame:\n', long_df)
以下是上述程式碼的輸出 -
Input DataFrame:
famid | birth | ht1 | ht2 | |
---|---|---|---|---|
0 | 1 | 1 | 2.8 | 3.4 |
1 | 1 | 2 | 2.9 | 3.8 |
2 | 1 | 3 | 2.2 | 2.9 |
3 | 2 | 1 | 2.0 | 3.2 |
4 | 2 | 2 | 1.8 | 2.8 |
5 | 2 | 3 | 1.9 | 2.4 |
6 | 3 | 1 | 2.2 | 3.3 |
7 | 3 | 2 | 2.3 | 3.4 |
8 | 3 | 3 | 2.1 | 2.9 |
ht | |||
---|---|---|---|
famid | birth | age | |
1 | 1 | 1 | 2.8 |
2 | 3.4 | ||
2 | 1 | 2.9 | |
2 | 3.8 | ||
3 | 1 | 2.2 | |
2 | 2.9 | ||
2 | 1 | 1 | 2.0 |
2 | 3.2 | ||
2 | 1 | 1.8 | |
2 | 2.8 | ||
3 | 1 | 1.9 | |
2 | 2.4 | ||
3 | 1 | 1 | 2.2 |
2 | 3.3 | ||
2 | 1 | 2.3 | |
2 | 3.4 | ||
3 | 1 | 2.1 | |
2 | 2.9 |
廣告