
- Python Pandas 教程
- Python Pandas - 首頁
- Python Pandas - 簡介
- Python Pandas - 環境配置
- Python Pandas - 基礎
- Python Pandas - 資料結構介紹
- Python Pandas - 索引物件
- Python Pandas - Panel(面板)
- 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 中,資料索引和選擇對於高效處理 Series 和 DataFrame 物件中的資料至關重要。這些操作可以幫助您輕鬆地切片、切塊和訪問資料的子集。
這些操作涉及檢索資料結構(無論是 Series 還是 DataFrame)的特定部分。此過程對於資料分析至關重要,因為它允許您專注於相關資料、應用轉換和執行計算。
pandas 中的索引至關重要,因為它提供了有助於分析、視覺化和互動式顯示的元資料。它自動對齊資料以簡化操作,並簡化獲取和設定資料子集的過程。
本教程將探討使用 Pandas 切片、切塊和操作資料的各種方法,幫助您瞭解如何訪問和修改資料的子集。
Pandas 中的索引型別
與 Python 和 NumPy 的索引([ ])和屬性(.)運算子類似,Pandas 提供了直接訪問其資料結構中資料的方法。但是,由於被訪問的資料型別可能無法預測,因此僅依賴這些標準運算子可能會導致最佳化方面的挑戰。
Pandas 提供了幾種用於索引和選擇資料的方法,例如:
使用 .loc 進行基於標籤的索引
使用 .iloc 進行基於整數位置的索引
使用方括號 [] 進行索引
使用 .loc 進行基於標籤的索引
.loc 索引器用於基於標籤的索引,這意味著您可以按其標籤訪問行和列。它還支援布林陣列進行條件選擇。
.loc() 有多種訪問方法,例如:
單個標量標籤:選擇單行或單列,例如:df.loc['a']。
標籤列表:選擇多行或多列,例如:df.loc[['a', 'b']]。
標籤切片:使用標籤進行切片,例如:df.loc['a':'f'](起始和結束都包含)。
布林陣列:基於條件過濾資料,例如:df.loc[boolean_array]。
loc 使用兩個單值/列表/範圍運算子,用 ',' 分隔。第一個表示行,第二個表示列。
示例 1
這是一個基本示例,它使用 loc 索引器為特定列選擇所有行。
#import the pandas library and aliasing as pd import pandas as pd import numpy as np df = pd.DataFrame(np.random.randn(8, 4), index = ['a','b','c','d','e','f','g','h'], columns = ['A', 'B', 'C', 'D']) print("Original DataFrame:\n", df) #select all rows for a specific column print('\nResult:\n',df.loc[:,'A'])
其輸出如下:
Original DataFrame: A B C D a 0.962766 -0.195444 1.729083 -0.701897 b -0.552681 0.797465 -1.635212 -0.624931 c 0.581866 -0.404623 -2.124927 -0.190193 d -0.284274 0.019995 -0.589465 0.914940 e 0.697209 -0.629572 -0.347832 0.272185 f -0.181442 -0.000983 2.889981 0.104957 g 1.195847 -1.358104 0.110449 -0.341744 h -0.121682 0.744557 0.083820 0.355442 Result: a 0.962766 b -0.552681 c 0.581866 d -0.284274 e 0.697209 f -0.181442 g 1.195847 h -0.121682 Name: A, dtype: float64
注意:生成的輸出在每次執行時都會有所不同,因為 DataFrame 是使用 NumPy 的隨機數生成器建立的。
示例 2
此示例選擇多列的所有行。
# import the pandas library and aliasing as pd import pandas as pd import numpy as np df = pd.DataFrame(np.random.randn(8, 4), index = ['a','b','c','d','e','f','g','h'], columns = ['A', 'B', 'C', 'D']) # Select all rows for multiple columns, say list[] print(df.loc[:,['A','C']])
其輸出如下:
A C a 0.391548 0.745623 b -0.070649 1.620406 c -0.317212 1.448365 d -2.162406 -0.873557 e 2.202797 0.528067 f 0.613709 0.286414 g 1.050559 0.216526 h 1.122680 -1.621420
示例 3
此示例選擇特定列的特定行。
# import the pandas library and aliasing as pd import pandas as pd import numpy as np df = pd.DataFrame(np.random.randn(8, 4), index = ['a','b','c','d','e','f','g','h'], columns = ['A', 'B', 'C', 'D']) # Select few rows for multiple columns, say list[] print(df.loc[['a','b','f','h'],['A','C']])
其輸出如下:
A C a 0.391548 0.745623 b -0.070649 1.620406 f 0.613709 0.286414 h 1.122680 -1.621420
示例 4
以下示例使用 loc 索引器選擇所有列的一系列行。
# import the pandas library and aliasing as pd import pandas as pd import numpy as np df = pd.DataFrame(np.random.randn(8, 4), index = ['a','b','c','d','e','f','g','h'], columns = ['A', 'B', 'C', 'D']) # Select range of rows for all columns print(df.loc['c':'e'])
其輸出如下:
A B C D c 0.044589 1.966278 0.894157 1.798397 d 0.451744 0.233724 -0.412644 -2.185069 e -0.865967 -1.090676 -0.931936 0.214358
使用 .iloc 進行基於整數位置的索引
.iloc 索引器用於基於整數的索引,允許您按其數值位置選擇行和列。此方法類似於標準 Python 和 NumPy 索引(即基於 0 的索引)。
單個整數:按其位置選擇資料,例如:df.iloc[0]。
整數列表:按其位置選擇多行或多列,例如:df.iloc[[0, 1, 2]]。
整數切片:使用整數進行切片,例如:df.iloc[1:3]。
布林陣列:與 .loc 類似,但用於位置。
示例 1
這是一個基本示例,它使用 iloc 索引器為所有列選擇 4 行。
# import the pandas library and aliasing as pd import pandas as pd import numpy as np df = pd.DataFrame(np.random.randn(8, 4), columns = ['A', 'B', 'C', 'D']) print("Original DataFrame:\n", df) # select all rows for a specific column print('\nResult:\n',df.iloc[:4])
其輸出如下:
Original DataFrame: A B C D 0 -1.152267 2.206954 -0.603874 1.275639 1 -0.799114 -0.214075 0.283186 0.030256 2 -1.823776 1.109537 1.512704 0.831070 3 -0.788280 0.961695 -0.127322 -0.597121 4 0.764930 -1.310503 0.108259 -0.600038 5 -1.683649 -0.602324 -1.175043 -0.343795 6 0.323984 -2.314158 0.098935 0.065528 7 0.109998 -0.259021 -0.429467 0.224148 Result: A B C D 0 -1.152267 2.206954 -0.603874 1.275639 1 -0.799114 -0.214075 0.283186 0.030256 2 -1.823776 1.109537 1.512704 0.831070 3 -0.788280 0.961695 -0.127322 -0.597121
示例 2
以下示例使用整數切片選擇特定資料。
import pandas as pd import numpy as np df = pd.DataFrame(np.random.randn(8, 4), columns = ['A', 'B', 'C', 'D']) # Integer slicing print(df.iloc[:4]) print(df.iloc[1:5, 2:4])
其輸出如下:
A B C D 0 0.699435 0.256239 -1.270702 -0.645195 1 -0.685354 0.890791 -0.813012 0.631615 2 -0.783192 -0.531378 0.025070 0.230806 3 0.539042 -1.284314 0.826977 -0.026251 C D 1 -0.813012 0.631615 2 0.025070 0.230806 3 0.826977 -0.026251 4 1.423332 1.130568
示例 3
此示例使用值列表透過切片選擇資料。
import pandas as pd import numpy as np df = pd.DataFrame(np.random.randn(8, 4), columns = ['A', 'B', 'C', 'D']) # Slicing through list of values print(df.iloc[[1, 3, 5], [1, 3]])
其輸出如下:
B D 1 0.890791 0.631615 3 -1.284314 -0.026251 5 -0.512888 -0.518930
使用方括號“[]”進行直接索引
使用 [] 進行直接索引是一種快速而直觀的資料訪問方式,類似於使用 Python 字典和 NumPy 陣列進行索引。它通常用於基本操作:
單列:按名稱訪問單列。
多列:透過傳遞列名列表來選擇多列。
行切片:使用基於整數的索引切片行。
示例 1
此示例演示如何使用方括號進行直接索引來訪問單列。
import pandas as pd import numpy as np df = pd.DataFrame(np.random.randn(8, 4), columns = ['A', 'B', 'C', 'D']) # Accessing a Single Column print(df['A'])
其輸出如下:
0 -0.850937 1 -1.588211 2 -1.125260 3 2.608681 4 -0.156749 5 0.154958 6 0.396192 7 -0.397918 Name: A, dtype: float64
示例 2
此示例使用直接索引選擇多列。
import pandas as pd import numpy as np df = pd.DataFrame(np.random.randn(8, 4), columns = ['A', 'B', 'C', 'D']) # Accessing Multiple Columns print(df[['A', 'B']])
其輸出如下:
A B 0 0.167211 -0.080335 1 -0.104173 1.352168 2 -0.979755 -0.869028 3 0.168335 -1.362229 4 -1.372569 0.360735 5 0.428583 -0.203561 6 -0.119982 1.228681 7 -1.645357 0.331438