在数据处理相关工作中,读取的数据中常常会有缺失值的情况,为顺利进行后续的操作,需要首先对缺失值进行处理,处理的方式一般为删除填充,Python中提供了专门的工具包,可以方便地进行实现。读取操作可以由pandas模块实现,通常直接读一个excel或csv文件,创建为DataFrame对象,模块中的dropna方法和fillna方法可以实现对缺失值的删除和填充。

  现有下列数据文件,文件命名为testdata.xlsx,对它进行缺失值处理。

读取数据:

import pandas as pd
data = pd.read_excel("./testdata.xlsx")

  易知数据中第4行第1列、第6行第2列、第2行第4列、第3行第4列是缺失的。

1.删除

  对于缺失的地方,可以删除所在的行或所在的列。

(1).删除含空值的行,在dropna()中加参数axis=0.

data.dropna(axis=0,inplace=True)

(2).删除含空值的列,在dropna()中加参数axis=1.

data.dropna(axis=1,inplace=True)

2.填充

  对于缺失的地方,也可以填入一个值使之不再空缺。通常填0、指定字符、中位数、均值、相邻值或拟合值。

(1).填充0

data.fillna(0,inplace=True)

(2) 填充指定字符

data.fillna('无',inplace=True)

(3) 填充整体的均值、中位数

  均值(保留一位小数):

t = np.round(np.mean(data),1)
data.fillna(t,inplace=True)

  中位数:

dnr = np.array(data)
dnr = dnr[~np.isnan(dnr)] # 非nan元素
t = np.median(dnr) # 整体中位数
data.fillna(t,inplace=True)

(4)填充所在列的均值、中位数

  均值:

data.fillna(data.mean(),inplace=True)

  中位数:

  (奇数个元素取中间的,偶数个元素取中间两个的均值)

data.fillna(data.median(),inplace=True)

(5)填充相邻值

  a. 填充列的前相邻值

data.fillna(method='ffill',axis=0,inplace=True)

  或

data.ffill(axis=0,inplace=True)

  b. 填充列的后相邻值

data.fillna(method='bfill',axis=0,inplace=True)

  或

data.bfill(axis=0,inplace=True)

  c. 填充行的前相邻值

data.fillna(method='ffill',axis=1,inplace=True)

  或

data.ffill(axis=1,inplace=True)

  d. 填充行的后相邻值

data.fillna(method='bfill',axis=1,inplace=True)

  或

data.bfill(axis=1,inplace=True)

(6)按列填充指定内容

  有时不同列空缺数据的填充需求是不一致的,此时可以按列进行填充。

a.填充某一列

  对第4列空缺处填充列均值

mean_c4 = data['TitleC4'].mean()
data['TitleC4'].fillna(mean_c4, inplace=True)

  对第4列空缺处填充前相邻值

data['TitleC4'].fillna(method='ffill',axis=0,inplace=True)

  或

data['TitleC4'].ffill(axis=0,inplace=True)

  b,用字典指定填充多列

fill_values = {'TitleC1':1111,'TitleC2':2222,'TitleC4':4444,'TitleC5':5555}
data.fillna(value=fill_values, inplace=True)

(7)填充拟合值(插值算法)

  对于元素仅为数字的数据,缺失部分也可用插值算法填充,如线性插值、二次插值、三次插值、样条插值等。

data.interpolate(method='slinear',inplace=True)  #线性插值
data.interpolate(method='quadratic',inplace=True) #二次插值
data.interpolate(method='cubic',inplace=True) #三次插值

参考:

1.https://www.python100.com/html/L1PK07477FUQ.html

2.https://www.python100.com/html/120094.html

3.https://www.python100.com/html/75400.html

4.https://blog.csdn.net/weixin_46277779/article/details/126224097

Python缺失值处理实现的更多相关文章

  1. python 缺失值处理(Imputation)

    一.缺失值的处理方法 由于各种各样的原因,真实世界中的许多数据集都包含缺失数据,这些数据经常被编码成空格.nans或者是其他的占位符.但是这样的数据集并不能被scikit - learn算法兼容,因为 ...

  2. python 缺失值的处理

  3. python 缺失值的向前填充

    method='bfill'可实现按下方值填充

  4. python 缺失值处理

  5. R vs Python:构建data.frame、读取csv与统计描述

    一.Python 数据框就是典型的关系型数据库的数据存储形式,每一行是一条记录,每一列是一个属性,最终构成表格的形式,这是数据科学家必须熟悉的最典型的数据结构. 1.构建数据框 import pand ...

  6. Python做数据预处理

    在拿到一份数据准备做挖掘建模之前,首先需要进行初步的数据探索性分析(你愿意花十分钟系统了解数据分析方法吗?),对数据探索性分析之后要先进行一系列的数据预处理步骤.因为拿到的原始数据存在不完整.不一致. ...

  7. python 连接 oracle 统计指定表格所有字段的缺失值数

      python连接oracle -- qlalchemy import cx_Oracle as co import pandas as pd from sqlalchemy import crea ...

  8. Python Pandas找到缺失值的位置

    python pandas判断缺失值一般采用 isnull(),然而生成的却是所有数据的true/false矩阵,对于庞大的数据dataframe,很难一眼看出来哪个数据缺失,一共有多少个缺失数据,缺 ...

  9. python 特征缺失值填充

    python数据预处理之缺失值简单处理:https://blog.csdn.net/Amy_mm/article/details/79799629 该博客总结比较详细,感谢博主. 我们在进行模型训练时 ...

  10. [Python] Pandas 对数据进行查找、替换、筛选、排序、重复值和缺失值处理

    目录 1. 数据文件 2. 读数据 3. 查找数据 4. 替换数据 4.1 一对一替换 4.2 多对一替换 4.3 多对多替换 5. 插入数据 6. 删除数据 6.1 删除列 6.2 删除行 7. 处 ...

随机推荐

  1. CentOS7下安装Elasticsearch-7.3.2和Elasticsearch-head

    下载Elasticsearch-7.3.2-linux-x86_64.tar.gzElasticsearch下载地址:https://www.elastic.co/cn/downloads/elast ...

  2. 【Oracle】力扣简单的练习题

    Oracle力扣简单的练习题 请你编写一个 SQL 查询来交换所有的 'f' 和 'm' /* Write your PL/SQL query statement below */ /******** ...

  3. 力扣1662(java&python)-检查两个字符串数组是否相等(简单)

    题目: 给你两个字符串数组 word1 和 word2 .如果两个数组表示的字符串相同,返回 true :否则,返回 false . 数组表示的字符串 是由数组中的所有元素 按顺序 连接形成的字符串. ...

  4. 璀璨智行:V2X车路协同智慧交通

    ​V2X车用无线通信技术是指车对外界的信息交换,作为未来智能交通运输系统的关键技术,璀璨智行潜心研究V2X技术,致力于V2X车路协同的落地,在智慧交通领域做出了卓越的贡献. 创业机会点 魏军博表示:& ...

  5. 实时 OLAP, 从 0 到 1

    简介: BTC.com 团队在实时 OLAP 方面的技术演进过程及生产优化实践. 作者|高正炎 本文主要介绍 BTC.com 团队在实时 OLAP 方面的技术演进过程及生产优化实践,内容如下: 业务背 ...

  6. AI让边缘更智能 边缘让AI无处不在

    ​简介: 城市管理和城市服务逐步走向智能化,智慧化.到2019底,全国100%的副省级城市,95%以上的地级市,以及50%以上的县级市均提出建设新型智慧城市,并已经有32个主要城市成立了专门的大数据管 ...

  7. [Go] golang 替换组件包 更新 go.mod, go.sum 的方式

    当我们不再使用某个包,或者包名变更时,是如何保证 go.mod 更新的. 只要代码中没有地方 import 使用到某个包了,我们运行: $ go mod tidy module 管理器会帮我们自动清理 ...

  8. 通过 KoP 将 Kafka 应用迁移到 Pulsar

    通过 KoP 将 Kafka 应用迁移到 Pulsar 版权声明:原文出自 https://github.com/streamnative/kop ,由 Redisant 进行整理和翻译 目录 通过 ...

  9. 微软开源 MS-DOS「GitHub 热点速览」

    上周又是被「大模型」霸榜的一周,各种 AI.LLM.ChatGPT.Sora.RAG 的开源项目在 GitHub 上"争相斗艳".这不 Meta 刚开源 Llama 3 没几天,苹 ...

  10. ES_CCS/R(一):建立集群之间的安全互信

    为了能够实现 CCR(跨集群复制 Cross-cluster replication) 及 CCS(跨集群搜索 Cross-cluster search ),我们必须让集群之间能够互信,这样才可以建立 ...