数据清洗--DataFrame中的空值处理_daixiangcn的博客-程序员秘密

技术标签: python  数据分析  numpy  大数据和云计算  

数据清洗是一项复杂且繁琐的工作,同时也是整个数据分析过程中最为重要的环节。

在python中空值被显示为NaN。首先,我们要构造一个包含NaN的DataFrame对象。

>>> import numpy as np
>>> import pandas as pd
>>> from pandas import Series,DataFrame
>>> from numpy import nan as NaN
>>> data = DataFrame([[12,'man','13865626962'],[19,'woman',NaN],[17,NaN,NaN],[NaN,NaN,NaN]],columns=['age','sex','phone'])
>>> data
    age    sex        phone
0  12.0    man  13865626962
1  19.0  woman          NaN
2  17.0    NaN          NaN
3   NaN    NaN          NaN

删除NaN

删除NaN所在的行

删除表中全部为NaN的行

>>> data.dropna(axis=0, how='all')
    age    sex        phone
0  12.0    man  13865626962
1  19.0  woman          NaN
2  17.0    NaN          NaN

删除表中任何含有NaN的行

>>> data.dropna(axis=0, how='any')
    age  sex        phone
0  12.0  man  13865626962

删除NaN所在的列

删除表中全部为NaN的列

>>> data.dropna(axis=1, how='all')
    age    sex        phone
0  12.0    man  13865626962
1  19.0  woman          NaN
2  17.0    NaN          NaN
3   NaN    NaN          NaN

删除表中任何含有NaN的列

>>> data.dropna(axis=1, how='any')
Empty DataFrame
Columns: []
Index: [0, 1, 2, 3]

注意:axis 就是”轴,数轴“的意思,对应多维数组里的”维“。此处作者的例子是二维数组,所以,axis的值对应表示:0轴(行),1轴(列)。

填充NaN

如果不想过滤(去除)数据,我们可以选择使用fillna()方法填充NaN,这里,作者使用数值’0’替代NaN,来填充DataFrame。

>>> data.fillna(0)
    age    sex        phone
0  12.0    man  13865626962
1  19.0  woman            0
2  17.0      0            0
3   0.0      0            0

我们还可以通过字典来填充,以实现对不同的列填充不同的值。

>>> data.fillna({
   'sex':233,'phone':666})
    age    sex        phone
0  12.0    man  13865626962
1  19.0  woman          666
2  17.0    233          666
3   NaN    233          666

参考资料:

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/yuanxiang01/article/details/78738812

智能推荐

Java数据结和算法——目录(持续更新)_java算法目录_happytaohaha的博客-程序员秘密

旨在具体将每个基础算法过一遍,用较短和较精炼的话将每种结构特点总结出来,供自己以后方便阅读。配合以代码和题目的练习达到入门的门槛,加油,奥里给!目录综述为啥要学算法:算法开篇——什么是算法,学习算法有什么用数组Task01. 两数之和难度:简单https://leetcode-cn.com/problems/two-sum/Task02. 删除排序数组中的重复项难度:简单h...

July 31st 2017 Week 31st Monday_dflkg8956的博客-程序员秘密

Elegance is the only beauty that never fades.优雅是唯一不会褪色的美。Even the most beautiful apperace would become bones and dusts.Even the most successful company in nowadays would be defeated and rep...

QtCreator屏蔽指定警告__SamZ_的博客-程序员秘密

QtCreator屏蔽指定警告Tools > Options > C++ > Code Model > Clang Code Model > Manage创建自己的配置在Clang中添加要屏蔽的警告, 例如: -Wno-weak-vtables -Wno-old-style-cast确定后选择应用.例子对应警告名称为: unused-variab...

【云原生之Docker实战】使用docker部署webterminal堡垒机_江湖有缘的博客-程序员秘密

【云原生之Docker实战】使用docker部署webterminal堡垒机

merge into用法mysql_Oracle merge into用法及例子_渤海堂主人的博客-程序员秘密

ORACLE 9I中加入了MERGE 语法: MERGE [hint] INTO [schema .] table [t_alias] USING [schema .] { table | viewOracle 9I中加入了MERGE语法:MERGE [hint] INTO [schema .] table [t_alias]USING [schema .] { table | view | su...

tomcat下载文件_tomcat root路径直接下载_红胡子海盗的博客-程序员秘密

tomcat作为http的下载服务器,网上有很多办法但我认为最简单的是:1、直接把文件放在 /var/lib/tomcat6/webapps/ROOT 目录下,2、然后在网址中访问: http://192.168.2.31:8080/download.zip 便可下载。但是,如何你不想放在webapps/ROOT下,就要对想要下载的目录进行配置:1、在tomcat 安装目录\conf\Catali...

随便推点

以太网网口信号测试软件,以太网网口流量测试,吞吐量测试_寒墨夜殇的博客-程序员秘密

以太网网口流量测试,吞吐量测试现在有很多硬件平台理论上支持千兆以太网接口,但实际传输速率远远低于千兆,并且丢包率很高。近我做了一些以太网吞吐量和丢包率方面的优化工作,有一些心得和大家分享一下。二、影响吞吐量和丢包率的因素1. 网卡DMA缓冲区大小这个缓冲区决定tx ring buffer和rx ring buffer的大小,如果ringbuffer太小,那么网卡缓存数据包的能力有限,当接收数据能力...

树莓派怎么实现内网穿透?_x86bit的博客-程序员秘密

树莓派实现Frp内网穿透一、Frp介绍1、基本介绍frp 是一个可用于内网穿透的,高性能的反向代理应用,支持 tcp, udp, http, https 协议。处于内网或防火墙后的机器,实现对外网环境提供 http 或 https 服务。对于 http, https 服务支持基于域名的虚拟主机,支持自定义域名绑定,使多个域名可以共用一个80端口。利用处于内网或防火墙后的机器,对外网环境提供 tcp 和 udp 服务,例如在家里通过 ssh 访问处于公司内网环境内的主机。*

unity中BringWindowToFront和dragWindow的用法_yguoelect的博客-程序员秘密

unity中BringWindowToFront和dragWindow的用法using System.Collections;using System.Collections.Generic;using UnityEngine;public class TestWindowToFront : MonoBehaviour { private Rect windowRect = new Rect (20, 20, 120, 50); private Rect w

CPU的核心与线程数_猫头哥的博客-程序员秘密

笔者最近领用了一台笔记本,x201i。结果一看,CPU是2核心4线程的。所以就没搞明白线程跟核心到底是怎么回事。因此记录下来,与朋友们分享。[img]http://dl.iteye.com/upload/attachment/407379/7721c7cf-44b0-3bae-91da-104c2827ce3a.jpg[/img] 指处理器中有两个核心, 但是利用了超线程技术...

安卓之Android.mk编写_weixin_30951743的博客-程序员秘密

题记:编译环境可以参考https://www.cnblogs.com/ywjfx/p/9960817.html不管是写C还是java,我想所有的程序员都经历过HelloWorld程序的编写,现在让我们开始安卓的framework层的HelloWorld之旅。有了编译环境,只需要两个步骤就可以完成,步骤如下:  1、在external下面创建test目录      mkdir a...

连接Oracle 的工具类(OracleConnUtils)_飞跃南墙的晓M的博客-程序员秘密

本文总结了使用Java代码获取Oracle 连接的工具类使用的jar包是:ojdbc14.jar  将jar包引入对应项目package per.test.oracle;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;imp...

推荐文章

热门文章

相关标签