二十一、数值操作(二)

news2024/10/7 10:22:14

目录

七、数值查找

1、Excel实现

2、Python实现

八、区间切分

1、Excel实现

2、Python实现

九、插入新的行或列

1、Excel实现

2、Python实现

十、行列互换

1、Excel实现

 2、Python实现

十一、索引重塑

十二、长宽表转换

1、宽表转换为长表

(1)stack()方法实现

(2)melt()方法实现

2、长表转换为宽表

3、apply()与applymap()函数


七、数值查找

数值查找就是查看数据表中的数据是否包含某个值或者某些值。

1、Excel实现

在Excel中我们要想查看数据表中是否包含某个值可以直接利用查找功能。首先要把待查找区域选中,可以选择一列或者多列,如果不选,则默认在全表中查询,然后单击编辑菜单栏的查找和选择按钮,在下拉菜单中选择查找选项。.

可以使用快捷键Ctrl+F打开查找和替换对话框,在查找内容框输入要查找的内容即可,可以选择查找全部,这样就会把所有查找到的内容显示出来,也可以选择查找下一个,这样会把查找结果一个一个显示出来。

2、Python实现

在Python中查看数据表中是否包含某个值用到的是isin()方法,而且可以同时查找多个值,只需要在isin()方法后的括号中指明即可。

可以将某列数据取出来,然后在这一列上调用isin()方法,看这一列是否包含某个/些值,如果包含则返回True,否则返回False。

八、区间切分

区间切分就是将一系列数值分成若干份,比如现在有10个人,你要根据这10个人的年龄将他们分为三组,这个切分过程就称为区间切分。

1、Excel实现

在Excel中实现区间切分我们借助的是if函数,具体公式如下:

=if(D2<4,"<4",IF(D2<7,"4-6",">=7"))

2、Python实现

在Python中对区间切分咯用的是cut()方法,cut()方法有一个参数bins用来指明切分区间。

cut()方法的切分结果是几个左开右闭的区间,(0,3]就表示大于0小于等于3,(3,6]表示大于3小于等于6,(6,10]表示大于6小于等于10 。

与cut()方法类似的还有qcut()方法,qcunt()方法不需要实现指明切分区间,只需要指明切分个数,即你要把待切分数据切成几份,然后它就会根据待切分数据的情况,将数据切分成实现指定的份数,依据的原则就是每个组里面的数据个数尽可能相等。

在数据分布比较均匀的情况下,cut()方法得到的区间基本一致,当数据分布不均匀,即方差比较大时,两者得到的区间的偏差就会比较大。

九、插入新的行或列

在特定的位置插入行或者列也是比较常用的操作。具体的插入操作有两个关键要素,一个是在哪插入,另一个是插入什么。

1、Excel实现

在Excel中要插入行或列首先要确定在哪一行或哪一列前面插入,然后选中这一列或这一行单击鼠标右键,在弹出的下拉菜单中选择插入选项即可。

2、Python实现

在Python中没有专门用来插入行的方法,可以把待插入的行当作一个新的表,然后将两个表在纵轴方向上进行拼接。

在Python中插入一个新的列用到的方法是insert(),在insert方法后的括号中指明要插入的位置、插入后新列的列名,以及要插入的数据。

还可以直接以索引的方式进行列的插入,直接让新的一列等于某列值即可。

十、行列互换

所谓的行列互换(又称转置)就是将行数据转换到列方向上,将列数据转换到行方向上。

1、Excel实现

在Excel中行列互换(转置)需要先把待转置的内容复制,然后粘贴在新的区域中,粘贴选项选择转置即可。转置选项如下图所示:

 2、Python实现

在Python中,我们直接在源数据表的基础上调用.T方法即可得到数据表转置后的结果。对转置后的结果再次转置就会回到原来的结果。

十一、索引重塑

所谓的索引重塑就是将原来的索引进行重新构造。典型的DataFrame结构的表如下表所示:

C1C2C3
S1123
S2456

上面这种表是典型的DataFrame结构,它用一个行索引和一个列索引来确定一个唯一值,比如S1-C1唯一值为1,S2-C3唯一值为6。这种通过两个位置确定一个唯一值的方法不仅可以用上述这表表格型结构表示,而且可以用一种树形结构表示。

 

树形结构其实就是在维持表格型行索引不变的前提下,把列索引也变成行索引,其实就是给表格型数据建立层次化索引。

我们把数据从表格型数据转换到树形数据的过程叫重塑,这种操作在Excel中没有,在Python用到的方法是stack()。

与stack()方法相对应的方法是unstack()方法,stack()方法是将表格型数据转化为树形数据,而unstack()方法是将树形数据转为表格型数据。

十二、长宽表转换

长宽表转换就是将比较长(很多行)的表转换为比较宽(很多列)的表,或者将比较宽的表转化为比较长的表。

下表是一个宽表(有很多列)

companynamesale2013sale2014sale2015sale2016
apple苹果5000505050505050
google        谷歌3500380038003800

facebook       

脸书2300290029002900

我们要把这个宽表转化为如下表所示的长表。

companynameyearsale
apple苹果sale20135000
google        谷歌sale20133500

facebook       

脸书sale20132300
apple苹果sale20145050
google        谷歌sale20143800

facebook       

脸书sale20142900
apple苹果sale20155050
google        谷歌sale20153800

facebook       

脸书sale20152900
apple苹果sale20165050
google        谷歌sale20163800

facebook       

脸书sale20162900

上面这种由很多列转换为很多行的过程,就是宽表转换为长表的过程,这种转换过程是有前提的,那就是需要有公共列。

1、宽表转换为长表

宽表转化为长表,在Excel中一般都用复制粘贴实现,我们主要看看在Python中如何实现。Python中要实现这种转换有两种方法,一种是stack()方法,另一种是melt()方法。

(1)stack()方法实现

stack()在将表格型数据转为树形数据时,是在保持行索引不变的前提下,将列索引也变成行索引。

这里将宽表转化为长表首先要在保持company和name不变的前提下,将sale2013、sale2014、sale2015、sale2016也变成行索引。所以,需要先将company和name先设置成索引,然后调用stack()方法,将列索引也转换成行索引,最后利用reset_index()方法进行索引重置。

df.set_index(["company","name"])

df.set_index(["company","name"]).stack()

df.set_index(["company","name"]).stack().reset_index()

(2)melt()方法实现

用melt()方法实现上述功能,代码如下所示。

df.melt(id_vars = ["company","name"],
           var_name = "year",
           value_name = "sale")

melt中的id_vars参数用于指明宽表转换到长表时保持不变的列,var_name参数表示原来的列索引转化为“行索引”以后对应的列名,value_name表示新索引对应的值的列名。

注意,这里的“行索引”是有双引号的,它并非实际行索引,只是类似实际的行索引。

2、长表转换为宽表

将长表转换为宽表就是宽表转化为长表的逆过程。常用的方法就是数据透视表。

df.pivot_table(index = ["company","name"],columns = "year",values = "sale")

上面的实现过程是把company和name设置成行索引,year设置成列索引,sale为值。

3、apply()与applymap()函数

我们在Python基础知识部分讲过一个Python的高级特性map()函数,map()函数是对一个序列中的所有元素执行相同的函数操作。

在dataframe中与map()函数类似的函数有两个,一个是apply()函数,另一个是applymap()函数。函数apply()和applymap()都需要与匿名函数Iambda结合使用。

apply()函数主要用于对dataframe中的某一column或row()中的元素执行相同的函数操作。

applymap()函数用于对dataframe中的每一个元素执行相同的函数操作。 

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

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

相关文章

如何提升软件质量及开发效率

如何提升软件质量及开发效率 文章目录 如何提升软件质量及开发效率1、简介2、软件质量模型3、需求分析4、软件设计5、项目管理1.1 版本管理1.2 项目结构规范 6、编码规范7、代码评审8、软件调试9、软件测试 1、简介 保证软件质量&#xff0c;是一个贯穿整个软件生存周期的重要…

Java利用朴素贝叶斯分类算法实现信息分类

目录 贝叶斯分类算法 代码实例 数据集data.txt代码实现输出结果使用场景 贝叶斯分类算法 贝叶斯分类算法是统计学的一种分类方法&#xff0c;它是一类利用概率统计知识进行分类的算法。在许多场合&#xff0c;朴素贝叶斯(Nave Bayes&#xff0c;NB)分类算法可以与决策树和神…

项目管理考核积分指标库大全V3.0

近期热文&#xff1a;大咖来袭&#xff01;中国PMO&PM大会议程隆重发布&#xff0c;三城联动 北京、上海、深圳三地同步进行&#xff0c;两天近70位项目管理大咖专家齐聚一堂&#xff0c;交流分享。各路高手汇聚一处&#xff0c;互相学习。精心的圆桌设计&#xff0c;穿插…

uniapp打包白屏问题

【bug】&#xff1a;浏览器运行正常&#xff0c;模拟器、真机运行只有tab栏显示&#xff0c;或者完全白屏。打包也是白屏。 【控制台报错信息】&#xff1a; 注意&#xff1a;app不支持dom操作 【解决办法】&#xff1a;在main.js里修改 render函数是vue通过js渲染dom结构的…

前端vue入门(纯代码)20

总以为自己还很年轻&#xff0c;却忽略了岁月的脚步&#xff0c;当身边的一道道风景变成了回忆&#xff0c;才忽然发现&#xff0c;风景依然在&#xff0c;而人已非少年。&#xff01;&#xff01;&#xff01; 【22.求和案例--纯Vue版本】 太简单了&#xff0c;直接上代码案…

Squid代理服务器

Squid代理服务器 一、Squid相关知识 1.功能 Squid 主要提供缓存加速、应用层过滤控制的功能。 2.工作机制 1&#xff0e;代替客户机向网站请求数据&#xff0c;从而可以隐藏用户的真实IP地址。 2&#xff0e;将获得的网页数据&#xff08;静态 Web 元素&#xff09;保存到…

js:使用typed.js实现打字动画效果

效果预览 目录 实现方式一: 原生JS实现实现方式二&#xff1a;typed.js实现 实现方式一: 原生JS实现 <div id"code"> 我感到未尝经验的无聊&#xff0c;是自此以后的事。我当初是不知其所以然的&#xff1b; 后来想&#xff0c;凡有一人的主张&#xff0c;得…

高薪offer收割面试题之缓存穿透,击穿,雪崩

缓存穿透&#xff0c;缓存击穿&#xff0c;缓存雪崩是我们在应用缓存时最常碰到的问题&#xff0c;也是面试的热点考点。究竟什么是缓存穿透&#xff0c;缓存击穿&#xff0c;缓存雪崩&#xff0c;如何解决&#xff0c;本文会进行详细的剖析。 缓存穿透 什么是缓存穿透&#…

CUDA和CUDNN安装和版本验证

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、安装二、关键指标1.驱动版本和CUDA版本对应1.最适配版本2.最低支持版本 2.CUDA版本和CUDNN版本对应 三、验证有效性1.驱动验证2.CUDA验证1.nvcc2.sample 3.…

E. Masha-forgetful(dp)

题目&#xff1a;Problem - E - Codeforceshttps://codeforces.com/contest/1624/problem/E 题意&#xff1a; 玛莎认识了一个新朋友&#xff0c;并知道了他的电话号码 s 。电话号码是一个长度为m的字符串&#xff0c;它由从 0-9 组成 。 电话号码可能以 0 开头。 玛莎已经…

花30分钟,用Jenkins部署码云上的SpringBoot项目

本文介绍 jenkins 如何从 gitee 上 clone 项目&#xff0c;然后使用 maven 打包并后台启动。 1.Jenkins 介绍 Jenkins 是一个开源软件项目&#xff0c;是基于 Java 开发的一种持续集成工具&#xff0c;用于监控持续重复的工作&#xff0c;旨在提供一个开放易用的软件平台&…

7月4号作业

实现底层实现三盏灯的控制 head.h #ifndef __HEAD_H__ #define __HEAD_H__#define PHY_LED1_MODER 0X50006000 #define PHY_LED1_ODR 0X50006014#define PHY_RCC 0X50000A28#define PHY_LED2_MODER 0X50007000 #define PHY_LED2_ODR 0X50007014#endif led.c #in…

2023年,第九届WWEC教育者大会隆重回归

2023年第九届WWEC教育者大会将于8月20日至22日在上海举行。本次大会也是时隔两年之后再度重启&#xff0c;是疫情恢复常态化后教育界的首次重要大会。 WWEC教育者大会由宋辉先生发起&#xff0c;嘉家有品主办&#xff0c;君学书院、雁传书文化传媒和有鹏来教育科技联合主办。本…

jdbcTemplate的queryForList报错:Incorrect column count: expected 1, actual 2

jdbcTemplate的queryForList方法有多种传参形式&#xff0c;我们常用的就是这种传class类&#xff0c;参数返回数据&#xff0c;结果报expected 1, actual 2&#xff0c;意思是预期只返回一列&#xff0c;但却返回了2列。这是不合理的&#xff0c;因为返回参数都是List&#xf…

PCL 法向量估计源码学习

一、思路&#xff1a; 二、源码 #ifndef PCL_FEATURES_IMPL_NORMAL_3D_H_ #define PCL_FEATURES_IMPL_NORMAL_3D_H_#include <pcl/features/normal_3d.h>/// template <typename PointInT, typename PointOutT> void pcl::NormalEstimation<PointInT, PointOutT…

【Matlab】智能优化算法_海洋捕食者算法MPA

【Matlab】智能优化算法_海洋捕食者算法MPA 1.背景介绍1.1 布朗运动1.2 莱维运动 2.数学模型2.1 MPA配方2.2 MPA优化场景2.3 涡流形成与FAD效应 3.文件结构4.伪代码5.详细代码及注释5.1 func_plot.m5.2 Get_Functions_details.m5.3 initialization.m5.4 levy.m5.5 main.m5.6 MP…

【H5】文件上传(ajax)

系列文章 【移动设备】iData 50P 技术规格 本文链接&#xff1a;https://blog.csdn.net/youcheng_ge/article/details/130604517 【H5】avalon前端数据双向绑定 本文链接&#xff1a;https://blog.csdn.net/youcheng_ge/article/details/131067187 【H5】安卓自动更新方案&a…

Python_装饰器

目录 简单装饰器 语法糖 *args、**kwargs处理有参数的函数 带参数的装饰器 类装饰器 不带参数的类装饰器 带参数的类装饰器 装饰器执行顺序 functools.wraps 讲 Python 装饰器前&#xff0c;我想先举个例子&#xff0c;虽有点污&#xff0c;但跟装饰器这个话题很贴切。…

select……for update 到底加的什么锁

先上结论 主键索引唯一索引普通索引普通字段等值查询行锁行锁行锁间隙锁&#xff0c;锁表范围查询间隙锁&#xff0c;锁范围行间隙锁&#xff0c;锁范围行间隙锁&#xff0c;锁范围行间隙锁&#xff0c;锁表 数据表准备 DROP TABLE IF EXISTS t_user_test; CREATE TABLE t_u…

【Web3】MetaMask钱包配置

目录 主网更换测试网 私钥如何登录钱包 主网更换测试网 私钥如何登录钱包