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及其判断

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

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

相关文章

操作系统—GCC与编译全流程

文章目录 GCC与编译全流程1.GCC是什么?2.编译全流程(1).GCC到底做了哪些事情?(2).预处理I.预处理会做什么II.预处理器主要包含什么?III.宏的一些魔法 (3).编译I.基本流程II.编译优化III.一点例子 (4).汇编(5).链接(6).说到这里,为…

Java之二维数组

使用二维数组: 引用二维数组元素需要指明行下标和列下标。二维数组有两个指标,行数使用“数组名.length",每行的列数使用“数组名[i].length”。遍历是二维数组的基本算法,使用双重循环遍历二维数组。外层循环控制行,内存循环…

我的思考工作流(2024年版)

去年底,我对自己的思考工作流程又做了一些优化和改进,把它变得更为简洁、清晰。 因此,今天我想把它分享给大家,希望能给你一些启发。 我的核心方法论依然是我自己提出的「INKP知识管理法」(参见《打开心智》第五章&…

vscode 搭建stm32开发环境记录(eide+cortex-debug+jlink)

前言 clion使用的快过期了,所以就准备使用vscode 来代替clion作为代码开发环境 vscode 插件安装 创建个空白工程 添加项目相关的源文件,和配置宏定义和头文件目录 编译和烧录(ok) 结合cortex-debug 结果(测试ok)

BioTech - 研发 AlphaFold2 使用自定义 MSA 与 Template 的组合框架

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/137835482 AlphaFold2 是蛋白质结构预测算法,使用 MSA(多序列比对) 特征和 Template(模版) 特征,来提高预测的准确性。 MSA 特征:利用进化信息来预测蛋白质结构,通…

【echarts】使用 ECharts 绘制3D饼图

使用 ECharts 绘制3D饼图 在数据可视化中,饼图是表达数据占比信息的常见方式。ECharts 作为一个强大的数据可视化库,除了标准的二维饼图,也支持更加生动的三维饼图绘制。本文将指导你如何使用 ECharts 来创建一个3D饼图,提升你的…

C++设计模式|创建型 2.工厂模式

1.简单工厂思想 简单工厂模式不属于23种设计模式之⼀,更多的是⼀种编程习惯。它的核心思想是将产品的创建过程封装在⼀个⼯⼚类中,把创建对象的流程集中在这个⼯⼚类⾥⾯。卡码网将其结构描述为下图所示的情况: 简单⼯⼚模式包括三个主要⻆⾊…

apache配置ssl证书

SSL证书,即安全套接层证书,是一种数字证书,它通过在客户端浏览器和Web服务器之间建立一条加密通道,保证了双方传输信息的安全性。当用户访问一个使用SSL证书保护的网站时,浏览器会显示一个锁形图标,表示连接…

OWASP发布10大开源软件风险清单

3月20日,xz-utils 项目被爆植入后门震惊了整个开源社区,2021 年 Apache Log4j 漏洞事件依旧历历在目。倘若该后门未被及时发现,那么将很有可能成为影响最大的软件供应链漏洞之一。近几年爆发的一系列供应链漏洞和风险,使得“加强开…

【Java集合进阶】数据结构(平衡二又树旋转机制)数据结构(红黑树、红黑规则、添加节点处理方案详解)

🍬 博主介绍👨‍🎓 博主介绍:大家好,我是 hacker-routing ,很高兴认识大家~ ✨主攻领域:【渗透领域】【应急响应】 【Java】 【VulnHub靶场复现】【面试分析】 🎉点赞➕评论➕收藏 …

鸿蒙入门02-首次安装和配置

注:还没有安装编辑器( deveco studio )的小伙伴请看鸿蒙入门01-下载和安装-CSDN博客 首次安装配置 编辑器( deveco studio )安装完毕以后需要进入配置界面进行相关配置配置完毕以后才可以正常使用 环境配置&#xf…

算法打卡day36

今日任务: 1)01背包问题理论基础(卡码网:46. 携带研究材料) 2)01背包问题滚动数组(卡码网:46. 携带研究材料) 3)416. 分割等和子集 4)复习day11 卡码网:46. 携带研究材料 题目链接&…