数据分析学习笔记4-----处理缺失数据

摘要:
处理缺失数据对于数字数据,panda使用浮点值NaN表示缺失数据。我们称之为哨兵价值。有很多方法可以过滤掉缺失的数据。你可以使用熊猫的手工方法。是布尔或布尔索引,但dropna可能更实用。
处理缺失数据

对于数值数据,pandas使用浮点值NaN(Not a Number)表示缺失数据。我们称其为哨兵值。

滤除缺失数据

过滤掉缺失数据的办法有很多种。你可以通过pandas.isnull或布尔索引的手工方法,但dropna可能会更实用一些。对于一个Series,dropna返回一个仅含非空数据和索引值的Series:

In [15]: from numpy import nan as NA

In [16]: data = pd.Series([1, NA, 3.5, NA, 7])

In [17]: data.dropna()
Out[17]: 
0    1.0
2    3.5
4    7.0
dtype: float64

填充缺失数据

通过一个常数调用fillna就会将缺失值替换为那个常数值:

In [27]: df = pd.DataFrame(np.random.randn(7, 3))

In [28]: df.iloc[:4, 1] = NA

In [29]: df.iloc[:2, 2] = NA

In [30]: df
Out[30]: 
          0         1         2
0 -0.204708       NaN       NaN
1 -0.555730       NaN       NaN
2  0.092908       NaN  0.769023
3  1.246435       NaN -1.296221
4  0.274992  0.228913  1.352917
5  0.886429 -2.001637 -0.371843
6  1.669025 -0.438570 -0.539741
In [33]: df.fillna(0)
Out[33]: 
          0         1         2
0 -0.204708  0.000000  0.000000
1 -0.555730  0.000000  0.000000
2  0.092908  0.000000  0.769023
3  1.246435  0.000000 -1.296221
4  0.274992  0.228913  1.352917
5  0.886429 -2.001637 -0.371843
6  1.669025 -0.438570 -0.539741

通过一个字典调用fillna,就可以实现对不同的列填充不同的值

In [34]: df.fillna({1: 0.5, 2: 0})
Out[34]: 
          0         1         2
0 -0.204708  0.500000  0.000000
1 -0.555730  0.500000  0.000000
2  0.092908  0.500000  0.769023
3  1.246435  0.500000 -1.296221
4  0.274992  0.228913  1.352917
5  0.886429 -2.001637 -0.371843
6  1.669025 -0.438570 -0.539741
数据转换

移除重复数据

In [45]: data = pd.DataFrame({'k1': ['one', 'two'] * 3 + ['two'],
   ....:                      'k2': [1, 1, 2, 3, 3, 4, 4]})

In [46]: data
Out[46]: 
    k1  k2
0  one   1
1  two   1
2  one   2
3  two   3
4  one   3
5  two   4
6  two   4

DataFrame的duplicated方法返回一个布尔型Series,表示各行是否是重复行(前面出现过的行)

In [47]: data.duplicated()
Out[47]: 
0    False
1    False
2    False
3    False
4    False
5    False
6     True
dtype: bool

 

免责声明:文章转载自《数据分析学习笔记4-----处理缺失数据》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇OGG投递进程报错无法open文件,无法正常投递网络编程之Socket代码实例下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

mysql插入数据时,去掉重复的数据;

1. 利用insert ignore into语句去重 mysql> INSERT IGNORE INTOperson_tbl (last_name, first_name) -> VALUES( 'J', 'T'); Query OK, 1 row affected (0.00sec) mysql> INSERT IGNO...

WPF 数据验证

  在软件UI界面录入数据时候,为了保证数据的正确、有效、规范性,很多情况下都要验证数据的有效性。比如录入某个人的信息,那么我们就需要对这个人的姓名验证是否为空字符串,年龄是否为有效数字,性别是否为男或女等等。   在WPF开发中,数据的验证和数据绑定结合在一起,实现起来很优雅。我们可以让数据Model(模型)实现IDataErrorInfo接口来实现每个...

ArcGIS 网络分析[1.5] 使用点线数据一起创建网络数据集(如何避免孤立点/点与线的连通性组合结果表)

ArcGIS中最基本的三种矢量数据是什么?点线面。 网络中除了路网之外,还会有地物点。 如上图,我们在建立网络数据集的时候,作为实验,当然可以只是公路网。但是在大型的决策任务中,网络数据集就不只是公路网那么简单了。 在城市与城市之间,有高速公路,国道,高铁,普铁,甚至还有水路。 如此复杂的网络模型是如何连通的呢?他们之间的交点又有什么样的连通方式呢?在...

kettle作业(job)调用转换,设置变量,写日志到数据库中【转】

首先建立转换:从数据库表到日志 表输入的设置:   日志设置:   新建job:     转换选择刚才建好的输出日志转换。变量设置如下: 此ID就是转换中的${ID},执行job,可以看到控制台输出日志结果:   黑色字体部分中只写出了id=1的一条记录。   最后补充,将转换的日志写到数据库中:打开转换>ctrl+t>日志选项...

[读书笔记] Python 数据分析 (十一)经济和金融数据应用

resample: 重采样函数,可以按照时间来提高或者降低采样频率,fill_method可以使用不同的填充方式。 pandas.data_range 的freq参数枚举: Alias Description B business day frequency C custom business day frequency D calend...

mysql分组后获取每个组排序后的第一条数据(整行)

https://blog.csdn.net/persistencegoing/article/details/92764058 All rights reserved.No part of this article may be reproduced or distributed by any means,or stored in a database o...