Python進階知識之pandas庫

目錄

一、Series:一維帶標簽的數組

二、DataFrame:二維表格型數據結構

三、Series 的核心操作

四、 DataFrame 的核心操作

五、?索引的特殊用法

六、 loc 與 iloc:DataFrame 的高級查詢

七、綜合案例

一、Series:一維帶標簽的數組

Series 是 pandas 中最基礎的一維數據結構,由數據值索引(index)?組成,可理解為 “帶標簽的列表”。

  • 核心特點
    • 可通過索引或位置快速訪問、修改數據。
    • 數據值可以是數值、字符串等多種類型;
    • 索引可以是自定義標簽(如字符串)或默認整數(從 0 開始);
    • 代碼示例
import pandas as pd# 1. 基于列表創建,默認整數索引
s_1 = pd.Series([1, 2, 3, 4, 5])
print(s_1)

# 輸出:
# 0 ???1
# 1 ???2
# 2 ???3
# 3 ???4
# 4 ???5
# dtype: int64

# 2. 自定義索引(字符串標簽)
s_2 = pd.Series([1, 2, 3, 4, 5], index=['a', 'b', 'c', 'd', 'e'])
print(s_2['d']) ?# 通過標簽訪問,輸出:4
print(s_2[4]) ? ?# 通過位置訪問,輸出:5
# 3. 基于字典創建(鍵為索引,值為數據)
dic_1 = {"name1": "Peter", "name2": "tim", "name3": "rose"}
s_4 = pd.Series(dic_1)
print(s_4)

?# 輸出:
# name1 ???Peter
# name2 ?????tim
# name3 ????rose
# dtype: object

# 4. 常用操作:修改值、刪除元素
s_2[0] = 100 ?# 修改第一個元素值
s_2 = s_2.drop('a') ?# 刪除索引為'a'的元素

二、DataFrame:二維表格型數據結構

DataFrame 是 pandas 中最常用的二維數據結構,類似 Excel 表格或數據庫表,由行索引列名數據值組成,可視為 “多個 Series 的拼接”(每一列是一個 Series)。

核心特點

  1. 行和列都有標簽(行索引 index,列名 columns);
  2. 支持靈活的增刪改查、排序、篩選等操作;
  3. 可通過字典、數組等多種方式創建。

代碼示例

import pandas as pd# 1. 基于字典創建(鍵為列名,值為列數據)
dic = {'name': ['kiti', 'beta', 'peter', 'tom'],'age': [20, 18, 35, 21],'gender': ['f', 'f', 'm', 'm']}
df = pd.DataFrame(dic)
print(df)

# 輸出:
# ? ? name ?age gender
# 0 ? kiti ? 20 ? ? ?f
# 1 ? beta ? 18 ? ? ?f
# 2 ?peter ? 35 ? ? ?m
# 3 ? ?tom ? 21 ? ? ?m

# 2. 自定義行索引
df_1 = pd.DataFrame({'age': [10, 11, 12],'name': ['tim', 'tom', 'rose']},index=['person1', 'person2', 'person3']) ?# 行索引為自定義標簽
print(df_1.index) ? # 查看行索引:Index(['person1', 'person2', 'person3'], dtype='object')
print(df_1.columns) # 查看列名:Index(['age', 'name'], dtype='object')

三、Series 的核心操作

Series 的操作圍繞 “訪問、修改、刪除” 展開,依賴索引或位置實現。

訪問數據

s_2 = pd.Series([1, 2, 3, 4, 5], index=['a', 'b', 'c', 'd', 'e'])# 標簽訪問(單個/多個)
print(s_2['d'])        # 單個元素:4
print(s_2['a':'d'])    # 切片(包含終點):a=1, b=2, c=3, d=4
print(s_2[['a', 'd']]) # 多個標簽:a=1, d=4# 位置訪問(類似列表)
s_3 = pd.Series(['lily', 'rose', 'jack'])
print(s_3[2])          # 單個位置:jack
print(s_3[0:2])        # 切片(不包含終點):lily, rose

修改與刪除

s_3[0] = 'Peter'  # 修改指定位置的值
s_1 = s_1.drop('a')  # 刪除標簽為'a'的元素(返回新Series,原數據不變)

四、 DataFrame 的核心操作

DataFrame 支持行列增刪、數據訪問、排序、值替換等操作,靈活性極高。

數據訪問

# 訪問列(列名作為屬性或鍵)
print(df.name)          # 等價于df['name'],輸出name列數據
print(df[['age', 'name']])  # 訪問多列# 訪問行(標簽或位置)
print(df.loc['person1'])  # 通過行標簽訪問
print(df.iloc[0:2])       # 通過位置切片訪問前2行# 訪問單個值
print(df.loc['person1', 'name'])  # 行標簽+列名:tim

增刪行列

# 增加列
df['pay'] = [20, 30, 40, 50]  # 新增'pay'列# 增加行
df.loc['person4'] = [20, 'kitty', 'f', 60]  # 新增行(指定行標簽和數據)# 刪除列
del df['age']  # 直接刪除'age'列
df.drop('name', axis=1, inplace=True)  # 通過drop刪除列(axis=1表示列)# 刪除行
df.drop('person3', axis=0, inplace=True)  # axis=0表示行

排序與值替換

# 按列排序
df.sort_values(by=['age'])  # 按'age'升序排序
df.sort_values(by=['age'], ascending=False)  # 降序排序(ascending=False)# 值替換
df['gender'] = df['gender'].replace(['m', 'f'], ['male', 'female'])  # 將'm'替換為'male','f'替換為'female'

五、?索引的特殊用法

pandas 的索引(index)是數據訪問的核心,支持多種類型(如整數、字符串、日期),且可靈活重置。

日期索引

import numpy as np
# 生成日期索引(2018-01-01到2018-01-05)
datas = pd.date_range('20180101', periods=5)
df1 = pd.DataFrame(np.arange(30).reshape(5,6), index=datas, columns=['A','B','C','D','E','F'])
print(df1.index)  # 輸出日期索引:DatetimeIndex(['2018-01-01', ..., '2018-01-05'], dtype='datetime64[ns]')

重置索引

s_4 = pd.Series({"name1": "Peter", "name2": "tim", "name3": "rose"})
s_4.index = range(0, len(s_4))  # 將索引重置為0,1,2

六、 loc 與 iloc:DataFrame 的高級查詢

兩種方法用于精確定位數據,區別在于索引方式:

  1. loc:基于標簽索引(行標簽 + 列名);
  2. iloc:基于位置索引(行號 + 列號,從 0 開始)。

代碼示例

# 基于日期索引的DataFrame
df = pd.DataFrame(np.arange(30).reshape(5,6), index=pd.date_range('20180101', periods=5),columns=['A','B','C','D','E','F'])# loc用法(標簽索引)
print(df.loc['20180103', 'B'])  # 2018-01-03行,B列的值:13
print(df.loc['20180103':, ['B', 'D']])  # 2018-01-03及之后的行,B和D列# iloc用法(位置索引)
print(df.iloc[1, 2])  # 第2行(index=1),第3列(columns=2)的值:8
print(df.iloc[[1,2,4], :])  # 第2、3、5行的所有列

七、綜合案例

import pandas as pd
import numpy as np# 1. Series常用操作
# 創建Series(帶自定義索引)
sales = pd.Series([150, 200, 180, 220], index=['一月', '二月', '三月', '四月'])
print("1. 月度銷售額數據:")
print(sales)# 基本訪問
print("\n二月銷售額:", sales['二月'])  # 標簽訪問
print("第一季度銷售額:\n", sales[0:3])  # 位置切片# 基本計算
print("\n平均月銷售額:", sales.mean())
print("總銷售額:", sales.sum())# 修改數據
sales['三月'] = 190
print("\n修改后三月銷售額:\n", sales)# 2. DataFrame創建與基礎訪問
# 從字典創建DataFrame
data = {'姓名': ['張三', '李四', '王五', '趙六'],'部門': ['技術', '市場', '技術', '行政'],'工資': [8000, 7500, 9000, 6800],'入職年份': [2020, 2021, 2019, 2022]
}
df = pd.DataFrame(data, index=['EMP001', 'EMP002', 'EMP003', 'EMP004'])
print("\n2. 員工信息表:")
print(df)# 查看基本信息
print("\n數據形狀(行,列):", df.shape)
print("列名:", df.columns.tolist())# 列訪問
print("\n所有員工工資:\n", df['工資'])
print("技術部員工:\n", df[df['部門'] == '技術'])# 行訪問
print("\nEMP002員工信息:\n", df.loc['EMP002'])  # 標簽訪問
print("前2名員工信息:\n", df.iloc[:2])  # 位置訪問# 3. DataFrame數據處理
# 新增列
df['年薪'] = df['工資'] * 12
print("\n3. 添加年薪列后:")
print(df)# 修改數據
df.loc['EMP002', '工資'] = 7800  # 修改特定值
print("\n修改李四工資后:\n", df)# 排序
df_sorted = df.sort_values(by='工資', ascending=False)  # 降序排序
print("\n按工資排序后:\n", df_sorted)# 簡單篩選
high_salary = df[df['工資'] > 7500]
print("\n工資超過7500的員工:\n", high_salary)# 分組統計
dept_avg = df.groupby('部門')['工資'].mean()
print("\n各部門平均工資:\n", dept_avg)# 4. 數據讀取與保存(模擬)
# 實際使用時替換為真實文件路徑
# df.to_csv('employee_data.csv', index=False)  # 保存為CSV
# new_df = pd.read_csv('employee_data.csv')   # 讀取CSV
print("\n4. 數據讀取提示:取消注釋可實現CSV文件的保存和讀取")

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

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

相關文章

【GIT】基礎知識及基本應用

很高興為您詳細介紹Git的相關知識。Git是一個分布式版本控制系統,常用于軟件開發中的代碼管理和協作。以下是關于Git的一些基礎知識:1. 安裝和配置安裝:Windows:可以從GitHub下載適用于Windows的安裝包。MacOS:可以通過…

Maven Scope標簽:解鎖Java項目依賴管理的秘密武器

一、Maven 與依賴管理簡介在 Java 項目開發的龐大體系中,Maven 堪稱基石般的存在,發揮著極為關鍵的作用。它遵循 “約定優于配置” 的理念,讓項目的構建過程變得規范有序、結構化且具備良好的重復性 。比如,它強制執行標準的項目結…

IP43半加固筆記本L156H

IP43半加固筆記本L156H 產品特性:● 標配Intel I7-7700HQ 4核8線程處理器 ● 操作系統支持Windows7/10 64bit / Li n u x ● DDR4 16G 高速內存 zui高支持64G ● 全高清顯示面板15.6寸,1920X1080 ● 內置海德射頻模塊SMA接口 ● 工作溫度:…

ZooKeeper 是什么?

ZooKeeper 是一個分布式協調服務,由 Apache 基金會開發,專為分布式系統設計。它提供了高可用、高性能、一致性的核心服務,幫助分布式應用解決諸如配置管理、命名服務、分布式鎖、集群協調等問題。ZooKeeper 的核心特點:簡單易用&a…

Java學習第六十三部分——K8s

目錄 📫 一、關鍵概述 🔍 ??二、定義起源?? 🚀 ??三、核心特點?? 🏗? ??四、核心組件?? 🧩 ??五、資源對象?? ? ??六、應用場景?? 🧱 ??七、Java與K8s 🛠? ?…

【自用】JavaSE--階段測試

考試題目第一題(10分)需求目前有100名囚犯,每個囚犯的編號是1-200之間的隨機數。現在要求依次隨機生成100名囚犯的編號(要求這些囚犯的編號是不能重復的),然后讓他們依次站成一排。(注:位置是從…

Vulnhub Matrix-Breakout-2-Morpheus靶機攻略

1.下載靶機 靶機下載地址:https://download.vulnhub.com/matrix-breakout/matrix-breakout-2-morpheus.ova 下載后使用VM打開,后續選擇安裝地址開啟就算是下載好了 2.主機發現 查看網絡適配器模式(NET模式),找到NET…

OpenCV —— 繪制圖形

😶?🌫?😶?🌫?😶?🌫?😶?🌫?Take your time ! 😶?🌫?😶?🌫?😶?🌫?😶?🌫?…

RHCE(4)

主:從:

網絡安全作業三

<!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>用戶登錄</title><link rel"style…

深入理解 ThreadLocal:從原理到最佳實踐

&#x1f4dd; 前言&#xff1a;為什么你需要了解 ThreadLocal&#xff1f;在多線程并發編程中&#xff0c;線程安全始終是一個繞不開的話題。我們常常需要為每個線程維護一份獨立的上下文數據&#xff0c;例如用戶信息、事務 ID、日志追蹤 ID 等。這些數據不能被多個線程共享&…

AD一張原理圖分成多張原理圖

先選中你要作為主級原理圖的那張原理圖&#xff0c;我這里是Sheet1,點擊設計&#xff08;D&#xff09;&#xff0c;再點擊create sheet symbol from sheet&#xff08;這個不能選錯&#xff09;快捷鍵&#xff1a;DY彈窗中選擇要加入的次級原理圖左擊鼠標放置重復上面的動作&a…

AI大模型資源

網址 https://sass.kupepoem.cn/ 登錄-選擇模型 打開上述網址后如下操作&#xff1a; 進入后&#xff0c;所有模型均可使用&#xff1a; o4-mini&#xff08;支持Deep Research深入研究&#xff09; 選擇o4-mini模型 選擇深度研究 要研究什么&#xff0c;對話直接輸入即可。…

論文閱讀--《Besting the Black-Box: Barrier Zones for Adversarial Example Defense》

好的&#xff0c;這是《Besting the Black-Box: Barrier Zones for Adversarial Example Defense》論文的中文翻譯&#xff1a;[文件名稱]: Besting_the_Black-Box_Barrier_Zones_for_Adversarial_Example_Defense.pdf [文件內容開始]第 1 頁 收稿日期&#xff1a;2021年10月1…

如何保證GPFS文件系統的強一致性

一、底層機制&#xff1a;分布式鎖與元數據管理GPFS 通過分布式鎖和集中式元數據管理的結合&#xff0c;確保數據和元數據的一致性&#xff1a;集中式元數據服務器&#xff08;MDS&#xff09;GPFS 采用主從架構的元數據管理&#xff0c;由指定節點&#xff08;或集群&#xff…

使用Docker+Nginx部署電商平臺項目(服務端+管理端+商城)

1.項目背景&#xff1a; 本項目作為小商場系統&#xff0c;涵蓋內容如下&#xff1a; litemall Spring Boot后端 Vue管理員前端 微信小程序用戶前端 Vue用戶移動端 1.1項目架構&#xff1a; 1.2項目技術棧&#xff1a; 本項目可以使用window運行jar包本地部署&#xff0c…

Java網絡編程入門:從基礎原理到實踐(二)

目錄 1. 網絡編程基礎&#xff1a;搞懂設備通信的底層邏輯 1.1 為啥需要網絡編程&#xff1f;—— 讓設備 “互通有無” 1.2 什么是網絡編程&#xff1f;—— 給數據 “定規矩、找路線” 1.3 網絡編程的基本概念&#xff1a;理清通信里的角色和流程 1.3.1 發送端和接收端 …

XSS內容分享

反射型XSS &#xff1a;反射型XSS 是非持久性、參數型的跨站腳本。反射型XSS 的JS 代碼在Web 應用的參數&#xff08;變量&#xff09;中&#xff0c;如搜索框的反射型XSS。在搜索框中&#xff0c;提交PoC[scriptalert(/xss/)/script]&#xff0c;點擊搜索&#xff0c;即可觸發…

電線桿距離居民區的安全距離【重要!!!】

10kV架空電線安全距離購房指南 中國大陸地區10kV架空電線距居民住宅需要滿足1.5米水平安全距離&#xff08;裸導線&#xff09;和6.5米垂直安全距離的國家強制標準。根據現行法規&#xff0c;10kV系統的電磁輻射水平極低&#xff0c;對居民健康影響可忽略不計&#xff0c;但購房…

河南萌新聯賽2025第(二)場:河南農業大學

我看到花兒在綻放 我聽到鳥兒在歌唱 我看到人們匆匆忙忙 我看到云朵在天上 我聽到小河在流淌 我看到人們漫步在路上 河南萌新聯賽2025第&#xff08;二&#xff09;場&#xff1a;河南農業大學 河南萌新聯賽2025第&#xff08;二&#xff09;場&#xff1a;河南農業大學_ACM/N…