数据处理

Posted yongfuxue

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据处理相关的知识,希望对你有一定的参考价值。

 
缺失值处理

查看每列缺失值的数量

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

以上是关于数据处理的主要内容,如果未能解决你的问题,请参考以下文章

大数据生态之数据处理框架探索

C语言:常规数据处理

五种大数据处理架构

视音频数据处理入门:FLV封装格式解析

视音频数据处理入门:FLV封装格式解析

视音频数据处理入门:FLV封装格式解析