首页 > 其他分享 >pandas缺失值的处理

pandas缺失值的处理

时间:2023-02-20 11:37:05浏览次数:25  
标签:处理 print nan 缺失 df np data pandas

缺失值的处理

缺失值的类型

  • numpy库中的:np.nan/ np.NaN,不区分大小写
  • None,区分大小写
  • pandas中:pd.NA/pd.NaT:区分大小写

缺失值判断

#isna()/isnull()
data = [[3,8,31],
        [np.nan,np.nan,2],
        [np.nan,np.nan,np.nan],
        [10,1,np.nan],
        [5,8,12]]
df = pd.DataFrame(data=data,columns=list("abc"))
print(df)
print(df.isnull())
print(df.isna())
#isnull与isna的输出结果是一样的是布尔型
"""
      a      b      c
0  False  False  False
1   True   True  False
2   True   True   True
3  False  False   True
4  False  False  False
"""

#notna()/notnull()
#notna/notnull与isna/isnull的输出结果刚好相反

缺失值的计算

#缺失值的个数
data = [[3,8,31],
        [np.nan,np.nan,2],
        [np.nan,np.nan,np.nan],
        [10,1,np.nan],
        [5,8,12]]
df = pd.DataFrame(data=data,columns=list("abc"))
print(df)
print(df.isna().sum()) #每列缺失值的个数
print(df.isna().sum(axis=1)) #每行缺失值的个数

print(df.isna().mean())#计算每列的缺失率
print(df.isna().mean(axis=1))#计算每行的缺失率

#此外在还可以对包含缺失值的函数进行运算,在df.sum()/df.mean()时,是没有考虑缺失值的,而累计求和以及累积乘积
#缺失值对应的行或列,依然是NA值
print(df["a"])
print(df["a"].cumsum())
"""
#输出结果
0     3.0
1     NaN
2     NaN
3    10.0
4     5.0
Name: a, dtype: float64
0     3.0
1     NaN
2     NaN
3    13.0
4    18.0
"""

缺失值的筛选

data = [[3,8,31],
        [np.nan,np.nan,2],
        [np.nan,np.nan,np.nan],
        [10,1,np.nan],
        [5,8,12]]
df = pd.DataFrame(data=data,columns=list("abc"))

a = df.loc[df.isna().any(axis=1)] #对含有缺失值的行进行筛选,any是满足任意一个条件即可

a = df.loc[~df.isna().any(axis=1)] #any的反向操作

a = df.loc[df.notna().all(axis=1)] #all,全都不是na值

a = df.loc[~df.notna().all(axis=1)] #all的反向操作,全都不是na值

缺失值的填充

data = [[3,8,31],
        [np.nan,np.nan,2],
        [np.nan,np.nan,np.nan],
        [10,1,np.nan],
        [5,8,12]]
df = pd.DataFrame(data=data,columns=list("abc"))

df.fillna(6666)#缺失值全部用常数666进行填充
df.fillna({"a":1,"b":2,"c":3})#也可通过字典对特定的列进行指定填充

#一些个性化的操作
print(df)
df.fillna(method = "ffill",inplace=True)#默认情况下用前面的数据行进行填充
df.fillna(method = "pad",inplace=True)#与method = "ffill"等价

a = df.fillna(method = "ffill",limit=1)#limit对填充的数量进行限制,只填充一次

a = df.fillna(method = "bfill",limit=1)#limit对填充的数量进行限制,只填充一次

缺失值删除

data = [[3,8,31],
        [np.nan,np.nan,2],
        [np.nan,np.nan,np.nan],
        [10,1,np.nan],
        [5,8,12]]
df = pd.DataFrame(data=data,columns=list("abc"))
print(df)
a = df.dropna(axis=0)#删除缺失值所在的行
a = df.dropna(axis=1)#删除缺失值所在的列

a = df.dropna(subset=["a"],axis=0)#subset,里面可以是列表,也可以是单个元素;删除"a"列中的空元素

标签:处理,print,nan,缺失,df,np,data,pandas
From: https://www.cnblogs.com/yangzilaing/p/17136691.html

相关文章

  • Docker中Mysql容器忘记密码的处理方法
    今天非常的倒霉,因为学习了Vue的相关知识,想自己写一个后端服务器来练习一下Vue然后忘记了Docker中Mysql的密码。。。很抽象下面是我的解决方法一、如果在本地的Navica......
  • python系列 - 异常处理
    错误与异常通常来说,程序中的错误至少包含两种:一种是语法错误,另一种则是异常语法错误:代码不符合编程规范,无法被识别与执行异常:程序语法正确且可以被执行,但执行过程中遇到......
  • rsyslog由于RateLimit丢失日志的处理
    问题问题的发现:在我们的docker应用中,配置了rsyslog作为日志输出;当应用产生的日志在某段时间内量比较大时,就发现会丢日志。原因问题的原因:日志的输出路径,应用程序把......
  • 读Java实战(第二版)笔记15_并行数据处理与性能
    1. Stream1.1. 允许你声明性地将顺序流转变成并行流1.2. 能对这些集合执行操作流水线,可以充分利用计算机的多个核2. 并行流2.1. 把内容拆分成多个数据块,用不同线......
  • struts2 uploadify配合使用,以及处理session丢失问题
    直接上代码:jsp页面中:<divstyle="margin:20px;"><span>当前最新固件:</span><labelstyle="margin-left:10px;color:red;"id="currentFirmware"></label></......
  • Error处理:/bin/bash^M: 坏的解释器
    Error处理:/bin/bash^M:坏的解释器:没有该文件或目录(badinterpreter:Nosuchfileordirectory) 在Linux下编译运行脚本的时候出现”/bin/bash^M:坏的解释器:......
  • 基于OpenMV的图像处理基础知识及例程使用方法
                ......
  • Pandas中的离散化和分箱
    pandas.cut()方法介绍  连续值经常需要离散化,或者分离成“箱子”进行分析,假设我们有某项研究中一组人群的数据,需要将其进行分组,放入离散的年龄框中:ages=[2,67,40,......
  • 信号分析与处理相关概念
    自协方差矩阵(AutocovarianceMatrix):是指一个信号在不同时刻的自协方差所构成的矩阵,通常用来描述随机信号的统计特性。功率谱密度(PowerSpectralDensity,PSD):是指信号......
  • Java:使用thumbnailator实现图片压缩处理
    thumbnailator可以实现图片的压缩、旋转、添加水印文档https://github.com/coobird/thumbnailatorhttps://github.com/coobird/thumbnailator/wiki/Examples依赖<!--......