Python Pandas中Series和向量之間的區別


Pandas是一個著名的開源Python庫,它提供了廣泛的功能,使資料分析更有效率。Pandas包主要用於資料預處理活動,包括資料清洗、轉換和操作。因此,它是分析師和資料科學家的一個非常有用的工具。本文討論了Pandas中兩個最流行的資料結構——Series和DataFrame,以及Series和向量的比較。

Python Pandas Series

在Python Pandas庫中,Series是一個一維的帶標籤陣列,可以儲存任何資料型別。它類似於電子表格中的一列或R中的資料框。Series是透過將值列表傳遞給pd.Series()函式建立的,可以使用索引或標籤訪問。

標籤必須是可雜湊型別,但不必唯一。該物件具有多種用於處理索引的方法,並支援基於整數和標籤的索引。

它具有以下引數:

  • 資料 - 任何列表、字典或標量值都可以用作資料。

  • 索引 - 索引的值應該既唯一又可雜湊。它必須與資料大小相同。如果未提供索引,則預設使用np.arrange(n)。

  • Dtype - 它指的是Series的資料型別。

  • copy - 用於複製資訊。

建立Series

我們可以透過四種方式建立Series:

使用Pandas庫中的pd.Series函式

import pandas as pd
import numpy as np
# Create a series from a list
s = pd.Series([1, 3, 5, np.nan, 6, 8])
print(s)

輸出

0    1.0
1    3.0
2    5.0
3    NaN
4    6.0
5    8.0
dtype: float64

這將建立一個Pandas Series,其值為1, 3, 5, NaN, 6, 8。

直接從NumPy陣列建立Series

import numpy as np
import pandas as pd
# Create a NumPy array
data = np.array([1, 3, 5, np.nan, 6, 8])
# Create a series from the array
s = pd.Series(data)
print(s)

輸出

0    1.0
1    3.0
2    5.0
3    NaN
4    6.0
5    8.0
dtype: float64

這兩種方法都將建立一個Pandas Series,其索引是從0開始的整數範圍。您也可以在建立Series時指定自己的索引值。

從標量值建立Series

建立帶有標量值的Series是今天我們將要研究的最後一種方法。在這種情況下,您可以用單個值提供資料,並使其在索引持續時間內重複。

示例

import pandas as pd
if __name__ == '__main__':
   series = pd.Series(data=3.,
      index=['a', 'b', 'c', 'd'],
      name='series_from_scalar')
   print(series)

輸出

a    3.0
b    3.0
c    3.0
d    3.0
Name: series_from_scalar, dtype: float64

從ndarray建立Series

NumPy的random.randint()函式是建立填充隨機數的ndarray的最簡單方法之一。

示例

import numpy as np
import pandas as pd
if __name__ == '__main__':
   data = np.random.randint(0, 10, 5)
   series = pd.Series(data=data,
      index=['a', 'b', 'c', 'd', 'e'],
      name='series_from_ndarray')
   print(series)

輸出

a    5
b    7
c    0
d    8
e    5
Name: series_from_ndarray, dtype: int64

DataFrame

另一方面,向量是一維數值陣列。在Pandas中,向量可以用具有單個dtype(例如,整數、浮點數或物件)的Series表示。向量通常用於數學和統計運算,可以使用pd.to_numeric()函式或從資料框中選擇單個列來建立。

您可以使用pd從多個數據源(包括字典、二維NumPy陣列和Series)建立DataFrame。使用Pandas Series字典建立Pandas DataFrame

索引必須與Series長度相同。如果未指定索引,則將自動建立索引值:[0, …, len(data) – 1]。

#Creating a DataFrame from a dictionary of Series
import pandas as pd
data = pd.DataFrame({
   "Class 1": pd.Series([22, 33, 38], index=["math avg", "science avg",  "english avg"]),
   "Class 2": pd.Series([45, 28, 36], index=["math avg", "science avg",  "english avg"]),
   "Class 3": pd.Series([32, 41, 47], index=["math avg", "science avg",  "english avg"])
})
 
print(data)

輸出

             Class 1  Class 2  Class 3
math avg          22       45       32
science avg       33       28       41
english avg       38       36       47

以下是Python Pandas中Series和DataFrame之間差異的總結

DataFrame

Series

資料結構

二維表

一維陣列

可以包含異構資料

可以包含列標籤

可以包含行標籤

可以按列或行標籤索引

可以按列或行標籤切片

支援算術運算

支援算術運算

結論

總而言之,Python Pandas中Series和向量的主要區別在於:

  • Series可以儲存任何資料型別,而向量只能儲存數值。

  • Series具有標籤索引,而向量沒有。

  • Series可以使用標籤或索引訪問,而向量只能使用索引訪問。

理解Series和向量之間的區別對於選擇適合您資料的適當資料結構以及在Pandas中操作和分析資料非常有用。

更新於:2023年5月5日

866 次瀏覽

開啟您的職業生涯

完成課程獲得認證

開始
廣告
© . All rights reserved.