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.pswp.cn/web/93684.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/93684.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

hadoop技术栈(九)Hbase替代方案

一、 核心替代方向 ‌云原生托管NoSQL服务:‌ ‌Google Cloud Bigtable:‌ 这是HBase在云端的“官方”替代品,兼容HBase API,底层存储和架构高度优化,提供高吞吐、低延迟、无缝扩展、完全托管的服务。‌如果追求兼容性…

深度解析 DDoS 攻击:运作机制与防御体系构建​

在网络安全领域,DDoS(分布式拒绝服务)攻击始终是企业与机构的 “心腹大患”。它通过操控大量 “傀儡主机” 发起海量请求,直接瘫痪目标服务器或网络链路,导致业务中断、用户流失甚至品牌声誉受损。今天,我们…

在linux系统中下载Andconda

下载前的准备工作 在开始下载 Anaconda 之前,做好充分的准备工作能避免后续出现不必要的麻烦,让整个过程更加顺畅。 确认系统架构 Linux 系统有 32 位和 64 位之分,不同架构对应的 Anaconda 安装包不同。你可以通过以下命令查看系统架构&a…

学习threejs,使用EffectComposer后期处理组合器(采用RenderPass、UnrealBloomPass、FilmPass渲染通道),实现交互式 3D blob

👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:threejs gis工程师 文章目录一、🍀前言1.1 ☘️THREE.EffectComposer 后期处…

LLM - windows下的Dify离线部署:从镜像打包到无网环境部署(亲测,包含插件部署)

一、离线部署原理 通过Docker的save/load机制实现镜像的物理介质迁移,配合Docker Compose编排文件的环境适配能力,可在完全断网的环境中快速部署复杂应用。整个过程分为在线环境准备和离线环境还原两个阶段。 二、在线环境操作 1. 环境准备 在线环境:一台可以访问互联网的…

前端学习之后端小白java的一些理论知识(框架)

一、Spring Framework 和 Spring boot的区别 核心定位 Spring Framework:一个全面的Java应用开发框架,提供核心功能如IoC容器、AOP等Spring Boot:Spring Framework的扩展,专注于简化Spring应用的初始搭建和开发过程 配置方式 Spri…

K8S的ingress

一。ingress的介绍对于NodePort和LoadBalance,这两种方法,都有缺点:1.NodePort方式缺点会占用很多集群的端口,当集群服务变多的时候,缺点更加显著2.LB的缺点就是每一个service都需要一个LB,浪费&#xff0c…

实现自己的AI视频监控系统-序章

目录简介视频监控系统是什么?该系列课程你会学到什么?需要准备哪些工具?下期预告简介 在当今快速发展的科技时代,人工智能(AI)已经深入到我们生活的方方面面。其中,AI视频监控系统作为安防领域…

Pytorch GPU版本安装保姆级教程

本文将介绍在anaconda环境下安装pytorch的详细步骤。 Anaconda安装教程参考Anaconda安装保姆级教程。 目录 一、工具安装 二、创建虚拟环境 三、安装Pytorch CUDA Toolkit安装 Pytorch安装 总结 一、工具安装 点击链接官网codetou.com,下载安装最新版即可&…

重学React(六):脱围机制二

背景: 话不多说,继续学习,现在是Effect时间。 前期回顾: 重学React(一):描述UI 重学React(二):添加交互 重学React(三):状…

【MySQL】索引(B+树详解)

MySQL(五)索引 一、索引的减I/O设计 1.读取量 2.搜索树 2.1方向 2.2有序 3.分多叉 3.1B树 弊端: 3.2B树 3.2.1非叶子-搜索字段 3.2.1.1海量分叉 3.2.1.1.1最大式 3.2.1.1.2最快式 3.2.1.2缓存内存 3.2.1.2.1字段总量小 3.2.1.2.2时间复杂度 3.2.1.3区间搜索向…

GPT-5博士级AI使用教程及国内平替方案

GPT-5博士级AI使用教程及国内平替方案一、GPT-5核心升级:到底强在哪里?1. **统一入口自动思考模式**2. **256K上下文40万汉字记忆**3. **人格系统长期记忆**4. **编程能力史诗级增强**二、注册与访问:国内用户也能免费上车1.官方渠道&#xf…

云计算-多服务集群部署实战指南:从JumpServer到Kafka、ZooKeeper 集群部署实操流程

简介围绕企业级服务部署与集群搭建,基于 OpenStack 私有云平台,介绍了一系列关键服务的实操过程。内容涵盖使用 CentOS7 系统部署 JumpServer 堡垒机并对接 controller 与 compute 节点,构建 RabbitMQ 集群(含磁盘节点与内存节点配…

深入剖析Spring IOC容器——原理、源码与实践全解析

🌟 你好,我是 励志成为糕手 ! 🌌 在代码的宇宙中,我是那个追逐优雅与性能的星际旅人。 ✨ 每一行代码都是我种下的星光,在逻辑的土壤里生长成璀璨的银河; 🛠️ 每一个算法都是我绘制…

探秘C语言:数据在内存中的存储机制详解

探秘C语言:数据在内存中的存储机制详解探秘C语言:数据在内存中的存储机制详解一、二进制与进制转换:数据的不同"外衣"1.1基本概念1.2进制转换二、整数在内存中的存储:补码的奥秘原码、反码、补码总结探秘C语言&#xff…

HTML 常用标签介绍

目录 HTML 标签 HTML 常用标签速查表 文档元标签 页面结构与布局 文本内容与排版 链接与媒体 列表与表格 表单与交互 其他功能标签 文本结构标签 文本格式化标签 列表标签 链接与导航标签 媒体标签 容器与结构标签 表格标签 表单标签 元信息与文档标签 脚本…

kafka 冲突解决 kafka安装

目录 解法方法&#xff1a; 一般情况正常可以版本2.0.2 报错&#xff1a; File "<frozen importlib._bootstrap>", line 1050, in _gcd_import File "<frozen importlib._bootstrap>", line 1027, in _find_and_load File "<frozen…

论文阅读 2025-8-9 [DiC, DropKey]

闲来没事&#xff0c;找点近一年的论文看看 1. DiC: Rethinking Conv3x3 Designs in Diffusion Models ✨ 一句话总结&#xff1a;DiC用沙漏架构稀疏跳跃条件门控重构纯Conv3x3扩散模型&#xff0c;在速度碾压Transformer的同时性能反超&#xff0c;为实时生成任务开辟新路径。…

16进制pcm数据转py波形脚本

将16bit的单声道或者双声道的16进制的pcm数据转成波形图片出来分析数据&#xff0c;python脚本如下&#xff1a;import numpy as np import matplotlib.pyplot as plt# 1: 单声道&#xff0c;2&#xff1a;双声道 PCM_CHANNELS 2# 你提供的十六进制数据 hex_str ""…

MySQL的锁:

目录 锁的介绍&#xff1a; 并发事务访问相同数据可以分为以下几种情况&#xff1a; 都是进行读操作&#xff1a; 都是进行写操作&#xff1a; 有读操作也有写操作&#xff1a; 读锁、写锁&#xff1a; 读锁&#xff1a; 写锁&#xff1a; 按照锁粒度分类&#xff1a;…