快醒醒,别睡了!...讲《数据分析pandas库》了—/—<5>

一、

1、修改替换变量值

        本质上是如何直接指定单元格的问题,只要能准确定位单元地址,就能够做到准确替换。

1.1 对应数值的替换

具体用法如下:

replace方法:
df.replace(to_replace = None :将被替换的原数值,所有严格匹配的数值将被用 value 替换,可以str/regex/list/dict/Series/numeric/Nonevalue = None :希望填充的新数值inplace = False
)
import pandas as pddata = {'Name': ['John', 'Alice', 'Bob', 'Emily', 'Tom'],'Age': [25, 30, 35, 40, 45]}
df = pd.DataFrame(data)
df['Age'] = df['Age'].replace({30: 32})

图示代码即创建5行2列的DateFrame,然后将Age列中的30替换成32

map方法:

将年龄为40岁及以上的人替换为老年人,年龄为25岁及以下的人替换为青年人,可以使用下列方法:

age_mapping = {25: '青年人', 30: '青年人', 35: '青年人', 40: '老年人', 45: '老年人'}
df['Age'] = df['Age'].map(age_mapping)

1.2 指定数值范围的替换
方法一:使用正则表达式完成替换
df.replace(regex, newvalue)
方法二:使用行筛选方式完成替换

用行筛选方式得到行索引,然后用 loc 命令定位替换,目前也支持直接筛选出单元格进行数值替换

注意: query 命令的类 SQL 语句可以逬行检索,但不直接支持数值替换
# 使用正则匹配数据
df.开设.replace(regex = '不.+',value = '可以',inplace = True)# 这行代码使用正则表达式匹配'开设'列中以'不'开头的文本,并将其替换为'可以'
#iloc loc
df.支出.iloc[0:3] = 20 #这两行代码分别使用iloc和loc进行索引,将'支出'列中前3行的数据替换为20和30。
df.支出.loc[0:2] =30 
#条件筛选替换
df.体重[df.体重>70] =70 #这行代码使用条件筛选,将'体重'列中大于70的数值替换为70。
df[df.体重==70].体重 = 80  #这行代码使用条件筛选找到'体重'列中值为70的行,并将其'体重'值替换为80。需要注意这种用法在一些情况下可能会引发SettingWithCopyWarning警告,可以使用.loc方法解决:df.loc[df.体重 == 70, '体重'] = 80
#query()的使用
df.query('性别 == "女" and 体重 > 60 ').体重 =50 #这行代码使用query查询语句筛选出满足'性别为女且体重大于60'的行,并将其'体重'值替换为50。同样需要注意引用问题,可以使用.loc方法解决:df.loc[df.query('性别 == "女" and 体重 > 60').体重.index, '体重'] = 50
df.loc[df.query('性别 == "女" and 体重 > 60').体重.index,'体重'] = 50

1.3虚拟变量变换

其使用方法如下:

pd.get_dummies(
data :希望转换的数据框/变量列
prefix = None :哑变量名称前缀
prefix_sep = 11 :前缀和序号之间的连接字符,设定有prefix 或列名时生效
dummy_na = False :是否为 NaNs 专门设定一个哑变量列
columns = None :希望转换的原始列名,如果不设定,则转换所有符合条件的列
drop_first = False :是否返回 k-l 个哑变量,而不是 k 个哑变量)#返回值为数据框
df2.head()#用于显示df2的前几行数据,以便我们了解数据的结构和内容。
pd.get_dummies(df2.类型,prefix = '_' )#这行代码将df2中的'类型'列进行独热编码,生成多个哑变量列,以'_类型'作为前缀,并返回编码后的DataFrame。例如,如果'类型'列有两个取值'A'和'B',则会生成两个哑变量列'_A'和'_B',其中相应的位置为1表示对应的取值存在,为0表示对应的取值不存在。
pd.get_dummies(df2 , columns= [ '类型' ])#直接对整个DataFrame进行操作,将'类型'列独热编码为多个哑变量列。这样可以同时对多个分类变量进行独热编码,生成相应的哑变量列。

2、数值变量分段

其具体用法如下:

pd.cut(X :希望逬行分段的变量列名称bins :具体的分段设定int :被等距等分的段数sequence of scalars :具体的每一个分段起点,必须包括最值,可不等距right = True :每段是否包括右侧界值labels = None :为每个分段提供自定义标签include_lowest = False :第一段是否包括最左侧界值,需要和right 参数配合
)#分段结果是数值类型为 Categories 的序列pd.qcut # 按均值取值范围进行等分
#按均值取值范围进行等分
df['cut1'] = pd.qcut(df.身高,q=5)#表示将df中的列身高按照相等频率来进行分段,分成5个区间。这里的相等频率指的是每个区间中包含的数据个数相同。返回的结果是一个Categorical类型的Series,表示每个数据所属的区间。这个结果会赋值给df['cut1']列。
#自定义分段
df['cut2'] = pd.cut(df.身高,bins=[150,160,170,180,190],right=False)#自定义分段,将"身高"分成4个区间,分别为[150,160),[160,170),[170,180),[180,190),并赋值给新的列"cut2"。right=False表示左闭右开区间,即不包含右边界值。

3、数据分组

df.groupby(by :用于分组的变量名/函数level = None :相应的轴存在多重索引时,指定用于分组的级别as_index = True :在结果中将组标签作为索引sort = True :结果是否按照分组关键字逬行排序
)#生成的是分组索引标记,而不是新的 df
dfg = df.groupby ('开设')
#查看dfg里面的数据
dfg.groups
#查看具体描述
dfg.describe( )
#按多列分组
dfg2 = df.groupby(['性别','开设'])
dfg2.mean ()
  • dfg.groups可以查看dfg中的分组信息,返回一个字典,其中键表示分组的标签,值是该分组对应的行索引。

  • dfg.describe()可以查看每个分组的具体描述统计信息,包括计数、均值、标准差、最小值、25%分位数、中位数、75%分位数、最大值等。

  • 另外一段代码是将DataFrame按照"性别"和"开设"两列进行多级分组,将分组结果赋值给dfg2。

  • dfg2.mean()对分组后的数据求均值,返回每个分组的平均值。结果是一个新的DataFrame,其中列名是原始DataFrame中的数值列名,索引是多级索引,分别包含"性别"和"开设"两列的不同取值组合。

基于拆分进行筛选,筛选出其中一组
dfgroup.get_group()
dfg.get_group ('不必要').mean ()
dfg.get_group ('不必要').std ()
筛选出所需的列,该操作也适用于希望对不同的变量列进行不同操作时
dfg['身高'].max()

4、分组汇总

        在使用 groupby 完成数据分组后,就可以按照需求进行分组信息汇总,此时可以使用其它专门的汇总命令,如 agg 来完成汇总操作。

4.1 使用 agg 函数进行汇总
df.aggregate( )
#名称可以直接简写为 agg
#可以用 axis 指定汇总维度
可以直接使用的汇总函数
1、count():计算数据的非缺失值的数量
2、sum():计算数据的总和
3、mean():计算数据平均值
4、media():计算数据中位数
5、min():计算数据最小值
6、max():计算最大值
7、std():计算标准差
8、var():计算方差
9、skew():用于计算数据的偏度。偏度是描述数据分布形态的统计量,它衡量了数据分布的不对称性。
10、kurt():用于计算数据的峰度。峰度是描述数据分布形态的统计量,它衡量了数据分布的尖锐程度。
11、quantlie():用于计算数据的分位数。分位数是将数据从小到大划分成不同的部分,用于描述数据的位置。
12、cov():用于计算两个变量之间的协方差。协方差是衡量两个变量之间线性相关性的指标,表示变量的变化趋势是否一致。正值表示正相关,负值表示负相关,而值越大表示相关性越强。
13、corr():用于计算两个变量之间的相关系数。相关系数是衡量两个变量之间线性相关性强弱的指标,取值范围在-1到1之间。相关系数为1表示完全正相关,为-1表示完全负相关,为0表示无相关性。
使用方法:
dfg.agg( 'count')
dfg.agg('median')
dfg.agg(['mean', 'median'])
dfg.agg(['mean', 'median'])
#引用非内置函数
import numpy as np
df2.身高.agg (np. sum)
dfg.身高.agg (np. sum)
引用自定义函数:
# 使用自定义函数
def mynum(x:int) ->int:return x.min()
df2.身高.agg (mymean)
dfg.agg(mymean)

函数mynum(x:int) ->int的定义中,参数x是一个整数类型,函数返回值也是一个整数类型。

x.min()表示对参数x取最小值,并将最小值作为函数的返回值

.agg()是DataFrame对象的一个函数,用于对DataFrame中的某一列或多列应用一个或多个聚合函数。

df2表示DataFrame df2 中的名为"身高"的列,mynean是自定义的聚合函数,它会被应用于"身高"这一列,并返回最小值

dfg 是另一个DataFrame对象。相同地,.agg()函数将会对dfg 中的所有列应用mymean这个聚合函数,并返回每列的最小值。

注意: .agg()函数可以接受多个聚合函数作为参数,并返回结果的DataFrame或Series。如果未指定聚合函数,默认情况下会计算每一列的平均值。

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

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

相关文章

【Python机器学习】决策树的构造——信息增益

决策树是最经常使用的数据挖掘算法。它之所以如此流行,一个很重要的原因就是不需要了解机器学习的知识,就能搞明白决策树是如何工作的。 决策树的优缺点: 优点:计算复杂度不高,输出结果易于理解,对中间值的…

linux集群架构--高可用--keepalived(13985字详解)

linux架构高可用 a.概述 高可用:HA HighAvailablity —>Keepalived生成VIP,DNS解析到这个IP地址即可 b.原理 keepalived 是基于VRRP协议实现高可用VRRP虚拟路由器冗余协议,最开始是给网络设备实现高可用,目前keepalive实现v…

项目实战1(30小时精通C++和外挂实战)

项目实战1(30小时精通C和外挂实战) 01-MFC1-图标02-MFC2-按钮、调试、打开网页05-MFC5-checkbox及按钮绑定对象06--文件格式、OD序列号08-暴力破解09-CE10-秒杀僵尸 01-MFC1-图标 这个外挂只针对植物大战僵尸游戏 开发这个外挂,首先要将界面…

GUL图形化界面操作(下部)

目录 ​编辑 前言 Swing 窗口 注意点 新增的组件 进度条组件 开关按钮 多面板和分割面板 多面板 分割面板 ​编辑 选项窗口 对话框带三个选项是,否,取消。 对话框提示输入文本: 前言 修炼中,该篇文章为俺很久前的学习笔记 Swi…

2024钉钉杯A题思路详解

文章目录 一、问题一1.1 问题1.2 模型1.3 目标1.4 思路1.4.1 样本探究1.4.2 数据集特性探究:1.4.3 数据预处理1.4.4 数据趋势可视化1.4.5 ARIMA和LSTM两种预测模型1.4.6 参数调整 二、问题二2.1 问题2.2 模型2.3 目标2.4 思路2.4.1 样本探究2.4.2 数据集特性探究2.4…

Radon(拉当) 变换:超详细讲解(附MATLAB,Python 代码)

Radon 变换 Radon 变换是数学上用于函数或图像的一种积分变换,广泛应用于图像处理领域,尤其是在计算机断层成像 (CT) 中。本文档将详细介绍 Radon 变换的数学含义及其在图像处理中的应用。 数学定义 Radon 变换的数学定义是将二维函数 f ( x , y ) f…

SRTOD

文章目录 AbstractMethodoverviewinnovationsolve Experiment link Abstract 本文主要探讨了在目标检测领域中,如何解决微小物体检测的问题。传统的通用检测器在处理微小物体时性能下降严重,主要是因为难以提取有效的特征。为了解决这个问题&#xff0c…

STL-string(使用和部分模拟实现)

1.string basic_string<char> 是 C 标准库中定义的一个模板类型,用于表示一个字符串。这个模板类接收一个字符类型作为模板参数。typedef basic_string<char> string&#xff1a;string类是basic_string类模板的实例化&#xff0c;它使用 char作为其字符类型。 2.…

狗都能看懂的Actor-Critic强化学习算法讲解

Review Policy Gradient 上面的公式是Policy Gradient的更新函数&#xff0c;这个式子是指在 s t s_t st​时刻采取了 a t a_t at​&#xff0c;计算出对应发生的概率 p θ p_\theta pθ​&#xff0c;然后计算在采取了这个 a t a_t at​之后&#xff0c;所得到的reward有多大。…

优化算法|自适应大邻域搜索算法及MATLAB代码实现

回来填坑了&#xff0c;本篇推文将详细讲解ALNS算法求解VRP问题及MATLAB代码实现。 算法介绍 节约算法构造初始解 function routessaving_init(DistMatrix, Demand, Cap) C_EPS1e-1;Nsize(DistMatrix,1); routescell(numel(2:N),1); for i1:numel(routes) % 每个节点单独一条…

【Django】前端技术HTML常用标签(开发环境vscode)

文章目录 安装两个常用插件HTML常用标签定义文档类型DOCTYPE网页的结构html/head//title/body/div标题h1/h2/h3/h4/h5分割线hr段落 p列表ul/li&#xff0c;ol/li超链接a文本span图片img按钮button表格table&#xff08;table、tr、th、td&#xff09;表单form 安装两个常用插件…

目标检测 YOLOv5-7.0 详细调试自制数据集实战

目标检测 YOLOv5-7.0 详细调试&自制数据集实战 一、项目介绍及环境配置&#xff08;一&#xff09;项目解读&#xff08;二&#xff09;版本选择&#xff08;三&#xff09;环境配置 二、如何利用YOLOv5进行预测&#xff08;detect.py&#xff09;&#xff08;一&#xff0…

Windows 实用小工具:窗口钉子/文件管理 2024/7/27

一: wintop 窗口置顶工具 二:WinDirStat 这是一个免费的、开源的磁盘使用分析工具&#xff0c;适用于Windows系统。它会扫描你的硬盘&#xff0c;列出所有文件和文件夹的大小&#xff0c;并以图形化的方式展示&#xff0c;便于理解。 可以用来检测硬盘文件夹占用从而,酌情处…

JAVA.抽象、接口、内部类

1.抽象 共性&#xff0c;父类定义抽象方法&#xff0c;子类必须重写&#xff0c;或者子类也是抽象类 示例代码 animal package animalabstract;//定义抽象类animal public abstract class animal {String name;int age;//定义抽象方法eat&#xff0c;子类必须重写public abs…

Java给定一些元素随机从中选择一个

文章目录 代码实现java.util.Random类实现随机取数(推荐)java.util.Collections实现(推荐)Java 8 Stream流实现(不推荐) 完整代码参考&#xff08;含测试数据&#xff09; 在Java中&#xff0c;要从给定的数据集合中随机选择一个元素&#xff0c;我们很容易想到可以使用 java.…

【Linux】进程IO|系统调用|open|write|文件描述符fd|封装|理解一切皆文件

目录 ​编辑 前言 系统调用 open 参数flags 参数mode write 追加方式 read close 文件描述符 打开多个文件并观察其文件描述符 C语言文件操作 理解一切皆文件 理解open操作 前言 各类语言的文件操作其实是对系统调用的封装 我们经常说&#xff0c;创建一个文件&a…

力扣第三十七题——解数独

内容介绍 编写一个程序&#xff0c;通过填充空格来解决数独问题。 数独的解法需 遵循如下规则&#xff1a; 数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。&#xff08;请参考示例图&#xff09; 数独…

CVE-2024-39700 (CVSS 9.9):JupyterLab 模板中存在严重漏洞

在广泛使用的 JupyterLab 扩展模板中发现了一个严重漏洞&#xff0c;编号为CVE-2024-39700 。此漏洞可能使攻击者能够在受影响的系统上远程执行代码&#xff0c;从而可能导致大范围入侵和数据泄露。 该漏洞源于在扩展创建过程中选择“测试”选项时自动生成“update-integratio…

VIM基础配置

1. CTAGS配置 下载 上传虚拟机&#xff0c;解压&#xff0c;进入目录 tar -xzvf ctags-5.8.tar.gz cd ctags-5.8/编译 ./configure sudo make sudo make install查看是否安装成功 ctags --version打印如下 2. 使用Vundle 下载 git clone https://github.com/VundleVim/Vund…