zoukankan      html  css  js  c++  java
  • 缺失数据的处理

    做数据分析挖掘特征之前,都要先处理好数据,数据处理里第一步我们要先处理有缺失值的情况。

    查看导入的数据缺失情况:

     1 import pandas as pd
     2 from io import StringIO
     3 
     4 csv_data = """A,B,C,D
     5 1.0,2.0,3.0,4.0
     6 5.0,6.0,,8.0
     7 0.0,11.0,12.0,
     8 """
     9 df = pd.read_csv(StringIO(csv_data))
    10 print(df)
    11 # 输出缺失值的个数
    12 missing = df.isnull().sum()
    13 print(missing)
    14 print(missing.values, type(missing.values))
    15 print(missing.values[1:])  # 可以索引取值,但是不是列表,方法属性不一样
    16 print(dir(missing.values))

      通过打印的输出我们可以发现使用 isnull方法可以判断值是否为空,isnull().sum()方法按列输出缺失值的个数。

      我们可以利用数据框(DataFrame)的values属性来获取对应的NumPy数组。

    删除有缺失值的行或列:

    1 print(df.dropna())  # 按行删除有缺失值
    2 print(df.dropna(axis=1))  # 删除列中有缺失值的列
    3 print(df.dropna(how="all"))  # 删除那些行全是缺失值的
    4 print(df.dropna(thresh=4))  # 删除那些没有4个值的行
    5 print(df.dropna(subset=["C"]))  # 删除缺失值出现在列标为"C"的行

    缺失数据填充:

    1 from sklearn.preprocessing import Imputer
    2 
    3 imr = Imputer(missing_values='NaN', strategy='mean', axis=0)
    4 imr = imr.fit(df)
    5 imputed_data = imr.transform(df.values)
    6 print(imputed_data)

      修改之后的结果:

      

      注意这里是按列求和再除值的个数,你也可以设置 axis=1 按行插补。

    清澈的爱,只为中国
  • 相关阅读:
    C# 印刷文字识别-营业执照
    C# 印刷文字识别-身份证识别
    web视频点播平台
    web书籍信息管理系统
    web数字图书馆系统
    web文件监控系统
    web陶瓷商城管理系统
    web物品交易管理系统
    web校园单车管理平台
    web校园二手物品管理平台
  • 原文地址:https://www.cnblogs.com/dan-baishucaizi/p/9102100.html
Copyright © 2011-2022 走看看