Pandas处理缺失的数据
处理丢失数据
有两种丢失数据:
- 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处理缺失的数据的更多相关文章
- 利用Python进行数据分析-Pandas(第五部分-数据规整:聚合、合并和重塑)
在许多应用中,数据可能分散在许多文件或数据库中,存储的形式也不利于分析.本部分关注可以聚合.合并.重塑数据的方法. 1.层次化索引 层次化索引(hierarchical indexing)是panda ...
- 实操 | 内存占用减少高达90%,还不用升级硬件?没错,这篇文章教你妙用Pandas轻松处理大规模数据
注:Pandas(Python Data Analysis Library) 是基于 NumPy 的一种工具,该工具是为了解决数据分析任务而创建的.此外,Pandas 纳入了大量库和一些标准的数据模型 ...
- 小白学 Python 数据分析(8):Pandas (七)数据预处理
人生苦短,我用 Python 前文传送门: 小白学 Python 数据分析(1):数据分析基础 小白学 Python 数据分析(2):Pandas (一)概述 小白学 Python 数据分析(3):P ...
- 小白学 Python 数据分析(12):Pandas (十一)数据透视表(pivot_table)
人生苦短,我用 Python 前文传送门: 小白学 Python 数据分析(1):数据分析基础 小白学 Python 数据分析(2):Pandas (一)概述 小白学 Python 数据分析(3):P ...
- pandas(七)数据规整化:清理、转换、合并、重塑之合并数据集
pandas对象中的数据可以通过一些内置的方式进行合并: pandas.merge 可根据一个或多个键将不同的DataFrame中的行连接起来. pandas.concat可以沿着一条轴将多个对象堆叠 ...
- 使用Pandas将多个数据表合一
使用Pandas将多个数据表合一 将多张数据表合为一张表,便于统计分析,进行这一操作的前提为这多张数据表互相之间有关联信息,或者有相同的列. import pandas as pd unames = ...
- Python3 Pandas的DataFrame格式数据写入excle文件、json、html、剪贴板、数据库
Python3 Pandas的DataFrame格式数据写入excle文件.json.html.剪贴板.数据库 一.DataFrame格式数据 Pandas是Python下一个开源数据分析的库,它提供 ...
- @1-5使用pandas保存豆瓣短评数据
使用pandas保存豆瓣短评数据 Python爬虫(入门+进阶) DC学院 本节课程的内容是介绍open函数和pandas两种保存已爬取的数据的方法,并通过实际例子使用pandas保存数据. ...
- 使用pandas把mysql的数据导入MongoDB。
使用pandas把mysql的数据导入MongoDB. 首先说下我的需求,我需要把mysql的70万条数据导入到mongodb并去重, 同时在第二列加入一个url字段,字段的值和第三列的值一样,代码如 ...
随机推荐
- Java开发桌面程序学习(10)——css样式表使用以及Button使用
css 样式表使用 javafx中的css样式,与html的有些不一样,javafx中的css,是以-fx-background-color这种样子的,具体可以参考文档JavaFx css官方文档 简 ...
- ASE Alpha Sprint - backend scrum 9
本次scrum于2019.11.14再sky garden进行,持续15分钟. 参与人: Xin Kang, Zhikai Chen, Jia Ning, Hao Wang 请假: Lihao Ran ...
- python中的垃圾回收机制及原理
序言: 来一起看看: 不同于C/C++,像Python这样的语言是不需要程序员写代码来管理内存的,它的GC(Garbage Collection)机制 实现了自动内存管理.GC做的事情就是解放程序员的 ...
- JS 控制子页面刷新父页面
iframe里面的子页,用parent.location.href = parent.location.reload();如果是window.open 打开就用opener.location.relo ...
- Linux性能优化从入门到实战:10 内存篇:如何利用Buffer和Cache优化程序的运行效率?
缓存命中率 缓存命中率,是指直接通过缓存获取数据的请求次数,占所有数据请求次数的百分比,可以衡量缓存使用的好坏.命中率越高,表示使用缓存带来的收益越高,应用程序的性能也就越好. 实际上,缓存是 ...
- Linux架构之Nginx 配置文件
第42章 nginx相关配置文件 1.Nginx主配置文件 路径 类型 作用 /etc/nginx/nginx.conf 配置文件 nginx主配置文件 /etc/nginx/conf.d/def ...
- 【leetcode】307. Range Sum Query - Mutable
题目如下: 解题思路:就三个字-线段树.这个题目是线段树用法最经典的场景. 代码如下: class NumArray(object): def __init__(self, nums): " ...
- React / Vue 跨端渲染原理与实现探讨
跨端渲染是渲染层并不局限在浏览器 DOM 和移动端的原生 UI 控件,连静态文件乃至虚拟现实等环境,都可以是你的渲染层.这并不只是个美好的愿景,在今天,除了 React 社区到 .docx / .pd ...
- proxyTable-后端代理-跨域请求数据
config >>> index.js 配置 proxyTable: { '/api': { target:'https://api.jisuapi.com', // 你请求的第三 ...
- NoSQL数据库的分布式算法详解
系统的可扩展性是推动NoSQL运动发展的的主要理由,包含了分布式系统协调,故障转移,资源管理和许多其他特性.这么讲使得NoSQL听起来像是一个大筐,什么都能塞进去.尽管NoSQL运动并没有给分布式数据 ...