首頁 > 軟體

Pandas中Series的屬性,方法,常用操作使用案例

2022-07-25 18:02:48

包的引入:

import numpy as np
import pandas as pd

1. Series 物件的建立

1.1 建立一個空的 Series 物件

s = pd.Series()
print(s)
print(type(s))

1.2 通過列表建立一個 Series 物件

需要傳入一個列表序列

l = [1, 2, 3, 4]
s = pd.Series(l)
print(s)
print('-'*20)
print(type(s))

1.3 通過元組建立一個 Series 物件

需要傳入一個元組序列

t = (1, 2, 3)
s = pd.Series(t)
print(s)
print('-'*20)
print(type(s))

1.4 通過字典建立一個 Series 物件

需要傳入一個字典

m = {'zs': 12, 'ls': 23, 'ww': 22}
s = pd.Series(m)
print(s)
print('-'*20)
print(type(s))

1.5 通過 ndarray 建立一個 Series 物件

需要傳入一個 ndarray

ndarr = np.array([1, 2, 3])
s = pd.Series(ndarr)
print(s)
print('-'*20)
print(type(s))

1.6 建立 Series 物件時指定索引

index:用於設定 Series 物件的索引

age = [12, 23, 22, 34]
name = ['zs', 'ls', 'ww', 'zl']
s = pd.Series(age, index=name)
print(s)
print('-'*20)
print(type(s))

1.7 通過一個標量(數)建立一個 Series 物件

num = 999
s = pd.Series(num, index=[1, 2, 3, 4])
print(s)
print('-'*20)
print(type(s))

ndarr = np.arange(0, 10, 2)
s = pd.Series(5, index=ndarr)
print(s)
print('-'*20)
print(type(s))

2. Series 的屬性

2.1 values ---- 返回一個 ndarray 陣列

l = [11, 22, 33, 44]
s = pd.Series(l)
print(s)
print('-'*20)
ndarr = s.values
print(ndarr)
print('-'*20)
print(type(ndarr))

2.2 index ---- 返回 Series 的索引序列

d = {'zs': 12, 'ls': 23, 'ww': 35}
s = pd.Series(d)
print(s)
print('-'*20)
idx = s.index
print(idx)
print('-'*20)
print(type(idx))

2.3 dtype ---- 返回 Series 中元素的資料型別

d = {'zs': 12, 'ls': 23, 'ww': 35}
s = pd.Series(d)
print(s)
print('-'*20)
print(s.dtype)

2. 4 size ---- 返回 Series 中元素的個數

d = {'zs': 12, 'ls': 23, 'ww': 35}
s = pd.Series(d)
print(s)
print('-'*20)
print(s.size)

2.5 ndim ---- 返回 Series 的維數

d = {'zs': 12, 'ls': 23, 'ww': 35}
s1 = pd.Series(d)
print(s1)
print('-'*20)
print(s1.ndim)
l = [[1, 1], [2, 2], [3, 3]]
s2 = pd.Series(l)
print(s2)
print('-'*20)
print(s2.ndim)

2.6 shape ---- 返回 Series 的維度

d = {'zs': 12, 'ls': 23, 'ww': 35}
s1 = pd.Series(d)
print(s1)
print('-'*20)
print(s1.shape)
print()

l = [[1, 1], [2, 2], [3, 3]]
s2 = pd.Series(l)
print(s2)
print('-'*20)
print(s2.shape)

3. Series 的方法

3.1 mean() ---- 求算術平均數

l = [12, 23, 24, 34]
s = pd.Series(l, index=['zs', 'ls', 'ww', 'zl'])
print(s)
print()
print(s.mean())

3.2 min() max() ---- 求最值

l1 = [12, 23, 24, 34]
s1 = pd.Series(l, index=['zs', 'ls', 'ww', 'zl'])
print(s1)
print()
print(s1.max())
print(s1.min())
print()
l2 = ['ac', 'ca', 'cd', 'ab']
s2 = pd.Series(l2)
print(s2)
print()
print(s2.max())
print(s2.min())

3.3 argmax() argmin() idxmax() idxmin() ---- 獲取最值索引

l1 = [12, 23, 24, 34]
s1 = pd.Series(l, index=['zs', 'ls', 'ww', 'zl'])
print(s1)
print()
# argmax() -- 最大值的數位索引
# idxmax() -- 最大值的標籤索引
# 兩個都不支援字串型別的資料
print(s1.max(), s1.argmax(), s1.idxmax())
print(s1.min(), s1.argmin(), s1.idxmin())

3.4 median() ---- 求中位數

l = [12, 23, 24, 34]
s = pd.Series(l, index=['zs', 'ls', 'ww', 'zl'])
print(s)
print()
print(s.median())

3.5 value_counts() ---- 求頻數

l = [12, 23, 24, 34]
s = pd.Series(l, index=['zs', 'ls', 'ww', 'zl'])
print(s)
print()
print(s.value_counts())

3.6 mode() ---- 求眾數

l = [12, 23, 24, 34]
s = pd.Series(l, index=['zs', 'ls', 'ww', 'zl'])
print(s)
print()
print(s.mode())
print()
l = [12, 23, 24, 34, 34]
s = pd.Series(l, index=['zs', 'ls', 'ww', 'zl', 'zq'])
print(s)
print()
print(s.mode())

3.7 quantile() ---- 求四分位數

四分位數:把數值從小到大排列並分成四等分,處於三個分割點位置的數值就是四分位數。

需要傳入一個列表,列表中的元素為要獲取的數的對應位置

l = [1, 1, 2, 2, 3, 3, 4, 4]
s = pd.Series(l)
print(s)
print()
print(s.quantile([0, .25, .50, .75, 1]))

3.8 std() ---- 標準差

總體標準差是反映研究總體內個體之間差異程度的一種統計指標。
總體標準差計算公式:

由於總體標準差計算出來會偏小,所以採用 ( n − d d o f ) (n-ddof) (n−ddof)的方式適當擴大標準差,即樣本標準差。
樣本標準差計算公式:

l = [1, 1, 2, 2, 3, 3, 4, 4]
s = pd.Series(l)
print(s)
print()
# 總體標準差
print(s.std())
print()
print(s.std(ddof=1))
print()
# 樣本標準差
print(s.std(ddof=2))

3.9 describe() ---- 統計 Series 的常見統計學指標結果

l = [1, 1, 2, 2, 3, 3, 4, 4]
s = pd.Series(l)
print(s)
print()
print(s.describe())

3.10 sort_values() ---- 根據元素值進行排序

ascending:True為升序(預設),False為降序 3.10.1 升序

l = [4, 2, 1, 3]
s = pd.Series(l)
print(s)
print()
s = s.sort_values()
print(s)

3.10.2 降序

l = [4, 2, 1, 3]
s = pd.Series(l)
print(s)
print()
s = s.sort_values(ascending=False)
print(s)

3.11 sort_index() ---- 根據索引值進行排序

ascending:True為升序(預設),False為降序

3.11.2 升序

l = [12, 23, 24, 34]
s = pd.Series(l, index=['zs', 'ls', 'ww', 'zl'])
print(s)
print()
s = s.sort_index()
print(s)

3.11.2 降序

l = [12, 23, 24, 34]
s = pd.Series(l, index=['zs', 'ls', 'ww', 'zl'])
print(s)
print()
s = s.sort_index()
print(s)

3.12 apply() ---- 根據傳入的函數引數處理 Series 物件

需要傳入一個函數引數

# x 為當前遍歷到的元素
def func(x):
  if (x%2==0): return x+1
  else: return x

l = [12, 23, 24, 34]
s = pd.Series(l, index=['zs', 'ls', 'ww', 'zl'])
print(s)
print()
# 呼叫 apply 方法,會將 Series 中的每個元素帶入 func 函數中進行處理
s = s.apply(func)
print(s)

3.13 head() ---- 檢視 Series

物件的前 x 個元素 需要傳入一個數 x ,表示檢視前 x 個元素,預設為前5個

l = [12, 23, 24, 34]
s = pd.Series(l, index=['zs', 'ls', 'ww', 'zl'])
print(s)
print()
# head(x) 檢視 Series 物件的前 x 個元素
print(s.head(2))

3.14 tail() ---- 檢視 Series 物件的後 x 個元素

需要傳入一個數 x ,表示檢視後 x 個元素,預設為後5個

l = [12, 23, 24, 34]
s = pd.Series(l, index=['zs', 'ls', 'ww', 'zl'])
print(s)
print()
# tail(x) 檢視 Series 物件的後 x 個元素
print(s.tail(2))

4. Series 的常用操作

4.1 Series 物件的資料存取

4.1.1 使用數位索引進行存取

4.1.1.1 未自定義索引
l = [12, 23, 24, 34]
s = pd.Series(l)
print(s)
print()
print(s[0])
print()
print(s[1:-2])
print()
print(s[::2])
print()
print(s[::-1])

4.1.1.2 自定義索引
l = [12, 23, 24, 34]
s = pd.Series(l, index=['zs', 'ls', 'ww', 'zl'])
print(s)
print()
print(s[0])
print()
print(s[1:-2])
print()
print(s[::2])
print()
print(s[::-1])

4.1.2 使用自定義標籤索引進行存取

l = [12, 23, 24, 34]
s = pd.Series(l, index=['zs', 'ls', 'ww', 'zl'])
print(s)
print()
print(s['zs'])
print()
# 自定義標籤索引進行切片包含開始與結束位置
print(s['ls':'zl'])
print()
print(s['zs':'zl':2])
print()
# 注意切邊範圍的方向與步長的方向
print(s['zl':'zs':-1])

4.1.3 使用索引掩碼進行存取

l = [12, 23, 24, 34]
s = pd.Series(l, index=['zs', 'ls', 'ww', 'zl'])
print(s)
print()
idx = (s%2==0)
print(idx)
print()
# 索引掩碼(也是一個陣列)
# 索引掩碼個數與原陣列的個數一致,陣列每個元素都與索引掩碼中的元素一一對應
# 陣列每個元素都對應著索引掩碼中的一個True或False
# 只有索引掩碼中為True所對應元素組中的元素才會被選中
print(s[idx])

4.1.4 一次性存取多個元素

l = [12, 23, 24, 34]
s = pd.Series(l, index=['zs', 'ls', 'ww', 'zl'])
print(s)
print()
# 選出指定索引對應的元素
print(s[['zs', 'ww']])
print()
print(s[[1, 2]])

4.2 Series 物件資料元素的刪除

4.2.1 pop()

傳入要刪除元素的標籤索引

l = [12, 23, 24, 34]
s = pd.Series(l, index=['zs', 'ls', 'ww', 'zl'])
print(s)
print()
s.pop('ww')
print(s)

4.2.2 drop()

傳入要刪除元素的標籤索引

l = [12, 23, 24, 34]
s = pd.Series(l, index=['zs', 'ls', 'ww', 'zl'])
print(s)
print()
# drop() 會返回一個刪除元素後的新陣列,不會對原陣列進行修改
s = s.drop('zs')
print(s)

4.3 Series 物件資料元素的修改

4.3.1 通過標籤索引進行修改

l = [12, 23, 24, 34]
s = pd.Series(l, index=['zs', 'ls', 'ww', 'zl'])
print(s)
print()
s['zs'] = 22
print(s)

4.3.2 通過數位索引進行修改

l = [12, 23, 24, 34]
s = pd.Series(l, index=['zs', 'ls', 'ww', 'zl'])
print(s)
print()
s[1] = 22
print(s)

4.4 Series 物件資料元素的新增

4.4.1 通過標籤索引新增

l = [12, 23, 24, 34]
s = pd.Series(l, index=['zs', 'ls', 'ww', 'zl'])
print(s)
print()
s['ll'] = 22
print(s)

4.4.2 append()

需要傳入一個要新增到原 Series 物件的 Series 物件

l = [12, 23, 24, 34]
s = pd.Series(l, index=['zs', 'ls', 'ww', 'zl'])
print(s)
print()
# 可以新增已經存在的索引及其值
s2 = pd.Series([11, 13], index=['zs', 'wd'])
# append() 不會對原陣列進行修改
s = s.append(s2)
print(s)
print()
print(s['zs'])

到此這篇關於Pandas中Series的屬性,方法,常用操作使用案例的文章就介紹到這了,更多相關Pandas中Series屬性內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com