pandas基本用法

news2024/11/24 2:51:10

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

文章目录

  • 前言
  • 一、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及其判断

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

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

相关文章

【C++学习】C++IO流

这里写目录标题 🚀C语言的输入与输出🚀什么是流🚀CIO流🚀C标准IO流🚀C文件IO流 🚀C语言的输入与输出 C语言中我们用到的最频繁的输入输出方式就是scanf ()与printf()。 scanf(): 从标准输入设备(键盘)读取…

14.C++常用的算法_排序算法

文章目录 遍历算法1. sort()代码工程运行结果 2. random_shuffle()代码工程运行结果第一次运行结果第二次运行结果第三次运行结果 3. merge()代码工程运行结果 4. reverse()代码工程运行结果 遍历算法 1. sort() 代码工程 sort()函数默认是升序排列,如果想要降序…

Jenkins配置windows/linux从节点

背景: 环境:jenkins环境(Ubuntu) 节点机器:Linux、Windows 前置条件: 节点机器:安装java、allure、python 1 Linux节点管理机器添加 1.1 系统管理->节点列表->New Node 1.2 节点配置…

基于微信小程序投票评选系统的设计与实现(论文+源码)_kaic

摘 要 社会发展日新月异,用计算机应用实现数据管理功能已经算是很完善的了,但是随着移动互联网的到来,处理信息不再受制于地理位置的限制,处理信息及时高效,备受人们的喜爱。所以各大互联网厂商都瞄准移动互联网这个潮…

Weblogic 数据源无法解析错误的解决方法

问题现象 javax.naming.NameNotFoundException: Unable to resolve datasource1. Resolved ; remaining name datasource1at weblogic.jndi.internal.BasicNamingNode.newNameNotFoundException(BasicNamingNode.java:1292)at weblogic.jndi.internal.BasicNamingNode.lookupH…

leetcode-合并两个有序链表

目录 题目 图解 方法一 方法二 代码(解析在注释中) 方法一 ​编辑方法二 题目 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1: 输入:l1 [1,2,4], l2 [1,3,4] 输出:[1,1…

电机控制器电路板布局布线参考指导(五)

电机控制器电路板布局布线参考指导(五)大容量电容和旁路电容的放置 1.大容量电容的放置2.电荷泵电容器3.旁路电容/去耦电容的放置3.1 靠近电源3.2 靠近功率器件3.3 靠近开关电流源3.4 靠近电流感测放大器3.5 靠近稳压器 tips:资料主要来自网络…

Spring Boot 多环境配置:YML 文件的三种高效方法

🌟 前言 欢迎来到我的技术小宇宙!🌌 这里不仅是我记录技术点滴的后花园,也是我分享学习心得和项目经验的乐园。📚 无论你是技术小白还是资深大牛,这里总有一些内容能触动你的好奇心。🔍 &#x…

【Redis 神秘大陆】006 灾备方案

六、Redis 灾备方案 6.1 存储方案 6.1.1 基础对比 RDB持久化AOF持久化原理周期性fork子进程生成持久化文件每次写入记录命令日志文件类型二进制dump快照文件文本appendonly日志文件触发条件默认超过300s间隔且有1s内超过1kb数据变更永久性每秒fsync一次文件位置配置文件中指…

基于Qt的二维码生成与识别

基于Qt的二维码生成与识别 一、获取QZxing开源库 1.通过封装的QZxing开源库生成和识别二维码,下载地址:GitCode - 开发者的代码家园https://gitcode.com/mirrors/ftylitak/qzxing/tree/master。 2.下载解压后,使用Qt Creator xx&#xff0…

如何采集opc服务器数据上传云端

为了进一步提高生产效率,生产制造的不断朝着智能化发展和升级,传统的自动化生产系统已经不能满足需求。传统的SCADA系统一般是用于现场的数据采集与控制,但是本地控制已经无法满足整个工厂系统智能化数字化的需求,智能化数字化是需…

NTC热敏电阻采集温度-单片机通用模板

NTC热敏电阻采集温度-单片机通用模板 一、NTC热敏电阻转换温度的原理二、AT104Tem.c的实现三、AT104Tem.h的实现 一、NTC热敏电阻转换温度的原理 ①NTC热敏电阻会随着温度的升高,电阻值R逐渐降低;②硬件搭建电阻分压电路采集ADC逆推热敏电阻当前的阻值&…

线上频繁fullgc问题-SpringActuator的坑

整体复盘 一个不算普通的周五中午,同事收到了大量了cpu异常的报警。根据报警表现和通过arthas查看,很明显的问题就是内存不足,疯狂无效gc。而且结合arthas和gc日志查看,老年代打满了,gc不了一点。既然问题是内存问题&…

[html]一个动态js倒计时小组件

先看效果 代码 <style>.alert-sec-circle {stroke-dasharray: 735;transition: stroke-dashoffset 1s linear;} </style><div style"width: 110px; height: 110px; float: left;"><svg style"width:110px;height:110px;"><cir…

新零售门店、商品、会员管理指标体系总览

新零售&#xff0c;旨在打破传统零售业的边界&#xff0c;引入先进科技和数字化手段&#xff0c;通过整合线上线下渠道&#xff0c;全面提升用户体验&#xff0c;并实现更智能、高效、个性化的零售运营模式。这一模式不仅仅关注销售产品&#xff0c;更注重构建全方位的购物生态…

SpringBoot整合minio服务

这里我选用的是JDK1.8 SpringBoot2.3.12.RELEASE 一、导入依赖 <dependency><groupId>io.minio</groupId><artifactId>minio</artifactId><version>8.2.2</version> </dependency> 二、导入工具类 注意&#xff1a;需要在…

eclipse中tomcat环境配置,2024年最新Web前端面试选择题

先自我介绍一下&#xff0c;小编浙江大学毕业&#xff0c;去过华为、字节跳动等大厂&#xff0c;目前阿里P7 深知大多数程序员&#xff0c;想要提升技能&#xff0c;往往是自己摸索成长&#xff0c;但自己不成体系的自学效果低效又漫长&#xff0c;而且极易碰到天花板技术停滞…

【位运算 子集状态压缩】982按位与为零的三元组

算法可以发掘本质&#xff0c;如&#xff1a; 一&#xff0c;若干师傅和徒弟互有好感&#xff0c;有好感的师徒可以结对学习。师傅和徒弟都只能参加一个对子。如何让对子最多。 二&#xff0c;有无限多1X2和2X1的骨牌&#xff0c;某个棋盘若干格子坏了&#xff0c;如何在没有坏…

IP协议如何进行地址管理?

如今&#xff0c;IP协议有两个版本&#xff0c;分别是IPv4和IPv6&#xff0c;IPv4是目前主要应用的版本。IPv4的IP地址是以4个字节的数字来表示的&#xff0c;比如 127.0.0.1。因此&#xff0c;IPv4所能表示IP地址的个数是2^32次方&#xff0c;也就是42亿多个&#xff0c;看起来…