详解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

标签:Pandas,缺失值
0
投稿

猜你喜欢

  • 基于OpenCV(python)的实现文本分割之垂直投影法

    2023-11-17 08:45:39
  • mac 安装python网络请求包requests方法

    2023-08-05 09:01:41
  • 在Python中使用HTML模版的教程

    2023-01-17 23:30:38
  • Python深度学习实战PyQt5布局管理项目示例详解

    2023-03-11 08:47:37
  • pytorch中的model.eval()和BN层的使用

    2023-09-21 17:06:10
  • 从绘画语言的发展,看视觉设计风格

    2008-08-03 17:11:00
  • PHP5.6读写excel表格文件操作示例

    2023-11-21 15:03:21
  • python+excel接口自动化获取token并作为请求参数进行传参操作

    2022-05-19 04:10:18
  • python ansible服务及剧本编写

    2022-11-18 02:51:20
  • 解析PyCharm集成GitLab代码仓的问题

    2022-06-08 07:36:15
  • 网站开发防止中文乱码需要了解的codepage的重要性小结

    2011-03-03 11:24:00
  • 在https页面中使用iframe出现安全警告的解决方法

    2009-03-04 12:01:00
  • SQL Server小知识:Processor Affinity

    2008-11-24 20:50:00
  • 对Python 除法负数取商的取整方式详解

    2023-10-02 20:21:41
  • Python+matplotlib绘制不同大小和颜色散点图实例

    2021-12-02 08:50:32
  • ASP编程中的常见问题

    2007-09-20 13:32:00
  • Python3使用xml.dom.minidom和xml.etree模块儿解析xml文件封装函数的方法

    2023-12-19 22:42:41
  • MySQL分区的功能和限制讲解

    2010-10-14 14:03:00
  • Python unittest基本使用方法代码实例

    2023-06-28 06:42:56
  • 交互设计实用指南系列(8)—深广度平衡

    2010-02-01 12:59:00
  • asp之家 网络编程 m.aspxhome.com