pandas.DataFrame新增列、dropna()方法-丢弃含空值的行、列;inf的处理技巧

在Dataframe中新添加一列

直接指明列名,然后赋值就可

import pandas as pd
 
data = pd.DataFrame(columns=['a','b'], data=[[1,2],[3,4]])
data
>>> data
   a  b
0  1  2
1  3  4

添加一列’c‘,赋值为空白值。打印出来

data['c'] = ''
data
>>> data
   a  b c
0  1  2
1  3  4

添加一列‘d',赋值为一个list

data['d'] = [5,6]
data
>>> data
   a  b c  d
0  1  2    5
1  3  4    6

在指定的位置添加新的一列,可以使用insert( )方法。

分别在原来的dataframe的开始和最后添加两列 ’c' 和 ‘d'。参数链接

data.insert(2,'c','')
# 2 :插入的列的位置
# ‘c':待插入列的列名
# ‘ ’:插入的值,这里插入的是空值
 
data
Out[56]: 
   a  b c
0  1  2  
1  3  4  
data.insert(0,'d',[1,2])
 
data
Out[71]: 
   d  a  b c
0  1  1  2  
1  2  3  4  

 pandas.DataFrame 进行新增列操作的五种方法:insert、reindex、loc、obj[‘col’]、concat

新建

import pandas as pd
import numpy as np

data = pd.DataFrame(np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]), columns=['a', 'b', 'c'])
data

	 	a 	b 	c
	0 	1 	2 	3
	1 	4 	5 	6
	2 	7 	8 	9

insert方法

第一个参数指定插入列的位置,

第二个参数指定插入列的列名,

第三个参数指定插入列的数据

data.insert(data.shape[1], 'd', 0)
data

		a 	b 	c 	d
	0 	1 	2 	3 	0
	1 	4 	5 	6 	0
	2 	7 	8 	9 	0

obj[‘col’] = value 方法

对 DataFrame 直接赋值

data['d'] = 0
data

	 	a 	b 	c 	d
	0 	1 	2 	3 	0
	1 	4 	5 	6 	0
	2 	7 	8 	9 	0

reindex 方法

使用 reindex 函数,还可以指定缺失值填充的值,不过缺点是要把原有的列名和新列名都加上

data = data.reindex(columns=['a', 'b', 'c', 'd'], fill_value=0)
data

		a 	b 	c 	d
	0 	1 	2 	3 	0
	1 	4 	5 	6 	0
	2 	7 	8 	9 	0

concat 方法

concat 方法是用来拼接数据的,

在这里是利用拼接过程中新建一个包含新列名的空DataFrame,

好处是可以同时新增多个列名。

data = pd.concat([data, pd.DataFrame(columns=['d'])], sort=False)
data

		a 		b 		c 		d
	0 	1.0 	2.0 	3.0 	NaN
	1 	4.0 	5.0 	6.0 	NaN
	2 	7.0 	8.0 	9.0 	NaN

loc 方法

loc 方法和 iloc 方法一样,可以索引 DataFrame 数据,

一般是通过 data.loc[index, col] = value 来进行赋值,

这里利用:来索引全部行再进行赋值。

data.loc[:, 'd'] = 0
data

	 	a 	b 	c 	d
	0 	1 	2 	3 	0
	1 	4 	5 	6 	0
	2 	7 	8 	9 	0

Python-pandas的dropna()方法-丢弃含空值的行、列

0.摘要

dropna()方法,能够找到DataFrame类型数据的空值(缺失值),

将空值所在的行/列删除后,将新的DataFrame作为返回值返回。

1.函数详解

函数形式:

​dropna(axis=0, how='any', thresh=None, subset=None, inplace=False)

参数:

axis:轴。0或'index',表示按行删除;1或'columns',表示按列删除。

how:筛选方式。‘any’,表示该行/列只要有一个以上的空值,就删除该行/列;

‘all’,表示该行/列全部都为空值,就删除该行/列。

thresh:非空元素最低数量。int型,默认为None。

如果该行/列中,非空元素数量小于这个值,就删除该行/列。

subset:子集。列表,元素为行或者列的索引。

如果axis=0或者‘index’,subset中元素为列的索引;

如果axis=1或者‘column’,subset中元素为行的索引。

由subset限制的子区域,是判断是否删除该行/列的条件判断区域。

inplace:是否原地替换。布尔值,默认为False。

如果为True,则在原DataFrame上进行操作,返回值为None。

dataframe中有关inf的处理技巧

numpy中inf的相关文档icon-default.png?t=N7T8https://numpy.org/devdocs/reference/constants.html#numpy.Inf 

什么是inf? IEEE 754浮点表示(正)无穷大。 

为什么会产生? 

>>> np.NINF

-inf

>>> np.inf

inf

>>> np.log(0)

-inf

>>> np.array([1,2])/0 #碰到的最多的情况

array([ inf,  inf])

产生inf有什么好处? 

目前没看到有什么好处,只是单纯用inf表示无穷大,方便理解和表示。 

产生inf有什么坏处? 

对用户而言,对inf需要特殊处理,加大了工作量。

为什么需要特殊处理?

因为许多机器学习算法库并不支持对inf的处理。 

怎么处理? 

常见的处理方法:  不处理替换,怎么获取到inf的所在位置并进行填补? 

'''
isinf:显示哪些元素为正或负无穷大

isposinf:显示哪些元素为正无穷大

isneginf:显示哪些元素为负无穷大

isnan:显示哪些元素不是数字

isfinite:显示哪些元素是有限的(不是非数字,正无穷大和负无穷大中的一个)

'''
​
>>> np.isinf(np.inf) #其他函数同理使用,isinf使用最多。

True

>>> np.isinf(np.array([1,np.inf]))

array([False,  True], dtype=bool)

>>>np.isinf(pd.DataFrame(np.array([1,np.inf])))

       0

0  False

1   True

​
>>>s1 = pd.Series([1,2,3,np.inf])

>>>s1

0    1.0

1    2.0

2    3.0

3    NaN

dtype: float64

#对inf填补 999 

>>>s1[np.isinf(s1)] = 999

>>>s1

0    1.0

1    2.0

2    3.0

3  999.0

dtype: float64

#对inf填补np.nan (较为常用)

>>>s1[np.isinf(s1)] = np.nan

>>>s1

0    1.0

1    2.0

2    3.0

3    NaN

dtype: float64

Pandas 处理DataFrame中的inf值

1. 将某1列(series格式)中的 inf 替换为数值

import numpy as np
 
df['Col'][np.isinf(df['Col'])] = -1

2. 将某1列(series格式)中的 inf 替换为NA值

import numpy as np
 
df['Col'][np.isinf(df['Col'])] = np.nan

3. 将整个DataFrame中的 inf 替换为数值(空值同理)

import numpy as np
 
df.replace(np.inf, -1) #替换正inf为-1
 
#替换正负inf为NA,加inplace参数 
df.replace([np.inf, -np.inf], np.nan, inplace=True)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

汽车碰撞与刮伤的实用维修技术,汽车的车身修复与涂装修补教学

一、教程描述 本套汽车维修技术教程,大小7.44G,共有60个文件。 二、教程目录 01-汽车车身修复教程01-安全规则(共3课时) 02-汽车车身修复教程02-汽车结构(共3课时) 03-汽车车身修复教程03-汽车修复所使…

Ambari动态给YARN分配计算节点

1.前言 YARN可用的计算节点数量并不总是等于 Hadoop集群节点数量,可以根据业务需求分配 YARN计算节点数量。 这里首先介绍一些前置知识: YARN中 ResourceManager 和 NodeManager是两个核心组件,其中 ResourceManager负责集群资源的统一管理…

【java数据结构】模拟二叉树的链式结构之孩子表示法,掌握背后的实现逻辑

📢编程环境:idea 📢树结构,以及叶子,结点,度等一些名词是什么意思,本篇不再赘述。 【java数据结构】模拟二叉树的链式结构之孩子表示法,掌握背后的实现逻辑 1. 认识二叉树1.1 二叉树…

社区店引流推广秘籍:让你的店铺人气爆棚

作为一名开鲜奶吧5年的创业者,我深知在如今竞争激烈的市场环境下,开一家成功的社区店并非易事。 从选址到装修,从商品选择到服务提升,每一个环节都至关重要。但其中,引流推广无疑是让店铺人气爆棚、脱颖而出的关键所在…

力扣hot100题解(python版33-35题)

33、排序链表 给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表 。 示例 1: 输入:head [4,2,1,3] 输出:[1,2,3,4]示例 2: 输入:head [-1,5,3,4,0] 输出:[-1,0,3,4,5]示例 3&a…

紫光展锐T618_4G安卓核心板方案定制

紫光展锐T618核心板是一款采用纯国产化方案的高性能产品,搭载了开放的智能Android操作系统,并集成了4G网络,支持2.5G5G双频WIFI、蓝牙近距离无线传输技术以及GNSS无线定位技术。 展锐T618核心板应用旗舰级 DynamlQ架构 12nm 制程工艺&#x…

从0开始的ios自动化测试

最近由于工作内容调整,需要开始弄ios自动化了。网上信息有点杂乱,这边我就按我的实际情况,顺便记录下来,看是否能帮到有需要的人。 环境准备 安装tidevice pip3 install -U “tidevice[openssl]”它的作用是,帮你绕…

LeetCode 刷题 [C++] 第108题.将有序数组转换为二叉搜索树

题目描述 给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵 高度平衡 二叉搜索树。 高度平衡 二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不超过 1 」的二叉树。 题目分析 由于二叉搜索树的中序遍历是升序的&…

STM32(16)使用串口向电脑发送数据

发送字节 发送数组 发送字符和字符串 字符: 字符串: 字符串在电脑中以字符数组的形式存储

Android APK包反编译为java文件教程

方法 流程: test.apk -> smali文件 -> dex文件 -> jar文件 ->java 文件 将APK包解压为 smail文件 下载 apktool工具 apktool.jar 将 test.apk 和 apktool.jar放同一目录下,并执行以下命令 java -jar apktool.jar d -f xxx.apk -o xxx(解…

Linux-信号3_sigaction、volatile与SIGCHLD

文章目录 前言一、sigaction__sighandler_t sa_handler;__sigset_t sa_mask; 二、volatile关键字三、SIGCHLD方法一方法二 前言 本章内容主要对之前的内容做一些补充。 一、sigaction #include <signal.h> int sigaction(int signum, const struct sigaction *act,struc…

“比特币暴拉冲破6.5万美元”!超罕见指标揭示牛市信号,18万美元目标能否实现?

比特币&#xff08;BTC&#xff09;周末持续在6.2万美元反复震荡之后&#xff0c;今&#xff08;4&#xff09;晨再次强势拉涨&#xff0c;早上8&#xff1a;45左右最高触及64268美元&#xff0c;随后插针盘整&#xff0c;下午5点30分左右突破65500美元&#xff0c;再创今年新高…

tomcat下载安装配置教程

tomcat下载安装配置教程 我是使用tomcat下载安装及配置教程_tomcat安装-CSDN博客 此贴来进行安装配置&#xff0c;原文21年已经有些许不同。 下载tomcat 官网&#xff1a;http://tomcat.apache.org/ 我们老师让安装8.5以上&#xff0c;所以我直接选择版本9 点击9页面之后…

YOLOv5-Openvino和ONNXRuntime推理【CPU】

1 环境&#xff1a; CPU&#xff1a;i5-12500 Python&#xff1a;3.8.18 2 安装Openvino和ONNXRuntime 2.1 Openvino简介 Openvino是由Intel开发的专门用于优化和部署人工智能推理的半开源的工具包&#xff0c;主要用于对深度推理做优化。 Openvino内部集成了Opencv、Tens…

[Redis]——RedisTemplate的两种序列化方式

目录 1. RedisTemplate 2. StringRedisTemplate 方案一&#xff1a; 自定义RedisTemplate修改RedisTemplate的序列化器写入数据时自动序列化 方案二&#xff1a; 使用StringRedisTemplate手动序列化手动反序列化 1. RedisTemplate 编写的java代码 Testvoid contextLoads2…

Redis 淘汰策略、持久化、高可用

淘汰策略 只有 redis 内存空间已满并且往里面写新数据&#xff0c;才会触发淘汰策略。通过 expire / / /pexpire 让 key-value 过期&#xff0c;从而让 redis 清除这个 key-value。value 的数据结构typedef struct redisObject {unsigned tpye:4;unsigned encoding:4;// 判断哪…

10个软件测试的吐槽点!

问题一&#xff1a;测试时间评估 这是一个工作日常经常需要回复的问题&#xff0c;理论上&#xff0c;测试这边要做出较科学合理的回复&#xff0c;那就要将【需求变更】、【开发进度延误】、【bug 修复不稳定】、【复杂业务流程】、【测试环境不稳定】、【上下游服务依赖】、…

LaTeX文档中文显示错误解决办法

LaTeX文档中文显示错误解决办法 如果在LaTeX文档中遇到中文显示错误&#xff0c;通常是因为文档没有正确配置以支持中文。解决这个问题的一个常见方法是使用XeLaTeX引擎编译文档&#xff0c;它天然支持UTF-8编码&#xff0c;可以很好地处理中文。同时&#xff0c;使用ctex宏包…

Vue3中使用ffmpeg.wasm进行转码

一、安装方法 1.1 使用yarn进行安装 yarn add ffmpeg/ffmpeg ffmpeg/core1.2 安装版本 注意安装版本需在0.12.0以上版本才可以使用下面代码&#xff08;目前更新到0.12.10&#xff09;&#xff0c;之前的版本代码使用方法有所不同&#xff08;0.12.10之后的版本也可能会有变动…

链表相加(二)

题目 题目链接 链表相加(二)_牛客题霸_牛客网 题目描述 代码实现 class Solution { public:/*** 代码中的类名、方法名、参数名已经指定&#xff0c;请勿修改&#xff0c;直接返回方法规定的值即可** * param head1 ListNode类 * param head2 ListNode类 * return ListNode…