python--数据处理与探索
根据收集到的数据,接下来要考虑的问题是数据是否满足我们模型构建的要求,数据质量是否过关?数据间的关联性如何?趋势和规律怎么样的?
通过数据的处理和探索,用统计手段通过制图等描绘数据,对数据进行初步的探索。
数据质量分析:
1、缺失值;2、异常值;3、不一致的值;4、重复数据且含有非法字符。
1、缺失值的处理:
缺失值产生原因:有些数据无法获取,或者获取的代价太大;信息收集时遗留;数据本身不存在;
缺失值的影响:丢失有用的消息,增加模型的不确定性,对于规律更难把握,模型建立过程及输出不可靠;
缺失值的解决:
删除该记录、插补、不处理;
用函数:dropna去除数据结构中为空的数据
from pandas import read_csv df = read_csv( 'C://Users//leon//Desktop//data.csv' ) isNA = df.isnull() #找出空值的位置 df[isNA[['key', 'value']].any(axis=1)] #空值所在行 newDF = df.dropna() #删除该行
插补:
用均值、中位数、众数进行插补
临近值插补、回归方法、插值法
插值法:拉格朗日插值
概念
一般地,若已知
在互不相同 n+1 个点
处的函数值
( 即该函数过
这n+1个点),则可以考虑构造一个过这n+1 个点的、次数不超过n的多项式
,使其满足:
要估计任一点ξ,ξ≠xi,i=0,1,2,...,n,则可以用Pn(ξ)的值作为准确值f(ξ)的近似值,此方法叫做“插值法”。
称式(*)为插值条件(准则),含xi(i=0,1,...,n)的最小区间[a,b],其中a=min{x0,x1,...,xn},b=max{x0,x1,...,xn}。
定理
满足插值条件的、次数不超过n的多项式是存在而且是唯一的。
在平面上有
共n个点,现作一条函数
使其图像经过这n个点。
使得
最后可得
。
形如上式的插值多项式
称为拉格朗日(Lagrange)插值多项式。
例如:当n=4时,上面的公式可简化为:
代码过程:
def h(x,y,a): ans=0.0 for i in range(len(y)): t=y[i] for j in range(len(y)): if i !=j: t*=(a-x[j])/(x[i]-x[j]) ans +=t return ans x=[1,0] y=[0,2] print(h(x,y,2))
- x,y分别是对应点的x值和y值。具体详解下解释。
- a为想要取得的函数的值。
在python中直接调用lagrange(x,y)
例如:(1,2) (3,5) (5,9)这三个点,作为函数输入应该这么写:
x=[1,3,5]
y =[2, 5, 9]
a=lagrange(x,y)
代码实现:
from scipy.interpolate import lagrange x=[1,2,3,4,7] y=[5,7,10,3,9] a=lagrange(x,y) print(a) print(a(1),a(2),a(3)) print(a[0],a[2],a[3])
结果:
4 3 2
0.5472 x - 7.306 x + 30.65 x - 47.03 x + 28.13
print(a(1),a(2),a(3))
5.0 7.0 10.0
print(a[0],a[2],a[3])
28.1333333333 30.6527777778 -7.30555555556