pandas基本用法

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、pandas的数据结构
    • 1、一维数组pd.Series
      • 1.1 pd.Series(data,index,dtype)
        • 示例1:不定义index
        • 示例2:自定义index
        • 示例3:通过字典创建
      • 1.2 属性与方法
      • 1.3 访问数据
      • 1.4 数据操作(切片、过滤(布尔访问)、运算)
        • 1.4.1 切片
        • 1.4.2 过滤(布尔访问)
        • 1.4.3 排序
        • 1.4.4 重置索引 .reset_index()
        • 1.4.5 缺失值处理
      • 1.5 高级用法(.apply(func))---- 元素级操作
      • 1.6 空series及其判断


前言

本文主要介绍pandas的一些基本用法。


一、pandas的数据结构

1、一维数组pd.Series

1.1 pd.Series(data,index,dtype)

pd.Series 的主要参数有以下几个:

  1. data:Series 的数据,可以是列表、数组、字典等。如果是字典,字典的键将成为 Series 的索引,字典的值将成为 Series 的数据。

  2. index:用于指定 Series 的索引,可以是列表、数组、索引对象(如 pd.Index 对象)、标量或者 None。如果不提供索引,将默认使用从 0 开始的整数索引。

  3. dtype:指定 Series 的数据类型。如果不指定,将根据数据类型推断。
    下面是一些示例:

示例1:不定义index
# 通过列表创建 Series,不定义index会自动生成0....index
data = [1, 2, 3, 4, 5]
s = pd.Series(data)
print(s)

输出:
在这里插入图片描述

示例2:自定义index
data = [1, 2, 3, 4, 5]
# 自定义索引
index = ['a', 'b', 'c', 'd', 'e']
s = pd.Series(data, index=index)
print(s)

输出:
在这里插入图片描述

示例3:通过字典创建
# 通过字典创建 Series
data = {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5}
s = pd.Series(data)
print(s)

输出:
在这里插入图片描述

1.2 属性与方法

# 属性(部分)
print(s.dtype)      # 数据的类型
print(s.ndim)       # 一维数组维数,永远是1
print(s.shape)   # Series 的形状
print(s.size)    # 元素的总数
# 方法(部分)
print(s.mean())  # 平均值
print(s.max())   # 最大值
print(s.min())   # 最小值
print(s.unique()) # 唯一值

1.3 访问数据

# 访问数据
print('自定义index访问单个元素:',s['a'])      # 访问单个元素,返回的类型就是里面数据类型
print('位置索引访问单个元素:',s[1])           # 也可以通过位置索引访问,,返回的类型就是里面数据类型
print('索引列表访问多个元素1:\n',s[['a', 'b', 'c']]) # 通过索引列表访问多个元素,返回的数据类型(包括一条数据)都是pd.Series
# 注意:s[['0', '1']是不行的,索引列表只支持具体的index,不支持位置index

输出:
在这里插入图片描述
【注】:需要注意的就是仅取一个数据时的数据类型是什么;以及索引列表是不支持位置index的,只支持具体的index

1.4 数据操作(切片、过滤(布尔访问)、运算)

1.4.1 切片
# 切片至少会有两个数据吧,所以类型一定是pd.Series
print(s[1:3])
print(type(s[1:3]))

输出:
在这里插入图片描述

1.4.2 过滤(布尔访问)
# 过滤,返回的类型一定是pd.Series
print('s>2',s[s > 2])
print('s==2',s[s == 2])

输出:
在这里插入图片描述

1.4.3 排序
func功能
.sort_values()按值排序
.sort_index()按索引排序
# 创建一个示例 Series
s = pd.Series([3, 1, 2, 4, 5], index=['a', 'b', 'c', 'd', 'e'])

# 按值对 Series 进行排序
print("按值排序:")
print(s.sort_values())  # 按值排序,默认从小到大

# 按索引对 Series 进行排序
print("\n按索引排序:")
print(s.sort_index())   # 按索引排序

输出:
在这里插入图片描述
运行这段代码,你将看到每个操作的输出结果,以及它们之间的区别:

  • 按值排序:Series 中的值按照升序排列,索引随之重新排列
  • 按索引排序:Series 中的索引按照字母顺序进行排列,对应的值随之重新排列。

【注】:返回的还是pd.Series
【注】:排序方法应该还有参数可以自定义排序规则(用里面参数),要用到时问一下ChatGPT。

1.4.4 重置索引 .reset_index()

比较常用,有时通过布尔过滤选择数据返回的数据index是乱的,我们调用这个方法,index就会重新编号成0,1,2…
【注】:与Dataframe里调用稍微有点不一样,Series该方法不支持原地修改(不能用inplace),另外二者都需要传入drop=True表明丢弃原来的索引,反之效果看下面代码给演示一下吧,不是很好叙述。

# 创建一个示例 Series
s = pd.Series([3, 1, 2, 4, 5])
s = s[s >= 3]

print(s)
# 重新设置索引,并丢弃原始索引
s_reset = s.reset_index(drop=True)

print(s_reset)

输出:返回的结果类型还是Series
在这里插入图片描述
【注】:如果不设置drop=True就会将原来索引保持下来,并当成Dataframe的一列保存下来,因此会返回一个Dataframe,像下面这样:
在这里插入图片描述
【注】:Dataframe里面也要 .reset_index(drop=True,inplace=True)

1.4.5 缺失值处理
func功能
.isnull()检测缺失值
.fillna()填充缺失值
.dropna()删除缺失值所在的行
具体更详细用法建议问ChatGPT
# 创建一个含有缺失值的 Series
s_with_nan = pd.Series([1, 2, None, 4, 5])
print(s_with_nan)

# 检测缺失值,返回一个布尔series
print(s_with_nan.isnull())
# 结合布尔过滤就能返回缺失值的数据了
print(s_with_nan[s_with_nan.isnull()])

print('-'*100)
# 填充缺失值
s_filled = s_with_nan.fillna(0)
print(s_filled)

# 删除缺失值所在的行
s_dropped = s_with_nan.dropna()
print(s_dropped)

输出:
在这里插入图片描述
在这里插入图片描述

1.5 高级用法(.apply(func))---- 元素级操作

(.apply(func))---- 元素级操作:将指定函数应用于 Series 中的每个元素,并返回结果。

# 创建 Series
s = pd.Series([1, 2, 3, 4, 5])

# 使用 apply 方法和 lambda 匿名函数,对每个元素进行平方操作
s_applied = s.apply(lambda x: x ** 2)
print(s_applied)

输出:
在这里插入图片描述

def f(x):
    return x**2
# 创建 Series
s = pd.Series([1, 2, 3, 4, 5])

# 使用 apply 方法和 自定义的函数
s_applied = s.apply(f)
print(s_applied)

在这里插入图片描述

1.6 空series及其判断

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/550294.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于HMM隐马尔可夫模型的金融数据预测算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 5.完整程序 1.程序功能描述 基于HMM隐马尔可夫模型的金融数据预测算法.程序实现HMM模型的训练,使用训练后的模型进行预测。 2.测试软件版本以及运行结果展示 MATLAB2022A版本运…

excel 无法正确处理 1900-03-01 前的日期

问题由来:excel 用公式 TEXT(A1,"yyyy-mm-dd") 转日期时,当A1 的值等于59 的时候,返回值是1900-02-28;当A1 的值等于61 的时候,返回值是1900-03-01;那么当 A1的值为 60 的时候,返回值…

数图智慧零售解决方案,赋能零售行业空间资源价值最大化

数图智慧零售解决方案 赋能零售行业空间资源价值最大 在激烈的市场竞争中,如何更好地提升空间资源价值,提高销售额,成为行业关注的焦点。近日,NIQ发布的《2024年中国饮料行业趋势与展望》称,“在传统零售业态店内&…

第十一章数据仓库和商务智能10分

【数据仓库-后端,商务智能-前端】 基本算法:关联关系(牵手-谈恋爱),集群关系(杭州人爱吃酸甜口),决策树,线性回归,贝叶斯,神经网络,时…

Adobe AE(After Effects)2015下载地址及安装教程

Adobe After Effects是一款专业级别的视觉效果和动态图形处理软件,由Adobe Systems开发。它被广泛用于电影、电视节目、广告和其他多媒体项目的制作。 After Effects提供了强大的合成和特效功能,可以让用户创建出令人惊艳的动态图形和视觉效果。用户可以…

使用大模型来实现医疗领域的隐私信息保护

大模型隐私主要分为训练阶段、推理阶段以及用户与大模型交互过程中的隐私泄露,目前的研究重点在大模型训练阶段。传统隐私保护技术主要包括联邦学习、差分隐私、同态加密等,这些技术在大模型背景下的应用挑战不断加剧:(1)联邦学习应用于大模型…

ArkTs

一、概述 ArkTs是由TypeScript扩展而来,在继承TypeScript语法的基础上进行了一系列优化,使开发者能够以更简洁、更自然的方式开发应用。 TypeScript语法: 线上网站:https://www.typescriptlang.org/zh/play 二、TS变量 变量声明: 常量声明: const b…

【高端电流检测IC储能产品应用方案】耐压45V侧轨的电流检测芯片FP137 应用于电脑电源,开关电源以及多口快充充电器,户外移动电源,适配器,电池充电器等

近年来,随着电子产品的飞速发展,对电流检测精度和可靠性的要求也越来越高。特别是在电脑电源、开关电源以及多口快充充电器、户外移动电源、适配器、电池充电器等领域,对电流检测技术的需求更是日益增长。 电流检测芯片是一种关键的电子元器…

强化学习(三)基于动态规划 Dynamic Programming 的求解方法

文章目录 1. 动态规划与强化学习的联系2. 利用动态规划求解最优价值函数2.1 案例背景2.2 策略评估(预测)2.3 策略迭代(控制) 在前文《强化学习的数学框架:马尔科夫决策过程 MDP》中,我们用马尔可夫过程抽象…

STM32 软件I2C方式读取MT6701磁编码器获取角度例程

STM32 软件I2C方式读取MT6701磁编码器获取角度例程 📍相关篇《STM32 软件I2C方式读取AS5600磁编码器获取角度例程》🌿《Arduino通过I2C驱动MT6701磁编码器并读取角度数据》🔰MT6701芯片和AS5600从软件读取对比,只是读取的寄存器和…

Adobe AE(After Effects)2024下载地址及安装教程

Adobe After Effects是一款专业级别的视觉效果和动态图形处理软件,由Adobe Systems开发。它被广泛用于电影、电视节目、广告和其他多媒体项目的制作。 After Effects提供了强大的合成和特效功能,可以让用户创建出令人惊艳的动态图形和视觉效果。用户可以…

【OpenGL实验】在python、Qt5、pyOpenGL程序的若干要点

实验效果图: 代码 目录 一、说明二、关于QGLWidget2.1 三个方便的虚函数2.2 析构函数2.3 QGLWidget析构函数 三、关于QGLWidget的三个虚函数分工3.1 initializeGL:数据准备、数据绑定分离3.2 resizeGL:视角改变函数3.3 paintGL:…

苍穹外卖分类管理

分析 需求分析 SQL的写法 1 在mapper中写 2 在xml中写 Mapper public interface CategoryMapper {/*** 插入数据* param category*/AutoFill(OperationType.INSERT)Insert("insert into category(type, name, sort, status, create_time, update_time, create_user, upd…

docker安装并跑通QQ机器人实践(2)-签名服务器bs-qsign搭建

在前文中,我们详尽阐述了QQ机器人的搭建过程及其最终实现的各项功能展示。接下来,我们将转向探讨该项目基于Docker构建服务的具体实践。本篇将以QQ机器人签名服务——qsign为起点,逐步展开论述。 1 获取和运行 xzhouqd/qsign:8.9.63 镜像 1.…

【K8s】:在 Kubernetes 集群中部署 MySQL8.0 高可用集群(1主2从)

【K8s】:在 Kubernetes 集群中部署 MySQL8.0 高可用集群(1主2从) 一、准备工作二、搭建nfs服务器2.1 安装 NFS 服务器软件包(所有节点执行)2.2 设置共享目录2.3 启动 NFS 服务器2.4 设置防火墙规则(可选&am…

【ROS2】搭建ROS2-Humble + Vscode开发流程

【ROS2】搭建ROS2-Humble Vscode开发流程 文章目录 【ROS2】搭建ROS2-Humble Vscode开发流程1.基本环境配置2.搭建Vscode开发环境 1.基本环境配置 基本的环境配置包括以下步骤: 安装ROS2-Humble,可以参考这里安装一些基本的工具,可以参考…

Webrtc 信令服务器实现

webrtc建联流程图 由上图可知,所谓的信令服务器其实就是将peer的offer/candidate/answer传给对端而已。这样的话实现方式就有很多种了,目前普遍的方式HTTP/HTTPS,WS/WSS。像webrtc-demo-peerconnection就是实现HTTP这种方式。本文使用WS&…

APIGateway的认证

APIGateway的支持的认证如下: 我们从表格中可以看到,HTTP API 不支持资源策略的功能,另外是通过JWT的方式集成Cognito的。 对于REST API则是没有显示说明支持JWT认证,这个我们可以通过Lambda 自定义的方式来实现。 所以按照这个…

LangChain-Chatchat 开源知识库来了

LangChain-Chatchat 开源知识库来了 LangChain-Chatchat 架构设计LangChain-ChatChat 具体实现过程 一键本地离线部署软件环境硬件环境支持三种部署方式 LangChain-Chatchat 是基于 ChatGLM 等大语言模型与 LangChain 等应用框架实现,开源、可离线部署的 RAG 检索增…

Django数据导出与导入问题

执行: python manage.py loaddata data.json 的常见错误: * 1. UnicodeDecodeError: utf-8 codec cant decode byte 0xff in position 0: invalid start byte* 2. raise JSONDecodeError("Unexpected UTF-8 BOM (decode using utf-8-sig)",...django.core.serializer…