处理丢失数据

有两种丢失数据:

  • None
  • np.nan(NaN)
import numpy as np
import pandas
from pandas import DataFrame

1. None

None是Python自带的,其类型为python object。因此,None不能参与到任何计算中。

# 查看None的数据类型
type(None)
NoneType

2. np.nan(NaN)

np.nan是浮点类型,能参与到计算中。但计算的结果总是NaN。

# 查看np.nan的数据类型
type(np.nan)
float

3. pandas中的None与NaN

创建DataFrame

df = DataFrame(data=np.random.randint(0,100,size=(10,8)))
df

.dataframe tbody tr th:only-of-type {
vertical-align: middle;
}

.dataframe tbody tr th {
vertical-align: top;
} .dataframe thead th {
text-align: right;
}
0 1 2 3 4 5 6 7
0 22 13 16 41 81 7 25 86
1 23 3 57 20 4 58 69 40
2 35 81 80 63 53 43 20 35
3 40 14 48 89 34 4 64 46
4 36 14 62 30 80 99 88 59
5 9 98 83 81 69 46 39 7
6 55 88 81 75 35 44 27 64
7 14 74 24 3 54 99 75 53
8 24 22 41 68 1 87 46 19
9 82 10 36 99 85 36 12 83
# 将某些数组元素赋值为nan
df.iloc[1,4] = None
df.iloc[3,6] = None
df.iloc[7,7] = None
df.iloc[3,1] = None
df.iloc[5,5] = np.nan
df

.dataframe tbody tr th:only-of-type {
vertical-align: middle;
}

.dataframe tbody tr th {
vertical-align: top;
} .dataframe thead th {
text-align: right;
}
0 1 2 3 4 5 6 7
0 22 13.0 16 41 81.0 7.0 25.0 86.0
1 23 3.0 57 20 NaN 58.0 69.0 40.0
2 35 81.0 80 63 53.0 43.0 20.0 35.0
3 40 NaN 48 89 34.0 4.0 NaN 46.0
4 36 14.0 62 30 80.0 99.0 88.0 59.0
5 9 98.0 83 81 69.0 NaN 39.0 7.0
6 55 88.0 81 75 35.0 44.0 27.0 64.0
7 14 74.0 24 3 54.0 99.0 75.0 NaN
8 24 22.0 41 68 1.0 87.0 46.0 19.0
9 82 10.0 36 99 85.0 36.0 12.0 83.0

pandas处理空值操作

判断函数

  • isnull()
  • notnull()
df.isnull()   # 为空,显示True
df.notnull() # 不为空,显示True

.dataframe tbody tr th:only-of-type {
vertical-align: middle;
}

.dataframe tbody tr th {
vertical-align: top;
} .dataframe thead th {
text-align: right;
}
0 1 2 3 4 5 6 7
0 True True True True True True True True
1 True True True True False True True True
2 True True True True True True True True
3 True False True True True True False True
4 True True True True True True True True
5 True True True True True False True True
6 True True True True True True True True
7 True True True True True True True False
8 True True True True True True True True
9 True True True True True True True True
  • df.notnull/ isnull().any()/ all()
df.isnull()

.dataframe tbody tr th:only-of-type {
vertical-align: middle;
}

.dataframe tbody tr th {
vertical-align: top;
} .dataframe thead th {
text-align: right;
}
0 1 2 3 4 5 6 7
0 False False False False False False False False
1 False False False False True False False False
2 False False False False False False False False
3 False True False False False False True False
4 False False False False False False False False
5 False False False False False True False False
6 False False False False False False False False
7 False False False False False False False True
8 False False False False False False False False
9 False False False False False False False False
df.isnull().any(axis=1)  # any表示or,axis=1表示行,即一行中存在True,即为True
0    False
1 True
2 False
3 True
4 False
5 True
6 False
7 True
8 False
9 False
dtype: bool
df.notnull().all(axis=1) # all表示and,axis=1表示行,即一行中全为True,才为True
0     True
1 False
2 True
3 False
4 True
5 False
6 True
7 False
8 True
9 True
dtype: bool
df.loc[~df.isnull().any(axis=1)] # ~表示取反

往往这样搭配:

  • isnull()->any
  • notnull()->all

df.dropna() 可以选择过滤的是行还是列(默认为行):axis中0表示行,1表示的列

df.dropna(axis=0)

.dataframe tbody tr th:only-of-type {
vertical-align: middle;
}

.dataframe tbody tr th {
vertical-align: top;
} .dataframe thead th {
text-align: right;
}
0 1 2 3 4 5 6 7
0 22 13.0 16 41 81.0 7.0 25.0 86.0
2 35 81.0 80 63 53.0 43.0 20.0 35.0
4 36 14.0 62 30 80.0 99.0 88.0 59.0
6 55 88.0 81 75 35.0 44.0 27.0 64.0
8 24 22.0 41 68 1.0 87.0 46.0 19.0
9 82 10.0 36 99 85.0 36.0 12.0 83.0

填充函数 Series/DataFrame

  • fillna():value和method参数
df

.dataframe tbody tr th:only-of-type {
vertical-align: middle;
}

.dataframe tbody tr th {
vertical-align: top;
} .dataframe thead th {
text-align: right;
}
0 1 2 3 4 5 6 7
0 22 13.0 16 41 81.0 7.0 25.0 86.0
1 23 3.0 57 20 NaN 58.0 69.0 40.0
2 35 81.0 80 63 53.0 43.0 20.0 35.0
3 40 NaN 48 89 34.0 4.0 NaN 46.0
4 36 14.0 62 30 80.0 99.0 88.0 59.0
5 9 98.0 83 81 69.0 NaN 39.0 7.0
6 55 88.0 81 75 35.0 44.0 27.0 64.0
7 14 74.0 24 3 54.0 99.0 75.0 NaN
8 24 22.0 41 68 1.0 87.0 46.0 19.0
9 82 10.0 36 99 85.0 36.0 12.0 83.0
# bfill表示后, ffill表示前
# axis表示方向: 0:上下, 1:左右
df_test = df.fillna(method='bfill',axis=1).fillna(method='ffill',axis=1)
df_test

.dataframe tbody tr th:only-of-type {
vertical-align: middle;
}

.dataframe tbody tr th {
vertical-align: top;
} .dataframe thead th {
text-align: right;
}
0 1 2 3 4 5 6 7
0 22.0 13.0 16.0 41.0 81.0 7.0 25.0 86.0
1 23.0 3.0 57.0 20.0 58.0 58.0 69.0 40.0
2 35.0 81.0 80.0 63.0 53.0 43.0 20.0 35.0
3 40.0 48.0 48.0 89.0 34.0 4.0 46.0 46.0
4 36.0 14.0 62.0 30.0 80.0 99.0 88.0 59.0
5 9.0 98.0 83.0 81.0 69.0 39.0 39.0 7.0
6 55.0 88.0 81.0 75.0 35.0 44.0 27.0 64.0
7 14.0 74.0 24.0 3.0 54.0 99.0 75.0 75.0
8 24.0 22.0 41.0 68.0 1.0 87.0 46.0 19.0
9 82.0 10.0 36.0 99.0 85.0 36.0 12.0 83.0
# 测试df_test中的哪些列中还有空值
df_test.isnull().any(axis=0)
0    False
1 False
2 False
3 False
4 False
5 False
6 False
7 False
dtype: bool

Pandas处理缺失的数据的更多相关文章

  1. 利用Python进行数据分析-Pandas(第五部分-数据规整:聚合、合并和重塑)

    在许多应用中,数据可能分散在许多文件或数据库中,存储的形式也不利于分析.本部分关注可以聚合.合并.重塑数据的方法. 1.层次化索引 层次化索引(hierarchical indexing)是panda ...

  2. 实操 | 内存占用减少高达90%,还不用升级硬件?没错,这篇文章教你妙用Pandas轻松处理大规模数据

    注:Pandas(Python Data Analysis Library) 是基于 NumPy 的一种工具,该工具是为了解决数据分析任务而创建的.此外,Pandas 纳入了大量库和一些标准的数据模型 ...

  3. 小白学 Python 数据分析(8):Pandas (七)数据预处理

    人生苦短,我用 Python 前文传送门: 小白学 Python 数据分析(1):数据分析基础 小白学 Python 数据分析(2):Pandas (一)概述 小白学 Python 数据分析(3):P ...

  4. 小白学 Python 数据分析(12):Pandas (十一)数据透视表(pivot_table)

    人生苦短,我用 Python 前文传送门: 小白学 Python 数据分析(1):数据分析基础 小白学 Python 数据分析(2):Pandas (一)概述 小白学 Python 数据分析(3):P ...

  5. pandas(七)数据规整化:清理、转换、合并、重塑之合并数据集

    pandas对象中的数据可以通过一些内置的方式进行合并: pandas.merge 可根据一个或多个键将不同的DataFrame中的行连接起来. pandas.concat可以沿着一条轴将多个对象堆叠 ...

  6. 使用Pandas将多个数据表合一

    使用Pandas将多个数据表合一 将多张数据表合为一张表,便于统计分析,进行这一操作的前提为这多张数据表互相之间有关联信息,或者有相同的列. import pandas as pd unames = ...

  7. Python3 Pandas的DataFrame格式数据写入excle文件、json、html、剪贴板、数据库

    Python3 Pandas的DataFrame格式数据写入excle文件.json.html.剪贴板.数据库 一.DataFrame格式数据 Pandas是Python下一个开源数据分析的库,它提供 ...

  8. @1-5使用pandas保存豆瓣短评数据

    使用pandas保存豆瓣短评数据 Python爬虫(入门+进阶)     DC学院 本节课程的内容是介绍open函数和pandas两种保存已爬取的数据的方法,并通过实际例子使用pandas保存数据. ...

  9. 使用pandas把mysql的数据导入MongoDB。

    使用pandas把mysql的数据导入MongoDB. 首先说下我的需求,我需要把mysql的70万条数据导入到mongodb并去重, 同时在第二列加入一个url字段,字段的值和第三列的值一样,代码如 ...

随机推荐

  1. JVM 运行时数据区域划分

    目录 前言 什么是JVM JRE/JDK/JVM是什么关系 JVM执行程序的过程 JVM的生命周期 JVM垃圾回收 JVM的内存区域划分 一.运行时数据区包括哪几部分? 二.运行时数据区的每部分到底存 ...

  2. git 和码云的上传文件代码操作

    Git与Github的连接与使用 一 安装git软件 1.git介绍 ''' git是一款免费.开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目.​ 分布式相比于集中式的最大区别在于开发 ...

  3. vue动态生成表单

    vue动态生成表单 一.下拉框 <!DOCTYPE html> <html> <head> <meta charset="utf-8" / ...

  4. 【编码的法则】谨慎的使用static

    概述 static主要有三种使用方式,其中前两种在C/C++中使用,第三种只在C++语言中使用 1)静态局部变量 2)静态全局变量/函数 3)静态成员变量/函数 3 静态成员变量/函数 3.1静态成员 ...

  5. 一个奇怪的问题:Last_Errno: 1264 Error 'Out of range value for column 0x322E36343030

    场景环境: 1. 主从都是:Server version: 5.7.16-log MySQL Community Server (GPL) 2.操作系统:CentOS release 6.7 (Fin ...

  6. bzoj4128 Matrix 矩阵 BSGS

    题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=4128 题解 想了十分钟没有任何思路. 然后一眼瞥见一句话"数据保证在 \(p\) 内 ...

  7. 未来HTML5的发展前景如何?黑客专家是这样回答的

    如果你想进军IT行业,如果你准备好掌握一项新技术,那么就选择HTML5.近日,我们采访了国内知名网络黑客安全专家郭盛华,帮助您了解当今最重要的技术.在本篇文章中,黑客安全专家郭盛华回答了有关HTML5 ...

  8. mysql中各种连接的区别

    现在有如下两个表: A表. B表. 一:使用笛卡尔连接 SELECT * FROM a,b 结果: 二:内连接 SELECT * FROM a INNER JOIN b on a.a_id=b.par ...

  9. 本页面用来演示如何通过JS SDK,创建完整的QQ登录流程,并调用openapi接口

    QQ登录将用户信息存储在cookie中,命名为__qc__k ,请不要占用 __qc__k : 1) :: 在页面顶部引入JS SDK库: 将“js?”后面的appid参数(示例代码中的:100229 ...

  10. C++ Standard Template Library (STL) 高级容器

    更多 STL 数据结构请阅读 NOIp 数据结构专题总结(STL structure 章节) std::map Definition: template < class Key, // map: ...