Pandas的学习(5.pandas中处理丢失数据和空值数据以及填充空值数据)

发布时间:2024-12-10 19:34

数据分析:Python的Pandas库数据处理 #生活知识# #编程教程#

最新推荐文章于 2024-09-28 06:16:12 发布

还是那个同伟伟 于 2019-05-29 08:34:01 发布

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

处理丢失数据

   有两种丢失的数据:

       --  None

       --  np.nan(NaN)

1.None

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

     object类型的运算要比int类型的运算慢得多

 2.np.nan(NaN)

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

        但可以使用np.nan() 函数来计算nan,此时视nan为 3.pandas中的None与NaN  (1) pandas中None与np.nan都视作np.nan

   (1) 判断函数:

df.isnull()

df.isnull.any()

df.isnull.all()

df.notnull()

df.notnull.any()

df.notnull.all()

'''具体的代码实例以及功能如下:''''

from pandas import DataFrame, Series

import numpy as np

df = DataFrame({"age": [20, 21, 19, 22, 23], 'salary': [10000, 11000, 9900, 8500, 15000]},

index=['张三', '李四', '小赵', '小王', '小冯'], columns=['age', 'salary', 'work'])

df.work['李四':'小王'] = 'python'

print(df)

"""

age salary work

张三 20 10000 NaN

李四 21 11000 python

小赵 19 9900 python

小王 22 8500 python

小冯 23 15000 NaN

"""

'''1.调用isnull()方法,判断是否为空'''

print(df.isnull())

"""

age salary work

张三 False False True

李四 False False False

小赵 False False False

小王 False False False

小冯 False False True

"""

'''2. isnull().any() 只有数据有一个为空,即为True

any(axis=0):只要数据有一个为True就为这“列”就为True

any(axis=1):只要数据有一个为True就为这“行”就为True'''

s1 = df.isnull().any(axis=1)

'''(获取数据为空的数据)把获得的Series在使用DataFrame取值'''

print(df[s1])

"""

age salary work

张三 20 10000 NaN

小冯 23 15000 NaN

"""

'''3.isnull().all() 数据全部为空时,才为True,axis同any()'''

print(df.isnull().all(axis=1))

"""

张三 False

李四 False

小赵 False

小王 False

小冯 False

dtype: bool

"""

'''4.notnull() 判断数据是否不为空'''

print(df.notnull())

"""

age salary work

张三 True True False

李四 True True True

小赵 True True True

小王 True True True

小冯 True True False

"""

''' 5notnull().any() 只有数据有一个不为空,即为True

any(axis=0):只要数据有一个不为True就为这“列”就为True

any(axis=1):只要数据有一个不为True就为这“行”就为True'''

print(df.notnull().any(axis=1))

"""

张三 True

李四 True

小赵 True

小王 True

小冯 True

dtype: bool

"""

'''6.notnull().all() 数据全部不为空时,才为True,axis同any()'''

s2 = df.notnull().all(axis=1)

print(s2)

"""

张三 False

李四 True

小赵 True

小王 True

小冯 False

dtype: bool

"""

'''取出没有一个空值的数据'''

print(df[s2])

"""

age salary work

李四 21 11000 python

小赵 19 9900 python

小王 22 8500 python

"""

'

(2) 过滤函数

    ·  dropna()            可以选择过滤的是行还是列(默认为行)  , 也可以选择过滤的方式  参数 :how='all'

'''dropna(),中的参数axis默认为0,即为行'''

'''一行数据只要有一个为空就进行删除,如果加上参数how='all'代表一行都为空时才删除'''

print(df.dropna())

"""

age salary work

李四 21 11000 python

小赵 19 9900 python

小王 22 8500 python

"""

'''一列数据只要有一个为空就进行删除,参数how='all'代表一列都为空时才删除'''

print(df.dropna(axis=1))

"""

age salary

张三 20 10000

李四 21 11000

小赵 19 9900

小王 22 8500

小冯 23 15000

"""

(3) 填充函数 Series/DataFrame

    --   fillna()      参数value=''  即为要填充的值

                                 method:对应的值  'bfill'(选择后面的填充)或者'ffill(选择前面的填充)

                                 inplace:True 是否选择在原来的基础上修改,加上该参数没有返回值

'''fillna() 填充所有的空值'''

print(df.fillna(value="填充值"))

"""

age salary work

张三 20 10000 填充值

李四 21 11000 python

小赵 19 9900 python

小王 22 8500 python

小冯 23 15000 填充值

"""

'''可以选择向前填充还是向后填充

参数method:对应的值 'bfill'(选择后面的填充)或者'ffill(选择前面的填充)

inplace:True 是否选择在原来的基础上修改,没有返回值

对于DataFrame来说,选择填充的轴axis.

-- axis=0 index/行

-- axis=1 columns/列'''

print(df.fillna(method='bfill'))

""" # 因为最后一个后面没有值,所以最后一个填充还是为NaN

age salary work

张三 20 10000 python

李四 21 11000 python

小赵 19 9900 python

小王 22 8500 python

小冯 23 15000 NaN

"""

print(df.fillna(method='ffill'))

""" # 因为第一个的前没有值,所以第一个填充还是NaN

age salary work

张三 20 10000 NaN

李四 21 11000 python

小赵 19 9900 python

小王 22 8500 python

小冯 23 15000 python

"""

网址:Pandas的学习(5.pandas中处理丢失数据和空值数据以及填充空值数据) https://www.yuejiaxmz.com/news/view/436407

相关内容

Pandas 数据处理(一)缺失值处理
利用Python进行数据分析——Pandas(2)
机器学习之数据预处理(Python 实现)
python数据分析
数据清洗实战:工业生产数据的深入探讨
数据挖掘:数据清洗——数据噪声处理
NumPy和Pandas总结
数据预处理(一)
AI数据清洗:提升效率与准确性的革命性方法
python数据结构练习

随便看看