從基本概念開始,然後逐步深入學習 pandas
的各種功能。這是一個非常強大的 Python 資料分析工具,常用於處理結構化數據。
pandas
主要有兩個核心資料結構:
Series
組成。import numpy as np
import pandas as pd
s1 = pd.Series([78,82,86,65])
print(s1)
s1 = pd.Series([78,82,86,65], index=list("ABCD"))
print(s1)
s1 = pd.Series({'a':78,'b':82,'c':86,'d':65})
print(s1)
左邊是欄位的索引,右邊是數值
0 78
1 82
2 86
3 65
dtype: int64
A 78
B 82
C 86
D 65
dtype: int64
a 78
b 82
c 86
d 65
dtype: int64
Series
提供的索引標籤來取值。print(s1[0]) # 78
print(s1['a']) # 78
要避免混淆,可以使用 .loc[]
(根據標籤取值)和 .iloc[]
(根據位置取值)這兩個方法:
s1.loc['a']
:根據標籤 'a'
取值。s1.iloc[0]
:根據位置 0
取值。print(s1.iloc[0]) # 78
print(s1.loc['a']) # 78
DataFrame
是一個表格數據,包含多個列,每列都可以有不同的數據類型。
# 建立一個 DataFrame
data = {
'Name': ['Alice', 'Bob', 'Charlie', 'David'],
'Age': [24, 27, 22, 32],
'City': ['New York', 'Los Angeles', 'Chicago', 'Houston']
}
df = pd.DataFrame(data)
print(df)
用成大家熟悉的Excel型式呈現,Pandas也支援讀取寫入Excel。
Name Age City
0 Alice 24 New York
1 Bob 27 Los Angeles
2 Charlie 22 Chicago
3 David 32 Houston
DataFrame
也可以使用類似的索引方式來取值。不過,因為 DataFrame 是二維結構,所以會跟Series
有些細節會有所不同。讓我們來看看 DataFrame 的索引用法
# 選取 'Name' 列
print(df['Name'])
# 輸出
0 Alice
1 Bob
2 Charlie
3 David
Name: Name, dtype: object
.loc[]
基於標籤索引loc
方法允許你使用標籤索引來選取特定的行或行和列的組合。
# 選取標籤索引為 1 的行
print(df.loc[1])
# 輸出
Name Bob
Age 27
City Los Angeles
Name: 1, dtype: object
就很像Excel用篩選的方式,選出Bob這一行的資料,只是Excel是用列篩選的方式,Padas是取出選取行的方式。
# 選取標籤索引為 1,並且僅顯示 'Name' 列
print(df.loc[1, 'Name'])
# 輸出
Bob
.iloc[]
基於位置索引iloc
方法允許你使用數字位置來選取資料。
# 選取第一行(行索引為 0) print(df.iloc[0])
# 輸出
Name Alice
Age 24
City New York
Name: 0, dtype: object
# 選取第一行第一列 print(df.iloc[0, 0])
# 輸出
Alice
# 選取前兩行
print(df.loc[:2])
# 輸出前兩行
Name Age City
0 Alice 24 New York
1 Bob 27 Los Angeles
print(df.iloc[:2])
# 輸出前兩行
Name Age City
0 Alice 24 New York
1 Bob 27 Los Angeles
# 選取前兩行和 'Name' 與'Age' 列
print(df.loc[:1, ('Name','Age')])
# 輸出
Name Age
0 Alice 24
1 Bob 27
# 選取前兩行和前兩列
print(df.iloc[:2,:2])
# 輸出
Name Age
0 Alice 24
1 Bob 27
你還可以根據布林條件選取資料:
# 選取 Age 大於 25 的行
print(df[df['Age'] > 25])
# 輸出
Name Age City
1 Bob 27 Los Angeles
3 David 32 Houston
df['列名']
:選取特定的列。df.loc[行標籤, 列標籤]
:基於標籤選取特定的行和列。df.iloc[行位置, 列位置]
:基於數字位置選取特定的行和列。df[條件]
:根據布林條件選取行。這些方法與 Series
的用法相似,但由於 DataFrame
是二維的,所以在選取資料時會涉及到行和列的組合。