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

     
    缺失值处理

    查看每列缺失值的数量

    Sum(pd.isnull(‘df’) )

    可以将na_values选项传递到 pd.read_csv来清理它们。我们还可以指定某列的类型是字符串,而不是浮点。

    na_values = ['NO CLUE', 'N/A', '0']

    requests = pd.read_csv('../data/311-service-requests.csv', na_values=na_values, dtype={'某列': str})

    删除法

    默认对行进行操作

    df.dropna()会删除任意含有缺失值的行

    df.drop(how=all)只删除全是缺失值的行

    填补法

    1)  使用0填充

    df.fillna(0)

    2)  前向填充和后向填充

    df.fillna(method=ffill)

    df.fillna(method=bfill)

    3)常量填充, 或者均值填充,中位数填充

    df.fillna({‘列1’: 2,’列2’: 3})

    插值法

    插补法是基于蒙特卡洛模拟法,结合线性模型、广义线性模型、决策树等方法计算出来的预测值替换缺失值。

    举例:自定义列向量拉格朗日插值函数

    #s为列向量,n为被插值的位置,k为取前后的数据个数,默认为5

    from scipy.interpolate import lagrange #导入拉格朗日插值函数

    def ployinterp_column(s, n, k=5):

      y = s[list(range(n-k, n)) + list(range(n+1, n+1+k))] #取数

      y = y[y.notnull()] #剔除空值

      return lagrange(y.index, list(y))  #插值并返回插值结果

    #逐个元素判断是否需要插值

    for i in data.columns:

      for j in range(len(data)):

        if (data[i][j]).isnull(): #如果为空即插值。

          data[i][j] = ployinterp_column(data[i], j)

    数据规范化

    会作用于每一列

    (data - data.min())/(data.max() - data.min()) #最小-最大规范化

    (data - data.mean())/data.std() #零-均值规范化

    替换值

    ata = Series([1., -999., 2., -999., -1000., 3.])

    data.replace(-999, np.nan)

    data.replace([-999, -1000], np.nan)

    data.replace([-999, -1000], [np.nan, 0])

    data.replace({-999: np.nan, -1000: 0})

  • 相关阅读:
    webstorm & phpstorm破解
    JSON和JSONP
    angular.extend(dst, src)对象拓展
    angular.foreach 循环方法使用指南
    angular 指令@、=、&的用法和区别
    angular directive指令相互独立
    angular directive指令的复用
    对apply和call的理解
    图片上传
    vue 路由缓存
  • 原文地址:https://www.cnblogs.com/yongfuxue/p/10042328.html
Copyright © 2011-2022 走看看