常用Pandas操作(笔记整理)

news2024/9/20 16:39:24

目录

一、常用

1、创建DataFrame(数据导入)

2. 查看数据前⼏⾏(head)

3. 查看数据后⼏⾏(tail)

4. 查看数据基本信息(info)

5. 使⽤ value_counts 计算唯⼀值的频率

6. 描述性统计信息(describe)

7. 选择列

8. 选择多列

9. 选择⾏(loc)

10. 选择特定⾏和列(loc)

11. 多条件选择

12. 使⽤ at 和 iat 快速访问元素

13. 使⽤ isin 进⾏过滤

14. 使⽤ query 进⾏条件查询

15. 按列排序数据 (sort_values)

16. 使⽤ astype 进⾏数据类型转换

17. 处理缺失值(dropna)

18. 填充缺失值(fillna)

19. 使⽤ duplicated 和 drop_duplicates 处理重复值

20. 新增列

21. 删除列(drop)

22. 重命名列(rename)

23. 使⽤ replace 进⾏值替换

24. 使⽤ mask 进⾏条件替换

25. 分组统计(groupby、agg)

26. 使⽤ nlargest 和 nsmallest 获取最⼤和最⼩值

27. 合并 DataFrame(concat)

28. ⽇期时间处理(to_datetime)

29. 保存 DataFrame 到⽂件(to_csv)

30. 从⽂件加载数据到 DataFrame(read_csv)

31. 使⽤ apply 函数对列进⾏操作

32. 使⽤ map 函数进⾏值替换

33. 使⽤ cut 函数进⾏分箱处理

34. 使⽤ groupby 和 transform 进⾏组内操作

二、其他

1. 字符串处理(str)

2. 使⽤ pipe 进⾏链式操作(pipe)

3. 合并 DataFrame(基于键)(merge)

4. 透视表(pivot_table)


一、常用

1、创建DataFrame(数据导入)

         使⽤字典创建 DataFrame

import pandas as pd

data = {'ID': [101, 102, 103, 104, 105],
        'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eva'],
        'Age': [25, 30, 22, 35, 28],
        'Salary': [50000, 60000, 45000, 75000, 55000],
        'Status': ['Active', 'Inactive', 'Active', 'Active', 'Inactive']}

df = pd.DataFrame(data)

2. 查看数据前⼏⾏(head)

df.head()
        ⽤于查看 DataFrame 的前⼏⾏,默认为前 ⾏。
        运行结果:

3. 查看数据后⼏⾏(tail)

df.tail()
         ⽤于查看 DataFrame 的后⼏⾏,默认为后 ⾏。

        运行结果:

4. 查看数据基本信息(info)

df.info()
        提供 DataFrame 的基本信息,包括每列的⾮空值数量和数据类型。

        运行结果:

5. 使⽤ value_counts 计算唯⼀值的频率

df['Column'].value_counts()

        使⽤ value_counts 计算某列中每个唯⼀值的频率。

        运行结果: 

6. 描述性统计信息(describe)

df.describe()

# 常用
df.describe([0.01, 0.1, 0.25, 0.5, 0.75, 0.9, 0.99]).T
        提供 DataFrame 的描述性统计信息,包括均值、标准差、最⼩值、25%分位数、中位数(50%分位数)、75%分位数和最⼤值。

        运行结果:

7. 选择列

df['ColumnName']
        通过列名选择 DataFrame 中的⼀列。
        运行结果:

8. 选择多列

df[['Column1', 'Column2']]
        通过列名列表选择 DataFrame  中的多列。

        运行结果:

9. 选择⾏(loc)

df.loc[index]

        通过索引标签选择 DataFrame 中的⼀⾏。

        运行结果:

10. 选择特定⾏和列(loc)

df.loc[index, 'ColumnName']
        通过索引标签和列名选择 DataFrame 中的特定元素。

        运行结果:

11. 多条件选择

df[(df['Column1'] > value1) & (df['Column2'] == value2)]
        使⽤逻辑运算符(& :与,|:或,~:⾮)结合多个条件进⾏过滤。

        运行结果:

12. 使⽤ at 和 iat 快速访问元素

df.at[index, 'ColumnName']
df.iat[index, columnIndex]

        使⽤ at 和 iat 快速访问DataFrame中的元素。

        运行结果: 

13. 使⽤ isin 进⾏过滤

df[df['Column'].isin(['value1', 'value2'])]
        使⽤ isin 过滤包含在给定列表中的值的⾏。

        运行结果: 

14. 使⽤ query 进⾏条件查询

df.query('Column > value')
         使⽤ query 进⾏条件查询。

        运行结果:

15. 按列排序数据 (sort_values)

df.sort_values(by='ColumnName', ascending=False)

# ascending:True升序,False降序
        根据指定列的值进⾏升序或降序排序。

        运行结果:

16. 使⽤ astype 进⾏数据类型转换

df['NewColumn'] = df['Column'].astype(float)

        使⽤ astype 将列的数据类型转换为指定类型。

17. 处理缺失值(dropna)

df.dropna()
        删除包含缺失值的⾏。

        运行结果:

18. 填充缺失值(fillna)

df.fillna(value)
        ⽤指定值填充缺失值。
# 使用均值填充缺失值
df.fillna(df.mean())

19. 使⽤ duplicated 和 drop_duplicates 处理重复值

df.duplicated(subset=['Column1', 'Column2'])

df.drop_duplicates(subset=['Column1', 'Column2'], keep='first')

# keep  'first'(默认):保留每个重复组中的第一个出现的行。
#       'last':保留每个重复组中的最后一个出现的行。

        使⽤ duplicated 检测重复值,使⽤ drop_duplicates 删除重复值。

         运行结果:

20. 新增列

df['NewColumn'] = values
        新增⼀列,并为其赋值。

        运行结果:

21. 删除列(drop)

df.drop('ColumnName', axis=1)
        删除指定列。

        运行结果:

22. 重命名列(rename)

df.rename(columns={'OldName': 'NewName'}, inplace=True)
        重命名指定列。

        运行结果:

23. 使⽤ replace 进⾏值替换

df.replace({'OldValue': 'NewValue'})

        使⽤ replace 替换DataFrame中的值。

        运行结果:

24. 使⽤ mask 进⾏条件替换

df['NewColumn'] = df['Column'].mask(df['Condition'])

        使⽤ mask 根据条件替换值。

        运行结果:

25. 分组统计(groupby、agg)

df.groupby('ColumnName').agg({'Column1': 'mean', 'Column2': 'sum'})
        按照指定列进⾏分组,然后进⾏聚合统计。

        运行结果:

26. 使⽤ nlargest 和 nsmallest 获取最⼤和最⼩值

df.nlargest(5, 'ColumnName')
df.nsmallest(5, 'ColumnName')

        使⽤ nlargest 获取最⼤值,使⽤ nsmallest 获取最⼩值。

        运行结果:

27. 合并 DataFrame(concat)

pd.concat([df1, df2], axis=0)
        沿着指定轴合并两个 DataFrame
# axis=0:垂直合并两个DataFrame
# axis=1:水平合并两个DataFrame

pd.concat([df1, df2], axis=0)

28. ⽇期时间处理(to_datetime)

df['DateTimeColumn'] = pd.to_datetime(df['DateTimeColumn'])
        将字符串列转换为⽇期时间类型。

format

参数符号

说明
%y两位数的年份表示(00-99)
%Y四位数的年份表示(000-9999)
%m月份(01-12)
%d月内中的一天(0-31)
%H24小时制小时数(0-23)
%M分钟数(00-59)
%S秒(00-59)
%j年内的一天(001-366)
%W一年中的星期数(00-53)星期一为星期的开始
%w星期(0-6),星期天为星期的开始

29. 保存 DataFrame 到⽂件(to_csv)

df.to_csv('filename.csv', index=False)
        将 DataFrame 保存为 CSV ⽂件。

30. 从⽂件加载数据到 DataFrame(read_csv)

df = pd.read_csv('filename.csv')
        从⽂件中加载数据到DataFrame

31. 使⽤ apply 函数对列进⾏操作

df['NewColumn'] = df['Column'].apply(lambda x: x * 2)
        使⽤ apply 函数 对某列的每个元素进⾏操作,可传递⾃定义函数。

        运行结果:

32. 使⽤ map 函数进⾏值替换

df['Status'] = df['Status'].map({'Active': 1, 'Inactive': 0})
        使⽤ map函数 根据字典或函数替换列中的值。

        运行结果:

33. 使⽤ cut 函数进⾏分箱处理

df['AgeGroup'] = pd.cut(df['Age']
                        ,bins=[20, 30, 40, 50]
                        ,labels=['20-30', '30-40', '40-50'])
        使⽤ cut 函数将数值列分成不同的箱⼦,⽤标签表示。

        运行结果:

34. 使⽤ groupby 和 transform 进⾏组内操作

df['MeanSalaryByAge'] = df.groupby('Age')['Salary'].transform('mean')
         使⽤ groupby 和 transform 在组内进⾏操作,并将结果⼴播到原始 DataFrame。

二、其他

1. 字符串处理(str)

df['StringColumn'].str.method()
        对字符串列进⾏各种处理,如切⽚、替换等。

2. 使⽤ pipe 进⾏链式操作(pipe)

df.pipe(func1).pipe(func2, arg1='value').pipe(func3)
         使⽤ pipe 进⾏链式操作,将多个操作组合在⼀起。

3. 合并 DataFrame(基于键)(merge)

pd.merge(df1, df2, on='KeyColumn', how='inner')
        使⽤指定列进⾏合并,指定合并⽅式(内连接、左连接、右连接、外连接)。

4. 透视表(pivot_table)

pd.pivot_table(df, values='ValueColumn', index='IndexColumn', columns='ColumnToPivot', aggfunc='mean')
        创建透视表,汇总数据。

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

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

相关文章

SpringBoot 3.x+Mybatis Plus多数据源极简配置

1. 创建项目 创建一个名为mybatis-plus-demo的项目,使用MavenJDK17。不会的请看 IntelliJ IDEA快速创建Spring Boot项目,最终项目结构,如下图。 2. 编写代码 根据最终项目结构,从下往上依次列出各个文件的代码。 2.1 pom.xml…

迷雾大陆攻略:VMOS云手机流派辅助和技能加持助力!

在《迷雾大陆》这款游戏中,选择一个合适的流派和技能加点至关重要。使用VMOS云手机,玩家可以享受到专属定制的云手机,内置游戏安装包,无需重新下载安装游戏。同时,VMOS云手机能够24小时不间断运行,自动完成…

STM32(F103ZET6)第二十课:FreeRtos操作系统的应用

目录 调试方式一、任务堆栈溢出检测二、任务管理方式三、二值信号量(任务同步)四、计数信号量五、互斥信号量六、队列 调试方式 问题:传感器数据获取问题,有的DHT11能获取到,有的获取不到 两种方式:调优先级或者进临界区&#xf…

Docker原理及实例

目录 一 Docker简介及部署方法 1.1 Docker简介 1.1.1 什么是docker? 1.1.2 docker在企业中的应用场景 1.1.3 docker与虚拟化的对比 1.1.4 docker的优势 2 部署docker 2.1 容器工作方法 2.2 部署第一个容器 2.2.1 配置软件仓库 2.2.2 安装docker-ce并启动服…

排序算法见解(2)

1.快速排序 1.1基本思想: 快速排序是通过一趟排序将待排序的数据分割成独立的两部分,其中一部分的所有数据都比另一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以…

如何构建Java SpringBoot文献检索系统:高效管理学术资料,掌握数据库核心技术

✍✍计算机编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java实战 |…

搭上“跨境电商”便车,中国家居在海外越杀越勇

文|新熔财经 作者|楷楷 从去年至今,已有多家跨境家居企业谋求IPO,包括近期启动IPO辅导的圣奥科技;今年4月正式向港交所递交招股说明书的傲基科技;去年11月启动A股IPO的跨境家居品牌杰西亚,还有…

vulhub xxe靶机通关教程

首先我们进行端口扫描 扫出来端口之后去尝试得出地址为183 发现robots.txt文件 由此我们就得到了两个目录 我们先进入xxe目录&#xff0c;并开始登录抓包 并进入重放器在xml里面构造语句 <!DOCTYPE r [ <!ELEMENT r ANY > <!ENTITY admin SYSTEM "php://filt…

【在Linux世界中追寻伟大的One Piece】传输层协议UDP

目录 1 -> 传输层 2 -> 端口号 2.1 -> 端口号范围划分 2.2 -> 知名端口号 3 -> UDP协议 3.1 -> UDP协议端格式 3.2 -> UDP的特点 3.2.1 -> 面向数据报 3.3 -> UDP的缓冲区 3.4 -> UDP使用注意事项 3.5 -> 基于UDP的应用层协议 1 -…

Vue实战:轻松掌握输入框@功能实现技巧

成员列表 创建 实现成员列表的方式比较简单&#xff0c;其实就是一个列表&#xff0c;一个简单的v-for循环就可以搞定&#xff0c;点击时将当前选择的成员项回调给父组件。 新增一个AtPop.vue文件&#xff1a; <template> <div class"at-pop-index">…

DIFFUSION 系列笔记| Latent Diffusion Model、Stable Diffusion基础概念、数学原理、代码分析、案例展示

目录 Latent Diffusion Model LDM 主要思想 LDM使用示例 LDM Pipeline LDM 中的 UNET 准备时间步 time steps 预处理阶段 pre-process 下采样过程 down sampling 中间处理 mid processing 上采样 upsampling 后处理 post-process LDM Super Resolution Pipeline…

海康视觉二次开发学习笔记8-从回调函数获取结果

回调函数使用方法 通常在方案或流程执行完成后,就可以获取到流程运行的结果.运行一次流程后,我们就可以获取到流程的渲染结果以及流程的数据结果.那么使用通讯或硬件进行外部触发时,如何获取结果呢? 这种时候就要用到回调函数. 1. 注释原获取结果代码 2. 注册回调函数 在构…

【文献及模型、制图分享】数字技术力量下传统村落景观修复演进的特征与机制研究——以岳阳市张谷英村为例(GIS空间分析、点云提取)

文献介绍 景观修复作为弘扬中华优秀传统文化的重要方式&#xff0c;如何在乡村数字化新时代背景下&#xff0c;把握传统村落景观修复的数字赋能&#xff0c;已成为推动中华优秀传统文化创造性转化与创新性发展亟需解决的科学问题。运用深度访谈、GIS空间分析、点云数据提取等方…

html+css+js网页设计 婚庆类型12个页面

htmlcssjs网页设计 婚庆类型12个页面 网页作品代码简单&#xff0c;可使用任意HTML编辑软件&#xff08;如&#xff1a;Dreamweaver、HBuilder、Vscode 、Sublime 、Webstorm、Text 、Notepad 等任意html编辑软件进行运行及修改编辑等操作&#xff09;。 获取源码 1&#xf…

FreeRTOS 低功耗模式

正如STM32的裸机编程一样&#xff0c;FreeRTOS通用提供了低功耗模式。 前面说的很明白&#xff0c;FreeRTOS的低功耗模式实际上还是基于STM32的低功耗模式指令进入睡眠模式来实现的&#xff0c;并且只要中断来临&#xff0c;就会退出低功耗&#xff0c;FreeRTOS的系统时钟是最底…

猫头虎分享:Python库 Statsmodels 的简介、安装、用法详解入门教程

猫头虎分享&#xff1a;Python库 Statsmodels 的简介、安装、用法详解入门教程 &#x1f42f; 引言 &#x1f3af; 今天猫头虎带您 深入探讨 Statsmodels 这个在数据分析和统计建模领域非常重要的Python库。最近有粉丝在评论区问道&#xff1a;“猫哥&#xff0c;如何使用 St…

USB端点

USB端点 各端点使用循环冗余校验&#xff08;CRC&#xff09;来检测传输中发生的错误。 根据 USB 规范&#xff0c;设备端点是 USB 设备中一个独特的可寻址部分&#xff0c;它作为主机和设备间通信流的信息源或库。 USB 枚举和配置一节介绍了设备向默认地址做出响应的步骤。 枚…

能进大厂的自动化测试面试题

前言 每次到金九银十都避免不了要聊一聊面试题了&#xff0c;如今九月已经是中下旬了&#xff0c;马上就要到十月份了&#xff0c;还在投简历找工作的小伙伴可以看看我这几天发的文章&#xff0c;最近发的都是面试题&#xff0c;如果需要笔者教一下大家怎么写简历的小伙伴可以…

光伏高压并网升压箱变

在当今能源领域的变革浪潮中&#xff0c;光伏能源以其清洁、可再生的显著优势&#xff0c;成为了备受瞩目的焦点。而光伏高压并网升压箱变&#xff0c;则是实现光伏电能顺利接入高压电网的核心设备。 光伏高压并网升压箱变宛如光伏能源系统中的一位“大力士”&#xff0c;承担着…

一张图浏览CSS Functions

点我CSS Functions思维导图下载 函数文章链接示例属性函数var attr env介绍访问文章示例地址