数据采集3:
关于pandas的函数都在官方API有写,哪个参数不会用首先应该去查这个
http://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.interpolate.html
-------------------------------------------------------------0---------------------------------------------------------------------
1.df.interpolate() 插值函数(即填充空白值更平滑的方法,因为某些数据需要平滑过渡,比如温度不能骤降或者骤升)
在数据采集2里面我们详解了fillna的用法,但是尽管它可以用前一个值或后一个值来填补相邻位置的空白值,
df.fillna()这种填充往往是不合理的,比如说温度不能骤升骤降,的空白值显然是用两个点的平均值更合理。
(1) df.interpolate() 插值函数 取平均数
关于interpolate插值的用法,英文的值得参考:
http://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.interpolate.html
它有很多参数,这里不一一列举,method 默认的话是线性插值,大家可能忘了线性插值了,就是用两点间的直线去近似原函数。所以两个相邻的点之间如果有NaN的话,这个NaN会被填补为两点的平均数。
method : {‘linear’, ‘time’, ‘index’, ‘values’, ‘nearest’, ‘zero’,‘slinear’, ‘quadratic’, ‘cubic’, ‘barycentric’, ‘krogh’, ‘polynomial’, ‘spline’, ‘piecewise_polynomial’, ‘from_derivatives’, ‘pchip’, ‘akima’}
(2)df.interpolate(method = 'time' ) 根据时间间隔来计算 使数值更平滑
df的index索引一定得是时间格式的,df它会查你的索引,这样就能计算出来时间差。
例如: 这样温度它也会按时间计算线性插值
-------------------------------------------------------------------- 1 ----------------------------------------------------------------------------------------
2.如何处理 不可能出现的值(df.replace()或数据校验方法-->转化为NaN---> fillna()或interpolate() )
现在是有值,只是值不能用,那就需要先转化为空白值,再填充它。
(1)df.replace()
有时候数据库里会用特别极端的值代替不可能出现的数据,我们需要通过df.replace() 来替换为NaN。
以下例子有5种用法,第1种替换单个值为NaN,第2种一次替换多个值为NaN,第3种按列替换为NaN
第4种 我可以对每一列用正则表达式(对整个表直接用regex很容易刷掉有效数据),比如说天气就不适合出现数字,年龄不适合出现字母。有这些内容的我都给它替换成NaN。
第5种,我不替换为NaN了,我替换成一个list,都给比较合理的值。
import numpy as np
import p