专栏首页悠扬前奏的博客Pandas-17.缺失数据

Pandas-17.缺失数据

Pandas-17.缺失数据

以如下代码作为例子:

df = pd.DataFrame(np.random.randn(5,3), index=["a", "c", "e", "f", "h"], columns=["A","B","C"])
df = df.reindex(['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'])
print(df)
'''
          A         B         C
a -0.096388 -1.679405 -0.383818
b       NaN       NaN       NaN
c -0.531495 -1.003009  0.815197
d       NaN       NaN       NaN
e -0.588744  1.575706  1.617404
f -0.520550 -1.436264 -1.116896
g       NaN       NaN       NaN
h -0.851603  0.778596 -1.862553
'''

检查缺失值

可以用isnull()notnull()函数检查空或者非空:

print(df["B"].isnull())
print("-----")
print (df["A"].notnull())
'''
a    False
b     True
c    False
d     True
e    False
f    False
g     True
h    False
Name: B, dtype: bool
-----
a     True
b    False
c     True
d    False
e     True
f     True
g    False
h     True
Name: A, dtype: bool
'''

缺失值的默认计算

  • 求和时,NAN将视为0
print(df["B"].sum())
print("-----")
print (df["b":"b"].sum(axis=1))
'''
-1.7643744977503546
-----
b    0.0
dtype: float64
'''

填充/清理缺失数据

  • fillna()函数用非空数据填充NAN值 以如下代码作为例子:
df = pd.DataFrame(np.random.randn(3, 3), index=['a', 'c', 'e'],columns=['one',
'two', 'three'])
df = df.reindex(['a', 'b', 'c'])

用标量值填充NAN

print(df)
print("-----")
print(df.fillna(0))
'''
        one       two     three
a  0.882369  0.392508 -0.410003
b       NaN       NaN       NaN
c  1.012354  0.968128 -0.196215
-----
        one       two     three
a  0.882369  0.392508 -0.410003
b  0.000000  0.000000  0.000000
c  1.012354  0.968128 -0.196215
'''

用前值/后值填充

print(df)
print("-----")
print(df.fillna(method="pad"))
print("-----")
print(df.fillna(method="bfill"))
'''
        one       two     three
a  0.882369  0.392508 -0.410003
b       NaN       NaN       NaN
c  1.012354  0.968128 -0.196215
-----
        one       two     three
a  0.882369  0.392508 -0.410003
b  0.882369  0.392508 -0.410003
c  1.012354  0.968128 -0.196215
-----
        one       two     three
a  0.882369  0.392508 -0.410003
b  1.012354  0.968128 -0.196215
c  1.012354  0.968128 -0.196215
'''

排除缺失值

dropna()函数和axis参数(默认0),排除行/列。

print (df.dropna())
print("---")
print (df.dropna(axis=1))
'''
        one       two     three
a  0.882369  0.392508 -0.410003
c  1.012354  0.968128 -0.196215
---
Empty DataFrame
Columns: []
Index: [a, b, c]
'''

指定替换的值

replace ()方法可以指定替换的值:

df1 = pd.DataFrame({'one':[10,20,30,40,50,2000],
'two':[1000,0,30,40,50,60]})
print (df1)
print (df1.replace({1000:10,2000:60}))
'''
    one   two
0    10  1000
1    20     0
2    30    30
3    40    40
4    50    50
5  2000    60
   one  two
0   10   10
1   20    0
2   30   30
3   40   40
4   50   50
5   60   60
'''

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Pandas-5.基本操作

    悠扬前奏
  • Pandas-15.window函数

    悠扬前奏
  • Pandas-16.聚合

    悠扬前奏
  • CPU靠边站!使用cuDF在GPU加速Pandas

    使用Pandas Dataframe执行数千甚至数百万次计算仍然是一项挑战。你不能简单的将数据丢进去,编写Python for循环,然后希望在合理的时间内处理数...

    量化投资与机器学习微信公众号
  • Python程序员必备的30个编程技巧

    直接交换2个数字的位置 Python 提供了一种直观的方式在一行代码中赋值和交换(变量值)。如下所示:

    一墨编程学习
  • 触发器与锁存器

    触发器(Flip-Flop,简称为FF),也叫双稳态门,包含两种状态,保持态和转化态,在保持态下输出会维持在当前状态不改变,而在转化态下输出会按规律改变。

    根究FPGA
  • Python3.6学习笔记(四)

    程序运行中,可能会遇到BUG、用户输入异常数据以及其它环境的异常,这些都需要程序猿进行处理。Python提供了一套内置的异常处理机制,供程序猿使用,同时PDB提...

    大江小浪
  • PowerBI Desktop 插入元素的几个用法

    披头
  • Hexo安装并使用Butterfly主题

    本片文章为本人想要换hexo的主题时所写。因此省略node和hexo的安装,直接在初始化博客开始

    Dreamy.TZK
  • 关于长链接,短链接,异步,同步,单工,双工的定义

    lyb-geek

扫码关注云+社区

领取腾讯云代金券