详解Pandas 处理缺失值指令大全
作者:fitness suite 发布时间:2022-06-20 07:15:23
前言
运用pandas 库对所得到的数据进行数据清洗,复习一下相关的知识。
1 数据清洗
1.1 处理缺失数据
对于数值型数据,分为缺失值(NAN)和非缺失值,对于缺失值的检测,可以通过Python中pandas库的Series类对象的isnull方法进行检测。
import pandas as pd
import numpy as np
string_data = pd.Series(['Benzema', 'Messi', np.nan, 'Ronaldo'])
string_data.isnull()
对于缺失值,除了np.nan来表示,还可以用None来表示缺失值
string_data = None
1.2 滤除掉缺失数据
1.2.1 对于Series
使用dropna方法将NAN的数据过滤掉。
from numpy import nan as NA
import pandas as pd
data = pd.Series([1,NA,4.5,NA,5])
data.dropna()
另一种方法是使用布尔值索引对NAN数据进行过滤:
data[data.notnull()]
1.2.2 对于DataFrame
dropna()方法对于DataFrame的数据来说,会将含有NAN数据的行全部扔掉。
data = pd.DataFrame([[1., 6.5, 3.], [1., NA, NA],
[NA, NA, NA], [NA, 6.5, 3.]])
data
data.dropna()
如果只想删除掉那些行中全部为NAN数据的DataFrame,通过设置dropna()方法中的参数how即可。
data.dropna(how = 'all')
如果操作对象变为列,代码如下:
data[4] = NA
data
data.dropna(axis=1, how = 'all')
如果想留下其中的一部分数据,则可以设置thresh参数:
df = pd.DataFrame(np.random.randn(7, 3))
df.iloc[:4, 1] = NA
df.iloc[:2, 2] = NA
df
df.dropna(thresh = 2)
thresh = n,参数n相当于保留至少含有n个非NA的行
1.3 填充缺失数据
fillna(n),n替换掉NA
df = pd.DataFrame(np.random.randn(7, 3))
df.fillna(0)
如果填充格式是字典,fillna({0:n1,1:n2}),将列0的NA填充为 n1,将列1的NA填充为 n2。
df.fillna({{1 : 0.2,2 : 0.3}})
直接填充df的NA值,直接改变df,不需要命名新的变量。
df.fillna(0, inplace = True)
2 数据转换
2.1 移除重复数据
data = pd.DataFrame({'k1': ['one', 'two'] * 3 + ['two'],
'k2': [1, 1, 2, 3, 3, 4, 4]})
data.duplicated()
返回的是每一行的重复结果,不重复是False,重复是True。
如果要去除重复的行,代码如下:
data.drop_duplicates()
如果操作对象为列,在duplicated方法中指定参数即可。
data['k3'] = range(7)
data.duplicated(['k1'])
返回的是 k1 列中重复的元素。
对于drop_duplicates()方法来说,去除掉的是重复数据的后者。比如说序号为0,1的数据重复,方法删除掉index = 1的行。如果想要删除前者,只需要指定参数 last即可:
data.drop_duplicates(['k1'], keep = 'last')
2.2 与映射相结合
map函数的使用方法
list(map(lambda x : 2 * x , range(10)))
2.3 替换
使用的是replace 方法,replace有两个参数,前者是被替换的数,后者是替换的数,参数格式可以是列表,也可以是字典
data = pd.Series([1., -999., 2., -999., -1000., 3.])
data.replace(-999.0, np.nan) #替换单个值
data.replace([-999.0, -1000.0], np.nan) #用一个值替换多个值
data.replace([-999.0, -1000.0],[np.nan, 0]) # 用不同值替换不同值
data.replace({-999.0 : 0, -1000.0 : np.nan}) # 格式为字典
2.4 创建数据的修改版
rename方法可以创建数据的修改版,而不必在原数据上进行修改。
data.rename(index=str.title, columns=str.upper)
还可以使用字典的格式,对index, columns 进行改变。
data.rename(index = {'OHIO': 'INDIANA'}, columns = {'three': 'peekaboo'})
这样的重命名并不对原数据进行修改,如果想要直接改变data, 如上,参数inplace = True即可。
data.rename(index = {'OHIO': 'INDIANA'}, columns = {'three': 'peekaboo'}, inplace = True)
data
这样就改变了data。
2.5 计算指标\哑变量
用于机器学习中,对定类数据的转化,用于将df中的object对象转化为One-hot编码,消除了数字间的比较大小问题。
df = pd.DataFrame({'key': ['b', 'b', 'a', 'c', 'a', 'b'],
'data1': range(6)})
pd.get_dummies(df['key']) # 分解了key 列,分开了三个属性
如果想在分开的属性前面加上前缀的话,设定prefix 参数即可实现该功能,可以将其与原始数据合并在一起。
dummies = pd.get_dummies(df['key'], prefix = 'key')
df_with_dummies = df['data1'].join(dummies)
df_with_dummies
来源:https://blog.csdn.net/weixin_43226196/article/details/107587352


猜你喜欢
- 6月初,Python之父Guido van Rossum在今天的PyCon US大会上作了名为“Python Language”的演讲。近日
- 通常我们会在一些javascript的书籍上看到,使用Javascript保留字作为标识符(变量名、函数名、循环标记等)时,会引起程序报错!
- 一个很不错的效果,用键盘的箭头键控制一个漂亮的箭头!也许能给你启发,做出一款有趣的小游戏呢!运行代码框<html xmlns:v=&q
- 关于Python的文件遍历,大概有两种方法,一种是较为便利的os.walk(),还有一种是利用os.listdir()递归遍历。方法一:利用
- 惭愧啊,今天写了个查找子串的Python程序被BS了…如果让你写一个程序检查字符串s2中是不是包含有s1。也许你会很直观的写下下面的代码:#
- [sql] --1.将每个老师的工资更新为原来的工资+奖金 --定义两个变量,用来存储ttid与reward declare @tid in
- 本文实例讲述了Python实现的数据结构与算法之队列。分享给大家供大家参考。具体分析如下:一、概述队列(Queue)是一种先进先出(FIFO
- 1 predict()方法当使用predict()方法进行预测时,返回值是数值,表示样本属于每一个类别的概率,我们可以使用numpy.arg
- 内容摘要:最近逛论坛经常看到有朋友问上传文件怎么重命名,怎么以当前日期来重命名上传文件。现在我就介绍一下重命名的方法,希望对大家有所帮助。本
- 有时候我们需要判断两个字符串内容是否相等,判断内容相等,我们用‘==',但是有时候发现print(str1)和print(str2)
- 设计图是这样:可是做出来是这样:出现了一行连着。。要知道工作上总有些ui没事做喜欢指指点点。后来翻查官方手册发现了这个参数:附上网址:htt
- 使用原生SQL语句进行对数据库操作,可完成数据库表的建立和删除,及数据表内容的增删改查操作等。其可操作性很强,如可以直接使用“show da
- 很多朋友使用Dreamweaver一段时间后,开始热衷于寻找各式各样的插件,追求各种各样的特效,而对于Dreamweaver中的基本功能反而
- 有一台windows服务器上跑着mysql的一些应用,现在需要将mysql的数据每天备份,并通过ftp上传到指定的存储服务器上要是在linu
- 思路复原魔方困难问题的分解:1、用合适的数据结构表示出三阶魔方的六个面以及每一面的颜色2、每一次不同旋转操作的实现3、复原时如何判断当前魔方
- 介绍PaddleOCR 是一个基于百度飞桨的OCR工具库,包含总模型仅8.6M的超轻量级中文OCR,单模型支持中英文数字组合识别、
- 前言最近不小心把硬盘给格式化了,由于当时的文件没有备份,所以一下所有的文件都没有了,于是只能采取补救措施,用文件恢复软件恢复了一部分的数据出
- 方法1: X:\oracle\ora81\bin\wrap iname=XXX oname=XXX 方法2:9i在win2000下使用wra
- HTML在线编辑器相信大家见得多了,有些流行的在线编辑器具有很丰富的功能。但美中不足的是,现有的HTML在线编辑器设置字号大小通常只限于1-
- 冷备份是数据库文件的物理备份,通常在数据库通过一个shutdown normal或shutdown immediate 命令正常关闭后进行。