当前位置: 首页 > news >正文

Pandas 入门到实践:核心数据结构与基础操作全解析(Day1 学习笔记)

目录

一、Pandas 概述

1. 什么是 Pandas

二、核心数据结构

1. Series

索引

显示索引

隐式索引

创建方式

属性与方法

数据访问

索引访问

切片访问

布尔索引

2. DataFrame

创建方式

属性与数据访问

数据修改

三、索引操作

1. 索引类型

2. 核心索引方法

3. 切片规则

四、缺失数据处理

1. 检测缺失数据

2. 处理缺失数据

删除缺失数据

填充缺失数据

五、级联操作

1. 基本用法

2. 后处理操作


一、Pandas 概述

1. 什么是 Pandas

Pandas 是基于 NumPy 构建的强大数据分析工具集,提供高级数据结构和数据操作工具,是 Python 成为高效数据分析环境的重要因素。其核心特点包括:

  • 专为处理大型结构化数据集设计

  • 基于 NumPy 提供高性能矩阵运算支持

  • 包含大量便捷的数据处理函数和方法

  • 广泛应用于数据挖掘、数据分析和数据清洗

  • 支持存储和处理非数值型数据

二、核心数据结构

1. Series

Series 是类似一维数组的对象,由数据索引组成(索引在左,数据在右)。

索引

显示索引
隐式索引

创建方式

创建方式
示例代码
列表创建
df = pd.Series([1, 2, 3, 4, 5], index=['a', 'b', 'c', 'd', 'e']) print(df, type(df))
NumPy 数组创建
arr = np.array(i for i in range(1, 6)) df = pd.Series(arr, index=['a', 'b', 'c', 'd', 'e'])
字典创建
# 也可以通过字典构建series数据类型 dic = { 'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5 } df = pd.Series(dic) print(df, type(df))
属性与方法
# 基本属性
print(ser_obj.size)  # 元素个数
print(ser_obj.shape)  # 形状(返回元组)
print(ser_obj.dtype)  # 数据类型
print(ser_obj.ndim)  # 维度(Series 为 1)
print(ser_obj.index)  # 获取索引
print(ser_obj.values)  # 获取数据(返回 NumPy 数组)# 查看数据
# 如果数据量很大,可以使用head()和tail()方法来查看前几行或后几行数据
print(ser_obj.head(2))  # 查看前 2 行
print(ser_obj.tail(2))  # 查看后 2 行
数据访问
索引访问
# 单个元素访问
print(ser_obj['a'])  # 按显式索引
print(ser_obj[0])  # 按隐式索引
切片访问
# 切片访问(显式索引前闭后闭,隐式索引前闭后开)
print(ser_obj[1:3])  # 隐式切片(取索引 1、2)
print(ser_obj['b':'d'])  # 显式切片(取 'b'、'c'、'd')
布尔索引
#布尔索引
# 创建一个Series对象,包含整数数据,并指定显示索引
df = pd.Series([1, 2, 3, 4, 5], index=['a', 'b', 'c', 'd', 'e'])
print(df, type(df))
# df > 3  # 布尔索引
print(df > 3)  # 布尔索引 如果大于3则显示True,否则显示False
# 通过布尔索引筛选数据 显示大于3的值
print(df[df > 3])  # 布尔索引

2. DataFrame

        DataFrame 是 Pandas中最常用的数据结构之一,它是一个二维的表格数据结构,类似于电子表格或 SQL 表格。DataFrame 由行和列组成,每一列可以是不同的数据类型(整数、浮点数、字符串等)。它提供了丰富的功能来处理和分析数据。

创建方式
创建方式
示例代码
NumPy 二维数组,ndarray
# 通过ndarray创建DataFrame
from pandas import DataFrame, Series
from numpy import array
# 创建一个二维数组
ndarr = array([[1, 2.1, 3], [4, 5, 6]])
# 创建DataFrame,指定行列索引名
df = DataFrame(ndarr, index = ["a","b"],columns=['A', 'B', 'C'])
# 打印DataFrame及其类型
print(df, type(df))

字典创建
# 通过dict构建DataFrame
dict_data = {'A': 1,'B': pd.Timestamp('20210606'),'C': pd.Series(1, index=list(range(4)), dtype='float32'),'D': np.array([3] * 4, dtype='int32'),'E': ["Python", "Java", "C++", "C"],'F': 'student'}df_obj2 = pd.DataFrame(dict_data)
print(df_obj2)
属性与数据访问
# 基本属性
print(df.shape)  # 形状 (行数, 列数)
print(df.columns)  # 列索引
print(df.index)  # 行索引# 列访问
print(df['A'])  # 返回 Series 类型
print(df[['A', 'B']])  # 返回 DataFrame 类型(多列)# 行&列访问(高级索引)
print(df.loc['a', 'A'])  # 按显示索引(行标签, 列标签)
print(df.iloc[0, 1])  # 按隐式索引(行位置, 列位置)
数据修改
# 添加列
df['G'] = df['D'] + 4  # 新增列 G,值为 D 列加 4# 删除列
del df['G']  # 删除列 G#修改2列中索引为1(第二行)的值
df.iloc[1,2] = 10
print(df)

三、索引操作

1. 索引类型

Pandas 支持多种索引类型,包括:

  • 默认索引:整数序列(0,1,2,...)

  • 自定义索引:创建时通过 index 参数指定

  • 多级索引:MultiIndex(层级索引)

  • 时间索引:DatetimeIndex(时间戳类型)

2. 核心索引方法

方法
说明
示例
loc
基于显示的索引
df.loc['a':'c', 'A':'B'](取行 'a'-'c',列 'A'-'B')
iloc
基于隐式的索引
df.iloc[0:2, 0:1](取前 2 行,第 1 列)
ix
混合索引(已弃用)
建议使用lociloc
替代

3. 切片规则

  • 隐式索引切片:前闭后开(如 df[1:3] 取索引 1、2)

  • 显式索引切片:前闭后闭(如 df['a':'c'] 取 'a'、'b'、'c')

四、缺失数据处理

1. 检测缺失数据

import pandas as pd
import numpy as np# 生成含缺失值的 DataFrame
df_data = pd.DataFrame([np.random.randn(3), [1., 2., np.nan], [np.nan, 4., np.nan], [1., 2., 3.]])# 检测缺失值(True 表示缺失)
print(df_data.isnull())  
# 检测非缺失值(True 表示非缺失)
print(df_data.notna())  

2. 处理缺失数据

删除缺失数据

# 删除含缺失值的行(默认 axis=0)
df_dropped_rows = df_data.dropna()  
# 删除含缺失值的列(axis=1)
df_dropped_cols = df_data.dropna(axis=1)  

填充缺失数据

# 用 0 填充所有缺失值
df_filled_zeros = df_data.fillna(0)  
# 按列填充(例如用列均值填充)
df_filled_mean = df_data.fillna(df_data.mean())  

五、级联操作

级联操作用于合并多个数据集,通过 pd.concat 实现。

1. 基本用法

import pandas as pd# 读取 Excel 多个工作表
sheets_li = pd.read_excel("./data.xlsx", sheet_name=[1, 2, 3])# 列级联(axis=1),外连接(保留所有数据)
res = pd.concat([sheets_li[1], sheets_li[2]], axis=1, join="outer")  

2. 后处理操作

# 删除指定列
res.drop(labels="Unnamed: 0", inplace=True, axis=1)  # 删除重复列
res = res.loc[:, ~res.columns.duplicated()]  # 修改数据
res.loc[3, "手机型号"] = "小米13"  
http://www.lryc.cn/news/626167.html

相关文章:

  • 跟随广州AI导游深度探寻广州历史底蕴​
  • Linux Namespace 隔离的“暗面”——故障排查、认知误区与演进蓝图
  • Python day49.
  • 嵌入式第三十二天(信号,共享内存)
  • 机器学习概念(面试题库)
  • 8.19笔记
  • Python + 淘宝 API 开发:自动化采集商品数据的完整流程​
  • python新工具-uv包管理工具
  • RPC高频问题与底层原理剖析
  • Chrome插件开发【windows】
  • 【最新版】CRMEB Pro版v3.4系统源码全开源+PC端+uniapp前端+搭建教程
  • LLM(大语言模型)的工作原理 图文讲解
  • 网络间的通用语言TCP/IP-网络中的通用规则4
  • 大模型+RPA:如何用AI实现企业流程自动化的“降本增效”?
  • 基于SpringBoot+Vue的养老院管理系统的设计与实现 智能养老系统 养老架构管理 养老小程序
  • Linux系统部署python程序
  • SConscript 脚本入门教程
  • InfoNES模拟器HarmonyOS移植指南
  • Redis缓存加速测试数据交互:从前缀键清理到前沿性能革命
  • 图形化监控用数据动态刷新方法
  • Transformer入门到精通(附高清文档)
  • 内网后渗透攻击--隐藏通信隧道技术(压缩、上传,下载)
  • 常见的软件图片缩放,算法如何选择?
  • 【开源工具】基于社会工程学的智能密码字典生成器开发(附完整源码)
  • 字节开源了一款具备长期记忆能力的多模态智能体:M3-Agent
  • 洛谷 P2834 纸币问题 3-普及-
  • Flink原理与实践 · 第三章总结
  • 第5.6节:awk字符串运算
  • 【驱动】RK3576:桌面操作系统基本概念
  • L2TP虚拟局域网