在 Pandas 中,資料對齊是進行資料運算的基礎。無論是 Series 還是 DataFrame,運算都會根據索引和欄位自動對齊。當索引或欄位不匹配時,Pandas 會以 NaN 填充缺失值,確保運算結果的完整性。開發者可以利用 fill_value 引數指定自定義的填充值,避免 NaN 的出現,提升資料處理的靈活性。合併多個資料集時,Pandas 提供了強大的合併功能,方便資料整合與分析。實際應用中,資料常包含缺失值,Pandas 提供了 isnullnotnulldropnafillna 等方法來偵測、刪除和填充缺失值,確保資料的品質和分析結果的可靠性。理解 NaN 和 None 的區別,並根據資料型別選擇合適的填充方法,對於有效處理缺失值至關重要。

資料對齊與運算

在 Pandas 中,當進行資料運算時,索引(index)和欄位(columns)對齊是一個重要的概念。這意味著當兩個 Series 或 DataFrame 進行運算時,Pandas 會根據索引和欄位名稱進行對齊。

Series 運算

讓我們首先考慮 Series 的運算。假設我們有兩個 Series,A 和 B,它們的索引不同:

import pandas as pd

A = pd.Series([2, 4, 6], index=[1, 2, 3])
B = pd.Series([1, 3, 5], index=[1, 2, 3])

當我們將 A 和 B 相加時,Pandas 會根據索引進行對齊:

A + B

輸出結果為:

1    3.0
2    7.0
3   11.0
dtype: float64

如果索引不匹配,Pandas 會使用 NaN(Not a Number)填充缺失的值:

A = pd.Series([2, 4, 6], index=[1, 2, 3])
B = pd.Series([1, 3, 5], index=[1, 2, 4])

A + B

輸出結果為:

1    3.0
2    7.0
3    NaN
4    NaN
dtype: float64

使用 fill_value 修改缺失值

如果不想要使用 NaN 作為缺失值,可以使用 add() 方法的 fill_value 引數指定一個填充值:

A.add(B, fill_value=0)

輸出結果為:

1    3.0
2    7.0
3    6.0
4    5.0
dtype: float64

DataFrame 運算

DataFrame 的運算也會根據索引和欄位進行對齊。假設我們有兩個 DataFrame,A 和 B,它們的索引和欄位不同:

A = pd.DataFrame({'a': [1, 2], 'b': [3, 4]}, index=[1, 2])
B = pd.DataFrame({'a': [5, 6], 'b': [7, 8]}, index=[1, 2])

當我們將 A 和 B 相加時,Pandas 會根據索引和欄位進行對齊:

A + B

輸出結果為:

   a   b
1  6  10
2  8  12

如果索引或欄位不匹配,Pandas 會使用 NaN 填充缺失的值。

圖表翻譯:

內容解密:

在上面的例子中,我們可以看到 Pandas 如何根據索引和欄位進行對齊。當進行運算時,Pandas 會根據索引和欄位名稱進行對齊,如果索引或欄位不匹配,Pandas 會使用 NaN 填充缺失的值。同時,我們也可以使用 add() 方法的 fill_value 引數指定一個填充值,以避免使用 NaN。

資料合併與運算

當我們處理多個資料集時,瞭解如何正確地合併和運算這些資料是非常重要的。Pandas 提供了強大的工具來處理這些任務,包括資料框架(DataFrame)的合併和運算。

資料框架的加法運算

在上面的例子中,我們看到兩個資料框架 AB 如何進行加法運算。這個運算是根據索引(index)進行的,這意味著即使 AB 的列順序不同,Pandas 仍然可以正確地對齊這些資料並進行運算。

import pandas as pd
import numpy as np

# 建立隨機資料
rng = np.random.default_rng()

# 建立資料框架 A
A = pd.DataFrame(rng.integers(0, 10, (3, 3)), columns=['a', 'b', 'c'])

# 建立資料框架 B
B = pd.DataFrame(rng.integers(0, 10, (3, 3)), columns=['b', 'a', 'c'])

# 進行加法運算
result = A + B

print(result)

處理缺失值

在進行加法運算時,如果兩個資料框架中有一個位置的值缺失,則結果在那個位置也會是缺失值(NaN)。為了避免這種情況,我們可以使用 add 方法並指定 fill_value 引數來填充缺失值。

# 計算 A 中所有值的平均
fill_value = A.values.mean()

# 進行加法運算並填充缺失值
result = A.add(B, fill_value=fill_value)

print(result)

Pandas資料操作:運算元與方法的對應

Pandas是一個強大的資料操作函式庫,提供了多種方法來進行資料運算。在本文中,我們將探討Pandas中運算元的使用方法,以及它們與相應的Pandas方法之間的對應關係。

運算元與方法的對應

下表列出了Python運算元與其相應的Pandas方法:

Python運算元Pandas方法
+add
-sub, subtract
*mul, multiply
/truediv, div, divide
//floordiv
%mod
**pow

這些方法可以用於DataFrame和Series之間的運算。例如,假設我們有兩個DataFrame,df1df2,我們可以使用+運算元或add()方法來計算它們的和:

import pandas as pd

# 建立兩個DataFrame
df1 = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
df2 = pd.DataFrame({'A': [7, 8, 9], 'B': [10, 11, 12]})

# 使用+運算元
result1 = df1 + df2

# 使用add()方法
result2 = df1.add(df2)

print(result1)
print(result2)

DataFrame和Series之間的運算

當我們進行DataFrame和Series之間的運算時,Pandas會根據索引和欄位進行對齊。結果將是一個新的DataFrame或Series。例如:

import pandas as pd
import numpy as np

# 建立一個DataFrame
df = pd.DataFrame(np.random.randint(0, 10, size=(3, 4)), columns=['Q', 'R', 'S', 'T'])

# 建立一個Series
s = pd.Series([1, 2, 3, 4], index=['Q', 'R', 'S', 'T'])

# 進行運算
result = df - s

print(result)

在這個例子中,Pandas會根據索引和欄位進行對齊,然後進行減法運算。

內容解密:

當我們進行資料操作時,常常需要對整個 DataFrame 或 Series 進行元素級別的運算。 Pandas 提供了多種方法來實作這種運算,包括使用運算子(如 -)和呼叫對應的物件方法(如 subtract)。

在上面的例子中,我們首先建立了一個 DataFrame df,然後使用減法運算子 (-) 對其進行元素級別的減法運算。具體來說,我們計算了 df 與其第一行 (df.iloc[0]) 的差值。結果是一個新的 DataFrame,其中每個元素都是原始 DataFrame 中對應元素與第一行中對應元素的差值。

import pandas as pd

# 建立一個示例DataFrame
data = {'Q': [0, 1, 4], 
        'R': [0, 4, -2], 
        'S': [0, -2, 4], 
        'T': [0, 8, 1]}
df = pd.DataFrame(data)

# 計算df與其第一行的差值
result = df - df.iloc[0]
print(result)

圖表翻譯:

此圖示為上述程式碼的執行結果,展示了原始 DataFrame df 與其第一行的差值。每個元素都是透過從原始 DataFrame 中的對應元素中減去第一行中對應元素的值而得出的。

程式碼解說:

在這段程式碼中,我們使用 iloc 方法選取 DataFrame 的第一行,然後使用減法運算子 (-) 對原始 DataFrame 與第一行進行元素級別的減法運算。結果是一個新的 DataFrame,其中每個元素都是原始 DataFrame 中對應元素與第一行中對應元素的差值。

此外,Pandas 還提供了 subtract 方法來實作元素級別的減法運算。這個方法可以指定軸向(axis),從而允許使用者在列或行方向上進行運算。

# 使用subtract方法進行減法運算
result = df.subtract(df['R'], axis=0)
print(result)

在這個例子中,我們使用 subtract 方法計算原始 DataFrame df 與其 ‘R’ 列之間的差值。結果是一個新的 DataFrame,其中每個元素都是原始 DataFrame 中對應元素與 ‘R’ 列中對應元素的差值。

圖表翻譯:

此圖示為上述程式碼的執行結果,展示了原始 DataFrame df 與其 ‘R’ 列之間的差值。每個元素都是透過從原始 DataFrame 中的對應元素中減去 ‘R’ 列中對應元素的值而得出的。

處理缺失資料

在真實世界中,資料往往不完整或不齊一。許多有趣的資料集都會有一些缺失的資料。為了處理這種情況,Pandas 提供了多種方法來表示和處理缺失資料。

缺失資料的表示

Pandas 使用兩種方法來表示缺失資料:使用 NaN(Not a Number)作為哨兵值,或者使用可空資料型別(nullable data types)。NaN 是 IEEE 浮點數規範的一部分,代表無效或未定義的值。

可空資料型別

Pandas 的可空資料型別允許您建立一個帶有遮罩陣列的 DataFrame,以追蹤缺失的條目。這些缺失的條目被呈現為特殊值 pd.NA。

None 作為哨兵值

對於某些資料型別,Pandas 使用 None 作為哨兵值。None 是一個 Python 物件,這意味著任何包含 None 的陣列必須具有 dtype=object,即它必須是一個 Python 物件序列。

NaN 的使用

NaN 是用於表示浮點數中缺失或無效值的哨兵值。它是 IEEE 浮點數規範的一部分,可以用於表示無法進行算術運算的結果。

選擇哨兵值或遮罩陣列

選擇使用哨兵值或遮罩陣列來表示缺失資料取決於具體的情況。使用哨兵值可以簡化程式碼,但可能會限制有效值的範圍。使用遮罩陣列可以提供更大的靈活性,但可能會增加儲存和計算的開銷。

內容解密:

以下程式碼示範瞭如何使用 Pandas 處理缺失資料:

import pandas as pd
import numpy as np

# 建立一個包含缺失值的 DataFrame
df = pd.DataFrame({'A': [1, 2, np.nan, 4], 'B': [5, np.nan, 7, 8]})

# 使用 NaN 作為哨兵值
print(df.isnull())

# 使用可空資料型別
df_nullable = df.astype('Int64')
print(df_nullable.isnull())

圖表翻譯:

在這個圖表中,我們展示瞭如何使用 Pandas 處理缺失資料。原始資料包含缺失值,然後我們使用 NaN 或可空資料型別來處理這些缺失值。最終,我們得到處理後的資料。

處理缺失資料:None 與 NaN

在資料分析中,缺失資料是一個常見的問題。Python 的 NumPy 函式庫提供了兩種方法來表示缺失資料:None 和 NaN。下面,我們將探討這兩種方法的區別和使用方法。

None

None 是 Python 的內建常數,用於表示空或缺失的值。當我們在 NumPy 陣列中使用 None 時,NumPy 會將陣列的資料型別設為 object。這意味著資料將被儲存為 Python 物件,而不是原生資料型別。

import numpy as np

vals1 = np.array([1, None, 2, 3])
print(vals1)

輸出:

array([1, None, 2, 3], dtype=object)

使用 None 的缺點是,它會導致資料操作變慢,因為 NumPy 需要在 Python 層面上進行操作。例如,對於一個包含 1 百萬個整數的陣列,使用 None 的 sum 運算比使用原生整數型別的 sum 運算慢了 30 倍以上。

%timeit np.arange(1E6, dtype=int).sum()
%timeit np.arange(1E6, dtype=object).sum()

輸出:

2.73 ms ± 288 μs per loop (mean ± std. dev. of 7 runs, 100 loops each)
92.1 ms ± 3.42 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)

此外,因為 Python 不支援對 None 進行算術運算,因此對陣列進行聚合運算(如 sum 或 min)將導致錯誤。

vals1.sum()

輸出:

TypeError: unsupported operand type(s) for +: 'int' and 'NoneType'

NaN

NaN(Not a Number)是一個特殊的浮點數值,用於表示缺失或無效的資料。與 None 不同,NaN 是一個原生浮點數值,可以與其他資料進行快速的算術運算。

vals2 = np.array([1, np.nan, 3, 4])
print(vals2)

輸出:

array([ 1., nan, 3., 4.])

注意到 NumPy 對於這個陣列選擇了一個原生浮點數型別,這意味著可以進行快速的運算。然而,NaN 有一個特殊的性質:它會“感染”任何與它進行算術運算的其他資料。

1 + np.nan
0 * np.nan

輸出:

nan
nan

這意味著對 NaN 進行聚合運算(如 sum 或 min)將得到一個 NaN 結果。

vals2.sum(), vals2.min(), vals2.max()

雖然 NaN 可能不總是是有用的,但它至少不會導致錯誤,並且可以在後續的資料分析中被處理和過濾。因此,在處理缺失資料時,NaN 是一個更好的選擇。

使用NaN和None進行缺失值處理

在進行資料分析時,常會遇到缺失值的問題。NumPy和Pandas都提供了處理缺失值的方法,其中包括使用NaN(Not a Number)和None。

NaN在NumPy中的應用

NaN是一個特殊的浮點數值,表示未定義或無效的數值。在NumPy中,NaN可以用於表示缺失值。例如:

import numpy as np

vals2 = [1, 2, np.nan, 4]
print(np.nansum(vals2), np.nanmin(vals2), np.nanmax(vals2))

輸出:

(8.0, 1.0, 4.0)

如上所示,NumPy提供了NaN-aware版本的聚合函式,例如np.nansumnp.nanminnp.nanmax,可以忽略NaN值。

NaN和None在Pandas中的應用

Pandas也提供了對NaN和None的支援,可以將兩者之間進行轉換。例如:

import pandas as pd

s = pd.Series([1, np.nan, 2, None])
print(s)

輸出:

0    1.0
1    NaN
2    2.0
3    NaN
dtype: float64

如上所示,Pandas會自動將None轉換為NaN。

資料型別的轉換

當在Pandas中遇到NA值時,會自動進行資料型別的轉換。例如:

x = pd.Series(range(2), dtype=int)
x[0] = None
print(x)

輸出:

0    NaN
1    1.0
dtype: float64

如上所示,Pandas會自動將整數陣列轉換為浮點數陣列,以便容納NA值。

圖表翻譯:

如上所示,NumPy和Pandas都提供了對NaN和None的支援,可以忽略缺失值或自動進行資料型別的轉換。

處理 Pandas 中的空值

Pandas 是一個強大的資料分析函式庫,提供了多種方法來處理空值。空值可以是 None、NaN(Not a Number)或 NA(Not Available),這些值在資料分析中非常重要。

Pandas 中的空值型別

在 Pandas 中,空值可以是以下幾種型別:

  • none:Python 中的空值。
  • NaN(Not a Number):用於表示數值運算中無效或未定義的結果。
  • NA(Not Available):用於表示資料缺失或未知。

Pandas 的 Nullable Dtypes

早期版本的 Pandas 中,NaN 和 None 是唯一可用的空值表示方式。然而,這種方法存在一些問題,例如在整數陣列中表示空值的困難。為瞭解決這個問題,Pandas 後來引入了可空的資料型別(nullable dtypes),這些型別與普通的資料型別區別開來(例如,pd.Int32np.int32)。

示例:建立帶有空值的 Series

以下示例展示瞭如何建立一個包含整數和空值的 Series:

import pandas as pd
import numpy as np

# 建立一個包含整數和空值的 Series
series = pd.Series([1, np.nan, 2, None, pd.NA], dtype='Int32')

print(series)

輸出結果:

0      1
1    <NA>
2      2
3    <NA>
4    <NA>
dtype: Int32

處理空值的方法

Pandas 提供了多種方法來處理空值,包括:

  • isnull:生成一個布林遮罩,指示哪些值是空的。
  • notnull:與 isnull 相反,生成一個布林遮罩,指示哪些值不是空的。
  • dropna:刪除包含空值的行或列。

以下示例展示瞭如何使用 isnulldropna 方法:

import pandas as pd
import numpy as np

# 建立一個包含整數和空值的 DataFrame
data = {'A': [1, 2, np.nan, 4],
        'B': [5, np.nan, 7, 8]}
df = pd.DataFrame(data)

print("原始 DataFrame:")
print(df)

print("\n使用 isnull 方法檢測空值:")
print(df.isnull())

print("\n使用 dropna 方法刪除包含空值的行:")
print(df.dropna())

輸出結果:

原始 DataFrame:
     A    B
0  1.0  5.0
1  2.0  NaN
2  NaN  7.0
3  4.0  8.0

使用 isnull 方法檢測空值:
       A      B
0  False  False
1  False   True
2   True  False
3  False  False

使用 dropna 方法刪除包含空值的行:
     A    B
0  1.0  5.0
3  4.0  8.0

處理缺失值的方法

在資料分析中,缺失值是常見的問題。Pandas提供了多種方法來處理缺失值,包括偵測、刪除和填充。

偵測缺失值

Pandas的isnull()notnull()方法可以用來偵測缺失值。這兩個方法會傳回一個布林遮罩(Boolean mask),指出哪些值是缺失的。

import pandas as pd
import numpy as np

# 建立一個Series,包含缺失值
data = pd.Series([1, np.nan, 'hello', None])

# 偵測缺失值
print(data.isnull())

輸出:

0    False
1     True
2    False
3     True
dtype: bool

刪除缺失值

Pandas的dropna()方法可以用來刪除缺失值。對於Series,結果很直觀:

# 刪除缺失值
print(data.dropna())

輸出:

0      1
2    hello
dtype: object

填充缺失值

Pandas的fillna()方法可以用來填充缺失值。這個方法會傳回一個新的Series或DataFrame,裡面的缺失值已經被填充。

# 填充缺失值
print(data.fillna('未知'))

輸出:

0        1
1      未知
2     hello
3      未知
dtype: object

布林遮罩的使用

布林遮罩可以用來直接索引Series或DataFrame。例如:

# 使用布林遮罩索引Series
print(data[data.notnull()])

輸出:

0      1
2    hello
dtype: object

這些方法可以幫助您處理缺失值,讓您的資料分析更加準確。

處理缺失值的方法

在資料分析中,缺失值是常見的問題。使用 Pandas 這個 Python 函式庫,可以輕易地處理缺失值。對於 Series 物件,dropna() 方法可以直接移除含有缺失值的元素。

import pandas as pd
import numpy as np

# 建立一個 Series 物件
s = pd.Series([1, 2, np.nan, 4])

# 移除含有缺失值的元素
s.dropna()

對於 DataFrame 物件,dropna() 方法也可以用來移除含有缺失值的行或列。預設情況下,dropna() 會移除任何含有缺失值的行。

# 建立一個 DataFrame 物件
df = pd.DataFrame([[1, np.nan, 2],
                   [2, 3, 5],
                   [np.nan, 4, 6]])

# 移除含有缺失值的行
df.dropna()

如果你想移除含有缺失值的列,可以使用 axis=‘columns’ 引數。

# 移除含有缺失值的列
df.dropna(axis='columns')

但是,這種方法可能會移除一些有用的資料。為了避免這種情況,可以使用 how 或 thresh 引數來控制移除的條件。例如,你可以設定 how=‘all’ 來只移除所有元素都是缺失值的行或列。

# 只移除所有元素都是缺失值的行
df.dropna(how='all')

或者,你可以設定 thresh 引數來指定至少需要多少個非缺失值才不移除該行或列。

# 至少需要兩個非缺失值才不移除該行
df.dropna(thresh=2)

內容解密:

  • dropna() 方法可以用來移除 Pandas Series 或 DataFrame 中的缺失值。
  • 對於 Series,dropna() 會直接移除含有缺失值的元素。
  • 對於 DataFrame,dropna() 會移除含有缺失值的行或列,視 axis 引數而定。
  • how 引數可以用來控制移除的條件,例如 ‘any’ 或 ‘all’。
  • thresh 引數可以用來指定至少需要多少個非缺失值才不移除該行或列。

圖表翻譯:

@startuml
skinparam backgroundColor #FEFEFE
skinparam componentStyle rectangle

title Pandas資料對齊與合併運算和缺失值處理

package "Pandas 資料處理" {
    package "資料結構" {
        component [Series
一維陣列] as series
        component [DataFrame
二維表格] as df
        component [Index
索引] as index
    }

    package "資料操作" {
        component [選取 Selection] as select
        component [篩選 Filtering] as filter
        component [分組 GroupBy] as group
        component [合併 Merge/Join] as merge
    }

    package "資料轉換" {
        component [重塑 Reshape] as reshape
        component [透視表 Pivot] as pivot
        component [聚合 Aggregation] as agg
    }
}

series --> df : 組成
index --> df : 索引
df --> select : loc/iloc
df --> filter : 布林索引
df --> group : 分組運算
group --> agg : 聚合函數
df --> merge : 合併資料
df --> reshape : melt/stack
reshape --> pivot : 重新組織

note right of df
  核心資料結構
  類似 Excel 表格
end note

@enduml

圖表翻譯:

上述流程圖展示瞭如何使用 dropna() 方法處理 Pandas 中的缺失值。首先,檢查原始資料是否含有缺失值。如果有,則根據 axis、how 和 thresh 引數決定是否移除含有缺失值的行或列。最終,得到處理後的結果。

處理缺失值

在資料分析中,缺失值是常見的問題。Pandas 提供了多種方法來處理缺失值,包括刪除和填充。

刪除缺失值

使用 dropna 方法可以刪除含有缺失值的列或行。例如:

import pandas as pd
import numpy as np

# 建立一個 DataFrame
df = pd.DataFrame({
    'A': [1, 2, np.nan],
    'B': [np.nan, 3, 4],
    'C': [5, 6, np.nan]
})

# 刪除含有缺失值的列
df_drop_col = df.dropna(axis='columns', how='all')
print(df_drop_col)

輸出:

     A    B    C
0  1.0  NaN  5.0
1  2.0  3.0  6.0
2  NaN  4.0  NaN

在這個例子中,dropna 方法刪除了含有所有缺失值的列。

填充缺失值

使用 fillna 方法可以填充缺失值。例如:

# 建立一個 Series
data = pd.Series([1, np.nan, 2, None, 3], index=list('abcde'), dtype='Int32')

# 填充缺失值
data_fill = data.fillna(0)
print(data_fill)

輸出:

a    1
b    0
c    2
d    0
e    3
dtype: Int32

在這個例子中,fillna 方法填充了缺失值為 0。

進階控制

dropna 方法還提供了 thresh 引數,可以指定最少非缺失值的數量。例如:

# 建立一個 DataFrame
df = pd.DataFrame({
    'A': [1, 2, np.nan],
    'B': [np.nan, 3, 4],
    'C': [5, 6, np.nan]
})

# 刪除含有少於 2 個非缺失值的行
df_drop_row = df.dropna(axis='rows', thresh=2)
print(df_drop_row)

輸出:

     A    B    C
1  2.0  3.0  6.0

在這個例子中,dropna 方法刪除了含有少於 2 個非缺失值的行。

處理缺失值的方法

在資料分析中,缺失值是常見的問題。以下介紹幾種處理缺失值的方法。

使用特定值填充

我們可以使用特定的值來填充缺失值,例如使用零填充:

import pandas as pd
import numpy as np

# 建立一個含有缺失值的Series
data = pd.Series([1, np.nan, 2, np.nan, 3], dtype='Int32')

# 使用零填充缺失值
data_filled = data.fillna(0)
print(data_filled)

輸出結果:

0    1
1    0
2    2
3    0
4    3
dtype: Int32

向前填充

另一個方法是使用向前填充(forward fill),即將前一個值填充到缺失值的位置:

# 向前填充缺失值
data_filled_ffill = data.fillna(method='ffill')
print(data_filled_ffill)

輸出結果:

0    1.0
1    1.0
2    2.0
3    2.0
4    3.0
dtype: float64

注意,在這個例子中,由於原始資料型別為Int32,但是在使用fillna方法時,pandas會自動將資料型別轉換為float64,以便容納缺失值。

其他填充方法

除了上述方法外,還有其他填充方法可供選擇,例如:

  • bfill: 向後填充(back fill)
  • interpolate: 線性插值填充
  • pad: 向前填充(等同於ffill

每種方法都有其適用場景,根據具體需求選擇合適的填充方法。

從資料處理的效能評估視角來看,Pandas 提供的資料對齊與合併、運算元與方法對應以及缺失值處理等機制,展現了其在資料操作方面的靈活性和效率。藉由索引和欄位對齊,Pandas 簡化了資料運算的複雜度,同時 fill_value 引數的運用有效解決了缺失值填充的痛點。然而,不同資料型別在運算中的自動轉換,例如 None 與 NaN 的互動,可能引入隱性的效能損耗,需要開發者注意。考量 NumPy 與 Pandas 在缺失值處理上的效能差異,針對大型資料集,建議優先使用 NaN-aware 的 NumPy 函式或 Pandas 的 Nullable Dtypes 以提升運算效率。展望未來,隨著資料集規模的不斷增長,Pandas 需持續最佳化其缺失值處理機制,例如更有效率的布林遮罩操作和更精細的資料型別控制,才能更好地滿足高效能資料分析的需求。玄貓認為,深入理解 Pandas 的資料對齊、運算和缺失值處理機制,並結合實際應用場景選擇最佳策略,才能最大程度地發揮 Pandas 的效能優勢。