2024-08-23|閱讀時間 ‧ 約 8 分鐘

[Python]資料分析工具pandas基礎介紹

從基本概念開始,然後逐步深入學習 pandas 的各種功能。這是一個非常強大的 Python 資料分析工具,常用於處理結構化數據。

基本概念

pandas 主要有兩個核心資料結構

  • Series: 一維的資料結構,類似於 Python 中的列表,但它可以帶有標籤(index)。
  • DataFrame: 二維的資料結構,類似於電子表格或數據表,由多個 Series 組成。

建立資料

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

取出數據

  • 位置索引 是基於數字的位置來取值,從 0 開始。
  • 標籤索引 是基於你為 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 是一個表格數據,包含多個列,每列都可以有不同的數據類型。

# 建立一個 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 方法允許你使用數字位置來選取資料。

# 選取第一行(行索引為 0print(df.iloc[0])

# 輸出
Name Alice
Age 24
City New York
Name: 0, dtype: object

選取特定行和列

# 選取第一行第一列 print(df.iloc[0, 0])

# 輸出
Alice

多行多列選取

loc用法與iloc一樣

# 選取前兩行
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

選取特定多行和多列

loc用法

# 選取前兩行和 'Name''Age'
print(df.loc[:1, ('Name','Age')])

# 輸出
Name Age
0 Alice 24
1 Bob 27

iloc用法

# 選取前兩行和前兩列
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 是二維的,所以在選取資料時會涉及到行和列的組合。


分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.