最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Pandas中Series序列的具體實(shí)現(xiàn)

 更新時(shí)間:2026年05月28日 14:52:40   作者:林深時(shí)見鹿1  
Series是 Pandas 專為一維數(shù)據(jù)設(shè)計(jì)的結(jié)構(gòu),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

一、Series 的核心定義

Series 是 Pandas 專為一維數(shù)據(jù)設(shè)計(jì)的結(jié)構(gòu),對(duì)比 NumPy 一維數(shù)組,核心差異是:

表格

特性Pandas SeriesNumPy 一維數(shù)組
索引支持自定義標(biāo)簽(字符串 / 數(shù)字 / 時(shí)間等)僅支持整數(shù)位置索引
數(shù)據(jù)類型可混合類型(如同時(shí)存 int/str)僅支持同一種數(shù)據(jù)類型
缺失值原生支持 NaN,內(nèi)置缺失值處理方法需手動(dòng)處理 NaN
功能內(nèi)置統(tǒng)計(jì) / 對(duì)齊 / 可視化等方法僅基礎(chǔ)數(shù)值計(jì)算

直觀理解:把 Series 想象成 “帶列名的一列數(shù)據(jù)”,由兩部分組成:

  1. values:數(shù)據(jù)本身(底層是 NumPy 數(shù)組);
  2. index:自定義標(biāo)簽(索引),和數(shù)據(jù)一一對(duì)應(yīng)。

二、創(chuàng)建 Series(核心語法)

創(chuàng)建 Series 的核心函數(shù)是 pd.Series(),最常用的 4 種方式如下:

1. 從列表 / 數(shù)組創(chuàng)建(基礎(chǔ))

import pandas as pd
import numpy as np
# 方式1:從列表創(chuàng)建(默認(rèn)整數(shù)索引 0,1,2...)
scores = [85, 92, 78, 90, 88]
s1 = pd.Series(scores)
print("從列表創(chuàng)建的Series:")
print(s1)
# 方式2:指定自定義索引
names = ["小明", "小紅", "小剛", "小麗", "小強(qiáng)"]
s2 = pd.Series(scores, index=names)
print("\n指定索引的Series:")
print(s2)
# 方式3:從NumPy數(shù)組創(chuàng)建
arr = np.array([15.2, 16.1, 14.8, 15.5])
s3 = pd.Series(arr, index=["1月", "2月", "3月", "4月"], name="月均溫度")
print("\n帶名稱的Series:")
print(s3)

輸出:

從列表創(chuàng)建的Series:
0    85
1    92
2    78
3    90
4    88
dtype: int64
 
指定索引的Series:
小明    85
小紅    92
小剛    78
小麗    90
小強(qiáng)    88
dtype: int64
 
帶名稱的Series:
1月    15.2
2月    16.1
3月    14.8
4月    15.5
Name: 月均溫度, dtype: float64

2. 從字典創(chuàng)建(索引 = 字典 key,值 = 字典 value)

import pandas as pd
# 字典:鍵=姓名,值=分?jǐn)?shù)
score_dict = {"小明":85, "小紅":92, "小剛":78, "小麗":90}
s4 = pd.Series(score_dict)
print("從字典創(chuàng)建的Series:")
print(s4)

輸出

從字典創(chuàng)建的Series:
小明    85
小紅    92
小剛    78
小麗    90
dtype: int64

3. 創(chuàng)建含缺失值的 Series

import pandas as pd
import numpy as np
# 含NaN的Series(缺失值)
s5 = pd.Series([85, np.nan, 92, 78, np.nan], index=["小明", "小紅", "小剛", "小麗", "小強(qiáng)"])
print("含缺失值的Series:")
print(s5)

輸出

含缺失值的Series:
小明    85.0
小紅     NaN
小剛    92.0
小麗    78.0
小強(qiáng)     NaN
dtype: float64

三、Series 的核心操作(索引 / 切片)

Series 支持兩種索引方式:標(biāo)簽索引(自定義 index)和位置索引(整數(shù)位置),這是和 NumPy 數(shù)組的核心區(qū)別。

1. 標(biāo)簽索引(最常用)

通過自定義索引取值 / 賦值:

import pandas as pd
s = pd.Series([85, 92, 78, 90], index=["小明", "小紅", "小剛", "小麗"])
# 取值:通過標(biāo)簽
print("小紅的分?jǐn)?shù):", s["小紅"])  # 92
# 賦值:通過標(biāo)簽
s["小剛"] = 80
print("\n修改小剛分?jǐn)?shù)后:")
print(s)
# 多標(biāo)簽取值(返回新Series)
print("\n小明和小麗的分?jǐn)?shù):")
print(s[["小明", "小麗"]])

輸出

小紅的分?jǐn)?shù): 92
 
修改小剛分?jǐn)?shù)后:
小明    85
小紅    92
小剛    80
小麗    90
dtype: int64
 
小明和小麗的分?jǐn)?shù):
小明    85
小麗    90
dtype: int64

2. 位置索引(和 NumPy 一致)

通過整數(shù)位置(0 開始)取值,可用 iloc 明確指定位置索引(推薦,避免歧義):

import pandas as pd
s = pd.Series([85, 92, 78, 90], index=["小明", "小紅", "小剛", "小麗"])
# 直接用整數(shù)(簡易寫法)
print("第2個(gè)元素(位置1):", s[1])  # 92
# 用iloc(明確位置索引,推薦)
print("第4個(gè)元素(位置3):", s.iloc[3])  # 90
# 位置切片
print("\n位置0-2的元素:")
print(s.iloc[0:3])

輸出:

第2個(gè)元素(位置1): 92
第4個(gè)元素(位置3): 90
 
位置0-2的元素:
小明    85
小紅    92
小剛    78
dtype: int64

3. 布爾索引(篩選數(shù)據(jù))

和 NumPy 類似,通過布爾條件篩選元素:

import pandas as pd
s = pd.Series([85, 92, 78, 90, 88], index=["小明", "小紅", "小剛", "小麗", "小強(qiáng)"])
# 篩選分?jǐn)?shù)≥90的元素
high_score = s[s >= 90]
print("90分以上的學(xué)生:")
print(high_score)
# 篩選分?jǐn)?shù)在80-90之間的元素
mid_score = s[(s >= 80) & (s < 90)]
print("\n80-90分的學(xué)生:")
print(mid_score)

輸出:

90分以上的學(xué)生:
小紅    92
小麗    90
dtype: int64
 
80-90分的學(xué)生:
小明    85
小強(qiáng)    88
dtype: int64

四、Series 的核心屬性與方法

1. 核心屬性(快速查看數(shù)據(jù)特征)

表格

屬性作用示例
values返回底層 NumPy 數(shù)組s.values → array([85,92,78,90])
index返回索引對(duì)象s.index → Index ([' 小明 ',' 小紅 ',' 小剛 ',' 小麗 '], dtype='object')
dtype返回?cái)?shù)據(jù)類型s.dtype → int64
shape返回形狀(一維元組)s.shape → (4,)
name返回 Series 名稱s.name → ' 分?jǐn)?shù)'
isnull()返回布爾 Series(NaN 為 True)s.isnull() → 小紅:True, 小強(qiáng):True
notnull()返回布爾 Series(非 NaN 為 True)s.notnull() → 小明:True, 小紅:False

運(yùn)行

import pandas as pd
import numpy as np
s = pd.Series([85, np.nan, 92, 78], index=["小明", "小紅", "小剛", "小麗"], name="分?jǐn)?shù)")
print("底層數(shù)組:", s.values)
print("索引:", s.index)
print("數(shù)據(jù)類型:", s.dtype)
print("形狀:", s.shape)
print("名稱:", s.name)
print("缺失值判斷:")
print(s.isnull())

輸出:

底層數(shù)組: [85. nan 92. 78.]
索引: Index(['小明', '小紅', '小剛', '小麗'], dtype='object')
數(shù)據(jù)類型: float64
形狀: (4,)
名稱: 分?jǐn)?shù)
缺失值判斷:
小明    False
小紅     True
小剛    False
小麗    False
dtype: bool

2. 常用方法(統(tǒng)計(jì) / 缺失值 / 排序)

(1)統(tǒng)計(jì)方法(和 NumPy 類似,但更友好)

import pandas as pd
import numpy as np
s = pd.Series([85, np.nan, 92, 78, 90], index=["小明", "小紅", "小剛", "小麗", "小強(qiáng)"])
# 基礎(chǔ)統(tǒng)計(jì)
print("均值(自動(dòng)忽略NaN):", s.mean())  # 86.25
print("中位數(shù):", s.median())            # 87.5
print("最大值/最小值:", s.max(), "/", s.min())  # 92 / 78
print("標(biāo)準(zhǔn)差:", s.std())              # 6.18...
# 描述性統(tǒng)計(jì)(一鍵生成)
print("\n描述性統(tǒng)計(jì):")
print(s.describe())

輸出:

均值(自動(dòng)忽略NaN): 86.25
中位數(shù): 87.5
最大值/最小值: 92.0 / 78.0
標(biāo)準(zhǔn)差: 6.18465843842649
 
描述性統(tǒng)計(jì):
count     4.000000
mean     86.250000
std       6.184658
min      78.000000
25%      83.250000
50%      87.500000
75%      90.500000
max      92.000000
dtype: float64

(2)缺失值處理

import pandas as pd
import numpy as np
s = pd.Series([85, np.nan, 92, 78, np.nan], index=["小明", "小紅", "小剛", "小麗", "小強(qiáng)"])
# 1. 刪除缺失值
s_drop = s.dropna()
print("刪除缺失值后:")
print(s_drop)
# 2. 填充缺失值(均值/中位數(shù)/固定值)
s_fill_mean = s.fillna(s.mean())  # 均值填充
s_fill_0 = s.fillna(0)            # 固定值填充
print("\n均值填充缺失值:")
print(s_fill_mean)

輸出

刪除缺失值后:
小明    85.0
小剛    92.0
小麗    78.0
dtype: float64
 
均值填充缺失值:
小明    85.0
小紅    85.0
小剛    92.0
小麗    78.0
小強(qiáng)    85.0
dtype: float64

(3)排序

import pandas as pd
s = pd.Series([85, 92, 78, 90], index=["小明", "小紅", "小剛", "小麗"])
# 按值升序排序
s_sort_val = s.sort_values()
print("按分?jǐn)?shù)升序:")
print(s_sort_val)
# 按索引降序排序
s_sort_idx = s.sort_index(ascending=False)
print("\n按姓名降序:")
print(s_sort_idx)

輸出:

按分?jǐn)?shù)升序:
小剛    78
小明    85
小麗    90
小紅    92
dtype: int64
 
按姓名降序:
小麗    90
小紅    92
小明    85
小剛    78
dtype: int64

(4)值替換 / 映射

import pandas as pd
s = pd.Series([85, 92, 78, 59, 90], index=["小明", "小紅", "小剛", "小亮", "小麗"])
# 替換單個(gè)值(不及格→60)
s_replace = s.replace(59, 60)
print("替換不及格分?jǐn)?shù)后:")
print(s_replace)
# 映射(分?jǐn)?shù)→等級(jí))
grade_map = {x: "優(yōu)秀" if x>=90 else "良好" if x>=80 else "及格" for x in s}
s_grade = s.map(grade_map)
print("\n分?jǐn)?shù)映射為等級(jí):")
print(s_grade)

輸出:

替換不及格分?jǐn)?shù)后:
小明    85
小紅    92
小剛    78
小亮    60
小麗    90
dtype: int64
 
分?jǐn)?shù)映射為等級(jí):
小明    良好
小紅    優(yōu)秀
小剛    及格
小亮    及格
小麗    優(yōu)秀
dtype: object

五、Series 與 NumPy 數(shù)組 / 列表的轉(zhuǎn)換

實(shí)際開發(fā)中常需要在不同結(jié)構(gòu)間轉(zhuǎn)換:

import pandas as pd
import numpy as np
# 1. Series → NumPy數(shù)組
s = pd.Series([85, 92, 78, 90], index=["小明", "小紅", "小剛", "小麗"])
arr = s.values
print("Series轉(zhuǎn)數(shù)組:", arr)  # [85 92 78 90]
# 2. Series → 列表
lst = s.tolist()
print("Series轉(zhuǎn)列表:", lst)  # [85, 92, 78, 90]
# 3. NumPy數(shù)組 → Series
arr2 = np.array([15.2, 16.1, 14.8])
s2 = pd.Series(arr2, index=["1月", "2月", "3月"])
print("\n數(shù)組轉(zhuǎn)Series:")
print(s2)
# 4. 列表 → Series
lst2 = [88, 76, 95]
s3 = pd.Series(lst2, index=["小強(qiáng)", "小芳", "小偉"])
print("\n列表轉(zhuǎn)Series:")
print(s3)

六、實(shí)戰(zhàn)場(chǎng)景:Series 的典型應(yīng)用

場(chǎng)景 1:時(shí)間序列數(shù)據(jù)處理

import pandas as pd
import numpy as np
# 創(chuàng)建日期索引的Series(7天溫度)
dates = pd.date_range(start="2026-01-01", periods=7)
temp = pd.Series(np.random.normal(5, 3, 7).round(1), index=dates, name="日溫")
# 查看數(shù)據(jù)
print("7天溫度數(shù)據(jù):")
print(temp)
# 篩選1月3日之后的溫度
print("\n1月3日之后的溫度:")
print(temp[temp.index >= "2026-01-03"])
# 計(jì)算周平均溫度
print("\n周平均溫度:", temp.mean())

場(chǎng)景 2:數(shù)據(jù)清洗(缺失值填充)

import pandas as pd
import numpy as np
# 模擬學(xué)生分?jǐn)?shù)(含缺失值)
scores = pd.Series([85, np.nan, 92, 78, np.nan, 88, 95], 
                   index=["小明", "小紅", "小剛", "小麗", "小強(qiáng)", "小芳", "小偉"])
# 步驟1:統(tǒng)計(jì)缺失值數(shù)量
nan_count = scores.isnull().sum()
print("缺失值數(shù)量:", nan_count)
# 步驟2:用中位數(shù)填充缺失值
scores_filled = scores.fillna(scores.median())
print("\n填充后的分?jǐn)?shù):")
print(scores_filled)
# 步驟3:篩選優(yōu)秀學(xué)生(≥90)
excellent = scores_filled[scores_filled >= 90]
print("\n優(yōu)秀學(xué)生:")
print(excellent)

七、避坑點(diǎn)與最佳實(shí)踐

1. 核心避坑點(diǎn)

  • ? 混淆標(biāo)簽索引和位置索引:當(dāng)索引是整數(shù)時(shí)(如 index=[1,2,3]),s[1] 會(huì)優(yōu)先按標(biāo)簽取值,而非位置,建議用 iloc 明確位置索引;
  • ? 忽略缺失值:Series 的統(tǒng)計(jì)方法(如 mean())會(huì)自動(dòng)忽略 NaN,但如果需要包含 NaN 需手動(dòng)處理;
  • ? 直接修改 Series 索引:index 是不可變對(duì)象,需用 s.reset_index() 或 s.set_index() 修改;
  • ? 布爾條件組合錯(cuò)誤:多條件組合需用 &/|(而非 and/or),且每個(gè)條件需用括號(hào)包裹。

2. 最佳實(shí)踐

  • ? 索引命名:創(chuàng)建 Series 時(shí)給 index 和 name 命名,增強(qiáng)可讀性;
  • ? 明確索引方式:位置索引用 iloc,標(biāo)簽索引用 loc(s.loc["小紅"]),避免歧義;
  • ? 缺失值處理:先統(tǒng)計(jì)缺失值數(shù)量(isnull().sum()),再選擇填充 / 刪除策略;
  • ? 大數(shù)據(jù)處理:Series 底層是 NumPy 數(shù)組,優(yōu)先用向量化方法(如 map/apply),避免循環(huán)。

總結(jié)

  1. Series 是 Pandas 一維帶標(biāo)簽的數(shù)據(jù)結(jié)構(gòu),由 values(數(shù)據(jù))和 index(標(biāo)簽)組成,支持混合數(shù)據(jù)類型和缺失值;
  2. 核心操作:
    • 索引:標(biāo)簽索引(s["小紅"]/s.loc["小紅"])、位置索引(s.iloc[1]);
    • 篩選:布爾索引(s[s>=90]);
    • 統(tǒng)計(jì):mean()/median()/std()(自動(dòng)忽略 NaN);
    • 缺失值:dropna()/fillna();
  3. 核心優(yōu)勢(shì):對(duì)比 NumPy 數(shù)組,Series 支持自定義標(biāo)簽、缺失值原生處理、豐富的統(tǒng)計(jì) / 清洗方法;
  4. 避坑關(guān)鍵:明確索引方式,處理缺失值,正確組合布爾條件。

到此這篇關(guān)于Pandas中Series序列的具體實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)Pandas Series序列內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

宾阳县| 崇阳县| 揭西县| 车险| 安泽县| 朝阳市| 梅河口市| 乌苏市| 清丰县| 婺源县| 房产| 东乡县| 阳泉市| 安阳县| 丹阳市| 白玉县| 达尔| 固安县| 象山县| 叙永县| 定边县| 通州区| 微博| 华亭县| 什邡市| 蒲江县| 阳谷县| 哈密市| 博野县| 高陵县| 澄江县| 湖南省| 封开县| 凤台县| 河津市| 迭部县| 湟源县| 阿坝| 五峰| 武义县| 岑巩县|