数据处理

 
缺失值处理

查看每列缺失值的数量

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})

转载于:https://www.cnblogs.com/yongfuxue/p/10042328.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值