數據科學和機器學習的“看家兵器”——pandas模塊 之一

目錄

  pandas 模塊介紹

  4.1 pandas 數據結構

  一、課程目標

  二、Series 對象介紹

  三、DataFrame 對象介紹

  四、Series 和 DataFrame 在具體應用中的注意事項

  (一)Series 注意事項

  (二)DataFrame 注意事項

  五、實戰案例

  案例 1:學生成績分析

  案例 2:銷售數據分析

  案例 3:股票數據分析

  案例 4:客戶流失分析

  六、課程總結回顧

  七、課后練習題



  pandas 模塊介紹

  pandas 是 Python 的一個開源數據分析庫,為 Python 提供了高性能、易用的數據結構和數據分析工具。它建立在 NumPy 之上,使得以 NumPy 為中心的應用變得更加簡單。pandas 的名字衍生自術語 "panel data"(面板數據)和 "Python data analysis"(Python 數據分析)。

  pandas 的主要數據結構是 Series(一維數組)和 DataFrame(二維表格型數據結構),它們能夠處理各種類型的數據,無論是時間序列數據、表格數據還是矩陣數據。pandas 提供了高級數據操作功能,包括數據清洗、合并、重塑、聚合和時間序列分析等。它廣泛應用于金融、經濟、統計、社會科學等領域,是數據科學和機器學習工作流程中不可或缺的工具。

  4.1 pandas 數據結構

  一、課程目標

  本次課程主要圍繞 pandas 的核心數據結構展開,通過理論講解和案例分析,讓學員掌握 Series 和 DataFrame 的基本概念、創建方法、數據操作及應用場景。學員學完本次課程后,能夠熟練使用 pandas 進行基礎的數據處理和分析工作。

  二、Series 對象介紹

  Series 是 pandas 的一維標記數組,能夠保存任何數據類型(整數、字符串、浮點數、Python 對象等)。它由兩部分組成:索引(index)和值(values)。索引在左側,值在右側。如果沒有指定索引,pandas 會自動創建一個從 0 開始的整數索引。

  案例 1:基本 Series 對象的創建與操作

import pandas as pd# 創建Series對象
data = [10, 20, 30, 40, 50]
s = pd.Series(data)
print("基本Series對象:")
print(s)# 獲取值
print("\nSeries的值:")
print(s.values)# 獲取索引
print("\nSeries的索引:")
print(s.index)# 修改索引
s.index = ['a', 'b', 'c', 'd', 'e']
print("\n修改索引后的Series:")
print(s)# 通過索引訪問值
print("\n通過索引'b'訪問值:")
print(s['b'])# 通過位置訪問值
print("\n通過位置2訪問值:")
print(s[2])

  這個案例展示了 Series 的基本創建方法、獲取值和索引的方式,以及如何修改索引和通過不同方式訪問值。

  案例 2:帶標簽索引的 Series 對象

# 創建帶標簽索引的Series
data = {'北京': 1000, '上海': 1500, '廣州': 800, '深圳': 1200}
s = pd.Series(data)
print("帶標簽索引的Series:")
print(s)# 索引順序可以不同于字典中的鍵順序
cities = ['上海', '北京', '深圳', '成都']
s = pd.Series(data, index=cities)
print("\n指定索引順序的Series:")
print(s)# 檢測缺失數據
print("\n檢測缺失數據:")
print(s.isnull())# 數學運算
print("\nSeries乘以2:")
print(s * 2)# 布爾索引
print("\n篩選值大于1000的城市:")
print(s[s > 1000])

  此案例重點展示了如何使用字典創建 Series,以及如何處理缺失數據、進行數學運算和布爾索引。

  案例 3:時間序列索引的 Series 對象

# 創建時間序列索引的Series
dates = pd.date_range('20250101', periods=5)
s = pd.Series([10, 20, 30, 40, 50], index=dates)
print("時間序列索引的Series:")
print(s)# 通過日期訪問值
print("\n訪問2025年1月3日的值:")
print(s['2025-01-03'])# 訪問某個時間段的值
print("\n訪問2025年1月2日至2025年1月4日的值:")
print(s['2025-01-02':'2025-01-04'])# 時間序列切片
print("\n訪問2025年1月3日及之后的值:")
print(s['2025-01-03':])# 添加新的日期值
s['2025-01-06'] = 60
print("\n添加新日期后:")
print(s)

  這個案例聚焦于時間序列索引的 Series,展示了如何創建、訪問和操作時間序列數據。

  三、DataFrame 對象介紹

  DataFrame 是 pandas 的二維標記數據結構,由行索引和列索引組成。它類似于電子表格、SQL 表或 Series 對象構成的字典。DataFrame 可以接受多種類型的輸入,如字典、Series、NumPy 數組、另一個 DataFrame 等。

  案例 1:基本 DataFrame 對象的創建與操作

# 創建DataFrame
data = {'城市': ['北京', '上海', '廣州', '深圳', '杭州'],'人口(萬)': [2154, 2424, 1490, 1303, 980],'GDP(億)': [30320, 32680, 22859, 24222, 13509]
}
df = pd.DataFrame(data)
print("基本DataFrame對象:")
print(df)# 查看數據基本信息
print("\n數據基本信息:")
df.info()# 查看數據集行數和列數
rows, columns = df.shape# 查看數據集行數和列數
if rows < 10 and columns < 10:# 短表數據(行數少于10且列數少于10)查看全量數據信息print("\n數據全部內容信息:")print(df.to_csv(sep='\t', na_rep='nan'))
else:# 長表數據查看數據前幾行信息print("\n數據前幾行內容信息:")print(df.head().to_csv(sep='\t', na_rep='nan'))# 獲取列
print("\n獲取'城市'列:")
print(df['城市'])# 獲取行
print("\n獲取第2行:")
print(df.loc[1])# 添加新列
df['面積(km2)'] = [16410, 6340, 7434, 1997, 16853]
print("\n添加'面積'列后:")
print(df)# 計算人口密度
df['人口密度(人/km2)'] = df['人口(萬)'] * 10000 / df['面積(km2)']
print("\n計算'人口密度'列后:")
print(df)

  這個案例展示了 DataFrame 的基本創建方法、獲取行列數據的方式,以及如何添加新列和進行簡單的數據計算。

  案例 2:使用不同數據源創建 DataFrame

# 從CSV文件創建DataFrame
# df = pd.read_csv('data.csv')# 從Excel文件創建DataFrame
# df = pd.read_excel('data.xlsx')# 從字典列表創建DataFrame
data = [{'姓名': '張三', '年齡': 25, '性別': '男'},{'姓名': '李四', '年齡': 30, '性別': '男'},{'姓名': '王五', '年齡': 28, '性別': '女'}
]
df = pd.DataFrame(data)
print("從字典列表創建的DataFrame:")
print(df)# 從Series字典創建DataFrame
d = {'one': pd.Series([1, 2, 3], index=['a', 'b', 'c']),'two': pd.Series([10, 20, 30, 40], index

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

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

相關文章

STM32CubeMX HAL庫 串口的使用

1.配置 2.開啟中斷后&#xff0c;生成代碼 3.串口的接收 1&#xff09;.開啟空閑中斷接收 __HAL_UART_ENABLE_IT(huart, UART_IT_IDLE); // 關鍵步驟&#xff1a;啟用空閑中斷 2&#xff09;. 啟動接收 調用 HAL_UARTEx_ReceiveToIdle_IT 啟動異步接收&#xff0c;可以使用…

IIS服務器URL重寫配置完整教程

1.下載URL Rewrite Module 2.1 https://www.iis.net/downloads/microsoft/url-rewrite https://download.microsoft.com/download/1/2/8/128E2E22-C1B9-44A4-BE2A-5859ED1D4592/rewrite_amd64_zh-CN.msi 2.安裝

vite+vue建立前端工程

? 參考 開始 | Vite 官方中文文檔 VUE教程地址 https://cn.vuejs.org/tutorial/#step-1 第一個工程 https://blog.csdn.net/qq_35221977/article/details/137171497 腳本 chcp 65001 echo 建立vite工程 set PRO_NAMEmy-vue-appif not exist %PRO_NAME% (call npm i…

負進制轉換

當一個數的基數是負數時&#xff0c;將這個數轉換為負進制數時&#xff0c;大體思路和正數的情況一樣&#xff0c;但是因為基數是負數&#xff0c;所以計算出來的余數就有可能是負數所以&#xff0c;需要在余數是負數時&#xff1a;將余數 基數的絕對值&#xff0c;商 1。 代…

K8S已經成為了Ai應用運行的平臺工具

AI應用與K8s的深度融合&#xff1a;加速云原生時代的智能運維與業務創新 摘要&#xff1a; 隨著人工智能&#xff08;AI&#xff09;技術的飛速發展&#xff0c;Kubernetes&#xff08;K8s&#xff09;作為容器編排領域的領軍者&#xff0c;正逐步成為承載AI應用的核心基礎設施…

NVMe簡介1

它分為兩部分&#xff0c;這里是第一部分。 NVM Express&#xff08;NVMe&#xff09;是一種高性能、可擴展的接口協議&#xff0c;用于通過PCI express&#xff08;PCIe&#xff09;總線&#xff0c;實現主機軟件與NVM設備之間的通信。目前&#xff0c;由于NVMe SSD相比于SATA…

微服務商城(1)開篇、服務劃分

參考&#xff1a;https://mp.weixin.qq.com/s?__bizMzg2ODU1MTI0OA&mid2247485597&idx1&sn7e85894b7847cc50df51d66092792453&scene21#wechat_redirect 為什么選擇go-zero go-zero 為我們提供了許多高并發場景下的實用工具&#xff0c;比如為了降低接口耗時…

《隱私計算:數據安全與隱私保護的新希望》

一、引言 在數字化時代&#xff0c;數據已成為企業和組織的核心資產。然而&#xff0c;數據的收集、存儲和使用過程中面臨著諸多隱私和安全挑戰。隱私計算作為一種新興技術&#xff0c;旨在解決數據隱私保護和數據共享之間的矛盾。本文將深入探討隱私計算的基本概念、技術原理、…

MySQL 學習(九)bin log 與 redo log 的區別有哪些,為什么快速恢復使用 redo log 而不用 bin log?

目錄 一、bin log 與 redo log 的區別1&#xff09;實現方式不同&#xff1a;2&#xff09;日志內容不同&#xff1a;3&#xff09;記錄方式不同&#xff1a;4&#xff09;使用場合不同&#xff1a; 二、為什么快速恢復使用 redo log 而不用 bin log&#xff1f; 面試題&#x…

用Array.from實現創建一個1-100的數組

一、代碼實現 let arr Array.from({length: 100}, (_, i) > i 1); 二、代碼分析 1、Array.from(arrayLike, mapFn) &#xff08;1&#xff09;arrayLike 類數組對象&#xff08;如 { length: 100 }&#xff09;本身沒有索引屬性&#xff08;如 0: undefined, 1: undefi…

javaScript簡單版

簡介 JavaScript&#xff08;簡稱:JS)是一門跨平臺、面向對象的腳本語言&#xff0c;是用來控制網頁行為&#xff0c;實現頁面的交互效果。 JavaScript和Java是完全不同的語言&#xff0c;不論是概念還是設計。但是基礎語法類似。 組成: ECMAScript:規定了JS基礎語法核心知…

Python刷題練習

文章目錄 1.尋找相同字串2.密鑰格式化3.五鍵鍵盤的輸出4.單詞重量5.輸出指定字母在字符串的中的索引6.污染水域7.九宮格按鍵輸入8.任務最優調度9.高效的任務規劃 1.尋找相同字串 題目描述: 給你兩個字符串t和p&#xff0c;要求從t中找到一個和p相同的連續子串&#xff0c;并輸…

MATLAB實現振幅調制(AM調制信號)

AM調制是通信專業非常重要的一個知識點。今天我們使用MATLAB編程實現AM調制。 我們實現輸入一個載波信號的頻率與調制信號的頻率后&#xff0c;再輸入調幅度&#xff0c;得到已調信號的波形與包絡信號的波形&#xff0c;再使用FFT算法分析出已調信號的頻譜圖。 源代碼&#x…

JJJ:linux ida

文章目錄 1.總結2.各類函數2.1 分配一個倉庫2.2 銷毀倉庫2.3 從倉庫里面分配一個整數id2.4 將上面分配的整數id從倉庫里面刪除2.5 在指定范圍內分配一個id 1.總結 ida使用起來很簡單&#xff0c;就是先分配一個倉庫一樣的實例&#xff0c;再從這個倉庫里面分配一個獨一無二的整…

FastByteArrayOutputStream和ByteArrayInputStream有什么區別

FastByteArrayOutputStream 和 ByteArrayInputStream 是兩種完全不同的 Java I/O 類&#xff0c;它們的主要區別體現在 設計目的 和 使用場景 上。以下是詳細對比&#xff1a; 1. 核心區別總結 特性FastByteArrayOutputStream (Spring框架)ByteArrayInputStream (JDK原生)所屬…

docker-compose——安裝redis

文章目錄 一、編寫docker-compose.yaml文件二、編寫redis.conf文件三、啟動docker-compose 一、編寫docker-compose.yaml文件 version: 3.3 services:redis:image: redis:latestcontainer_name: redisrestart: alwaysports:- 6379:6379volumes:- ./redis/data:/data- ./redis/…

東芝推出新的SCiB模塊,散熱性能加倍,適用于電動公交車、電動船舶和固定應用

東京—東芝公司推出了一種新的SCiB模塊&#xff0c;這是一種專為電動汽車、電動船舶和固定應用而設計的鋰離子電池。新產品采用鋁制底板&#xff0c;散熱量約為當前模塊的兩倍。它將于2025年4月中旬在日本和全球上市。 鋰離子電池的使用越來越多&#xff0c;而且越來越多樣化&a…

【進程控制二】進程替換和bash解釋器

【進程控制二】進程替換 1.exec系列接口2.execl系列2.1execl接口2.2execlp接口2.3execle 3.execv系列3.1execv3.2總結 4.實現一個bash解釋器4.1內建命令 通過fork創建的子進程&#xff0c;會繼承父進程的代碼和數據&#xff0c;因此本質上還是在執行父進程的代碼 進程替換可以將…

Java基礎語法之數組

數組 一、認識數組 1.什么是數組 數組就是一個容器&#xff0c;用來存一批同種類型的數據。 舉例 20, 10, 80, 60, 90 int[] arr {20, 10, 80, 60, 90};張三, 李四, 王五 String[] names {"張三", "李四", "王五"};2.為什么要使用數組 假設…

Java死鎖排查:線上救火實戰指南

想象一下&#xff0c;你正在值班&#xff0c;突然監控告警紅成一片&#xff0c;用戶反饋雪花般飄來&#xff1a;“系統卡死了&#xff01;用不了了&#xff01;” —— 這很可能就是Java應用遭遇了“死鎖”這個大魔王。這時候&#xff0c;你就是救火隊長&#xff0c;首要任務不…