Pandas 核心數據結構詳解:Series 和 DataFrame 完全指南

1. 前言:為什么需要 Pandas 數據結構?

在數據處理和分析中,我們需要高效的方式來存儲和操作結構化數據。Python 原生的列表(List)和字典(Dict)雖然靈活,但缺乏針對數據分析的優化。Pandas 提供了兩種核心數據結構:

  • Series:一維帶標簽數組(類似增強版列表)

  • DataFrame:二維表格型數據結構(類似 Excel 表格)

?

它們支持快速查詢、自動對齊、缺失值處理、高效計算等特性,是數據分析的基礎。

2. Series:一維帶標簽數組

2.1 創建 Series

Series 由數據(值) + 索引(標簽)組成,可以通過列表、字典或 NumPy 數組創建:

import pandas as pd
import numpy as np# 從列表創建(默認索引為 0, 1, 2...)
s1 = pd.Series([10, 20, 30, 40])
print(s1)
"""
0    10
1    20
2    30
3    40
dtype: int64
"""# 從字典創建(鍵自動變為索引)
s2 = pd.Series({'A': 90, 'B': 80, 'C': 70})
print(s2)
"""
A    90
B    80
C    70
dtype: int64
"""# 自定義索引
s3 = pd.Series([1.1, 2.2, 3.3], index=['X', 'Y', 'Z'])
print(s3)
"""
X    1.1
Y    2.2
Z    3.3
dtype: float64
"""

2.2 Series 的屬性和方法

屬性/方法說明示例
s.values獲取值數組s1.values?→?[10, 20, 30, 40]
s.index獲取索引s3.index?→?Index(['X', 'Y', 'Z'])
s.dtype數據類型s2.dtype?→?int64
s.shape形狀s1.shape?→?(4,)
s.head(n)前 n 行s1.head(2)?→ 顯示前 2 個值
s.isna()檢查缺失值pd.Series([1, None]).isna()?→?[False, True]

?2.3 Series 的操作

# 向量化運算(自動對齊索引)
s4 = pd.Series([1, 2, 3], index=['A', 'B', 'C'])
s5 = pd.Series([10, 20, 30], index=['B', 'C', 'D'])
print(s4 + s5)
"""
A     NaN  # A 只在 s4 中存在
B    12.0  # B 在兩者中都存在
C    23.0
D     NaN  # D 只在 s5 中存在
dtype: float64
"""# 條件篩選
print(s2[s2 > 80])  # 輸出大于 80 的值
"""
A    90
dtype: int64
"""

?

3. DataFrame:二維表格型數據結構

3.1 創建 DataFrame

DataFrame 可以看作多個 Series 的集合,類似于 Excel 表格或 SQL 表:

# 從字典創建(鍵是列名,值是數據)
data = {'Name': ['Alice', 'Bob', 'Charlie'],'Age': [25, 30, 35],'Score': [88.5, 92.0, 78.5]
}
df = pd.DataFrame(data)
print(df)
"""Name  Age  Score
0    Alice   25   88.5
1      Bob   30   92.0
2  Charlie   35   78.5
"""# 從列表創建(需指定列名)
data = [['Apple', 5], ['Banana', 3], ['Orange', 8]]
df2 = pd.DataFrame(data, columns=['Fruit', 'Count'])
print(df2)
"""Fruit  Count
0   Apple      5
1  Banana      3
2  Orange      8
"""

?

3.2 DataFrame 的屬性和方法

屬性/方法說明示例
df.columns列名df.columns?→?Index(['Name', 'Age', 'Score'])
df.index行索引df.index?→?RangeIndex(start=0, stop=3)
df.shape形狀df.shape?→?(3, 3)
df.dtypes每列數據類型df.dtypes?→?Name: object, Age: int64, Score: float64
df.head(n)前 n 行df.head(2)?→ 顯示前 2 行
df.describe()統計摘要df.describe()?→ 計算均值、標準差等

?

3.3 DataFrame 的操作

(1)選擇數據
# 選擇列(返回 Series)
print(df['Name'])  # 或 df.Name
"""
0      Alice
1        Bob
2    Charlie
Name: Name, dtype: object
"""# 選擇多列(返回 DataFrame)
print(df[['Name', 'Score']])# 選擇行(使用 loc/iloc)
print(df.loc[1])     # 按標簽選擇(第 2 行)
print(df.iloc[0:2])  # 按位置選擇(前 2 行)

?(2)條件篩選

# 篩選 Age > 25 的行
print(df[df['Age'] > 25])
"""Name  Age  Score
1      Bob   30   92.0
2  Charlie   35   78.5
"""# 多條件篩選(使用 & 或 |)
print(df[(df['Age'] > 25) & (df['Score'] > 80)])

?(3)增刪改列

# 新增列
df['Pass'] = df['Score'] >= 80
print(df)
"""Name  Age  Score   Pass
0    Alice   25   88.5   True
1      Bob   30   92.0   True
2  Charlie   35   78.5  False
"""# 為每個學生添加性別信息
df['Gender'] = ['Female', 'Male', 'Male']  # 順序對應原數據的行
print(df)
"""Name  Age  Score  Gender
0    Alice   25   88.5  Female
1      Bob   30   92.0    Male
2  Charlie   35   78.5    Male
"""# 刪除列
df.drop('Pass', axis=1, inplace=True)  # axis=1 表示列

?

4. Series vs DataFrame 對比

特性SeriesDataFrame
維度一維二維
索引單索引(行)行索引 + 列索引
數據形式單列數據多列數據(多個 Series 的集合)
適用場景單一變量分析(如溫度序列)多變量分析(如學生成績表)

?

5. 總結

  • Series:一維數據,適合存儲單列數據(如時間序列、傳感器數據)。

  • DataFrame:二維表格,適合處理多列結構化數據(如 CSV、Excel 數據)。

  • 兩者均支持自動對齊、向量化運算、缺失值處理,是數據分析的核心工具。

練習建議

  1. 創建一個包含學生信息的 DataFrame,并練習增刪改查操作。

  2. 嘗試用 Series 存儲某城市一周的溫度數據,并計算平均溫度。

?

?

?

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/910447.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/910447.shtml
英文地址,請注明出處:http://en.pswp.cn/news/910447.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

使用 Solscan API 的開發指南:快速獲取 Solana 鏈上數據

Solana 生態中有多個區塊瀏覽器,其中 Solscan 提供了功能全面的 API,適用于查詢地址資產、Solana 生態中有多個區塊瀏覽器,其中 Solscan 提供了功能全面的 API,適用于查詢地址資產、交易詳情、合約交互等多種開發場景。相比直接使…

高效工具-libretv

什么是libretv? LibreTV 是一個輕量級、免費的在線視頻搜索與觀看平臺,提供來自多個視頻源的內容搜索與播放服務。無需注冊,即開即用,支持多種設備訪問。項目結合了前端技術和后端代理功能,可部署在支持服務端功能的各類網站托管…

回溯----5.括號生成

題目鏈接 /** 合法括號生成規則: 第一個括號必須是左括號(第一個為右必定無法閉合) 選擇過程中左括號數量必須小于n才可選擇左括號(大于n則一定有括號無法閉合) 左括號數量必須大于右括號數量才可選擇右括號(相等代表所有前驅括號都已閉合) 所需參數: left 記錄已選擇左括號數…

【weaviate】分布式數據寫入之LSM樹深度解析:讀寫放大的權衡

文章目錄 一、LSM樹的設計哲學:寫優化的根本動機1、 傳統B樹存儲的性能瓶頸2、 LSM樹的根本性創新 二、寫入路徑的深度技術分析1、 WAL機制的精密設計2、 MemTable的數據結構3、 刷盤(Flush)過程的技術細節 三、Compaction策略:LS…

Pygame 大魚吃小魚

【Pygame 大魚吃小魚】是一款基于Python編程語言和Pygame庫開發的趣味游戲。Pygame是Python中一個廣泛用于開發2D游戲的開源模塊集合,它提供了豐富的功能,如窗口管理器、事件處理、圖形繪制等,使得初學者也能快速上手創建游戲。 這段 Python …

【為什么在觸發的事件中修改控件屬性需要使用`Invoke`】

在C#中,特別是在使用Windows Forms或WPF等GUI框架時,控件的屬性和狀態通常只能在創建它們的線程(即UI線程,即主線程或用戶界面線程)中直接修改。這是由于這些框架的設計基于單線程模型,其中所有與用戶界面&…

Android 當apk是系統應用時,無法使用webView的解決方案

最近在做項目時,遇到了一個無法使用webView的問題,apk是系統應用,點擊加載webView時應用就是崩潰,原因是系統應用時,Android會覺得webView不安全,不避讓加載。 解決的思路就是使用映射,把原生的…

ArcGIS Pro無插件加載(無偏移)天地圖!一次添加長久使用

以前我們介紹過:ArcGIS無插件加載(無偏移)天地圖。這次我們來介紹ArcGIS Pro中如何添加天地圖。 我們將通過從天地圖官網自己添加服務鏈接并添加至收藏的方式以及應急的方法來做本次的介紹。天地圖的數據主要包括影像、電子地圖、地形圖等。我…

Go堆內存管理

# Go堆內存管理 1. Go內存模型層級結構 Golang內存管理模型與TCMalloc的設計極其相似。基本輪廓和概念也幾乎相同,只是一些規則和流程存在差異。 2. Go內存管理的基本概念 Go內存管理的許多概念在TCMalloc中已經有了,含義是相同的,只是名字…

零售 EDI:Chewy EDI 項目注意事項

在此前的文章《供應商對接Chewy的EDI需求》中,介紹了Chewy的EDI需求,本文主要為大家分享Chewy對于各個業務單據的細節性需求,了解這些細節性注意事項將幫助企業快速基于知行軟件提供的EDI服務與Chewy建立EDI對接。 基于知行之橋EDI系統能夠通…

Android錄制視頻自帶鋪滿多行水印

文章目錄 引言環境要求代碼實現總結 引言 之前做過幾種水印需求,這篇文章是關于使用Android原生庫開發錄制視頻自帶滿幀文字水印。 環境要求 Android 7.0以上Android Studio ,官方開發者官網視頻錄制功能參考開源庫PictureSelector的camerax庫 //用到的…

觀遠ChatBI:加速零售消費企業數據驅動的敏捷決策

近年來,隨著國產大模型(如DeepSeek)的快速發展,企業對智能化數據分析工具的需求日益增長。觀遠數據推出的ChatBI,基于大語言模型(LLM)打造,旨在通過自然語言交互降低數據分析門檻&am…

鴻蒙NEXT-鴻蒙三層架構搭建,嵌入HMRouter,實現便捷跳轉,新手攻略。(1/3)

接下來,我將手把手帶領大家去完善,搭建一個鴻蒙的三層架構,另實現HMRouter的嵌入。完成后,大家可任意跳轉頁面,在三層架構中,書寫屬于自己的篇章。 第0步,項目與AGC華為控制臺關聯起來 首先AG…

鴻蒙ArkTs仿網易云音樂項目:架構剖析與功能展示

鴻蒙ArkTs仿網易云音樂項目:架構剖析與功能展示 一、引言 在移動應用開發的浪潮中,音樂類應用始終占據著重要的一席之地。網易云音樂憑借其豐富的音樂資源、個性化的推薦算法和獨特的社交互動功能,深受廣大用戶的喜愛。本文將詳細介紹一個基…

【web 安全】從 HTTP 無狀態到現代身份驗證機制

文章目錄 Web 安全與系統設計Web存在的問題:Web 是無狀態的解決方案一、早期解決方案:Session Cookie 的誕生二、第二階段:Token 的出現(前后端分離 移動端的解決方案)三、分析總結:1.早期版本&#xff1…

FlutterUnit TolyUI | 布局游樂場

FlutterUnit 基于 TolyUI 大大簡化了界面構建的代碼復雜程度,因此之前想要實現的一些小功能,就可以輕松支持。布局游樂場是通過交互的方式來 直觀體驗 組件的布局特性,從而更易學和掌握。目前 FlutterUnit 已在 知識集錄模塊新增了 布局寶庫&…

【數據分析一:Data Collection】信息檢索

本節內容含有各典型數據集的推薦,以及其網址,大家根據需要自取 一、檢索 最簡單、最靈活的數據獲取方式就是依靠檢索: Google:更適合搜索英文信息 Google Dataset Search(Google 數據集搜索) 網址&…

23.ssr和csr的對比?如何依賴node.js實現

1.為什么說ssr 的node中間層請求速度快。相當于內網? 那vue.js加載怎么沒有ssr和csr的說法啊 第一問:為什么說 SSR 的 Node 中間層請求速度快?是不是相當于內網? ? 是的,本質上就是「內網請求」,所以更快…

力扣刷題(第六十四天)

靈感來源 - 保持更新,努力學習 - python腳本學習 第一個錯誤的版本 解題思路 初始化左右邊界:左邊界 left 1,右邊界 right n。二分查找循環: 計算中間版本號 mid。若 mid 是錯誤版本,說明第一個錯誤版本在 [le…

【圖像處理入門】11. 深度學習初探:從CNN到GAN的視覺智能之旅

摘要 深度學習為圖像處理注入了革命性動力。本文將系統講解卷積神經網絡(CNN)的核心原理,通過PyTorch實現圖像分類實戰;深入解析遷移學習的高效應用策略,利用預訓練模型提升自定義任務性能;最后揭開生成對抗網絡(GAN)的神秘面紗,展示圖像生成與增強的前沿技術。結合代…