数据缺失是经常遇到的问题,本次的案例有一定的不足,但也发上来了。。。
很多数据按照数据的分布,可能是同一个小时、同一天、同一个站点、同一个、、、、总有那么多同一个的分类,同一个的数据底下可能却在子类型的部分数据缺失,这个案例针对的就是子类型下部分数据缺失的情况,如果是子类型全部缺失,暂时没有考虑到。:::
好了,接下来就是自说自话,气象数据每个小时,不同站点可能缺失,下面是qy、wd、fs、sd四个数据的部分缺失补齐,缺失值是999999:
###气象999999替换为逐小时平均值
import pandas as pd
import numpy as np
data=pd.read_csv(r'D:Thesisxiamenwrw.csv',encoding='gbk')
arraydata=np.array(data)
fs=arraydata[:,6].astype('float')
nfs=[]
for i in range(int(len(fs)/31)):
picefs=fs[i*31:(i 1)*31]
npice=[]
npiceave=[]
for j in range(31):
if picefs[j]!=999999:
npice.append(picefs[j])
ave=sum(npice)/len(npice)
for j in range(31):
if picefs[j]!=999999:
npiceave.append(picefs[j])
else:
npiceave.append(ave)
nfs.append(npiceave)
nfs=np.array(nfs).reshape(len(fs))
fx=arraydata[:,7].astype('float')
nfx=[]
for i in range(int(len(fx)/31)):
picefx=fx[i*31:(i 1)*31]
npice=[]
npiceave=[]
for j in range(31):
if picefx[j]!=999999:
npice.append(picefx[j])
ave=sum(npice)/len(npice)
for j in range(31):
if picefx[j]!=999999:
npiceave.append(picefx[j])
else:
npiceave.append(ave)
nfx.append(npiceave)
nfx=np.array(nfx).reshape(len(fx))
wd=arraydata[:,8].astype('float')
nwd=[]
for i in range(int(len(wd)/31)):
picewd=wd[i*31:(i 1)*31]
npice=[]
npiceave=[]
for j in range(31):
if picewd[j]!=999999:
npice.append(picewd[j])
ave=sum(npice)/len(npice)
for j in range(31):
if picewd[j]!=999999:
npiceave.append(picewd[j])
else:
npiceave.append(ave)
nwd.append(npiceave)
nwd=np.array(nwd).reshape(len(wd))
sd=arraydata[:,9].astype('float')
nsd=[]
for i in range(int(len(sd)/31)):
picesd=sd[i*31:(i 1)*31]
npice=[]
npiceave=[]
for j in range(31):
if picesd[j]!=999999:
npice.append(picesd[j])
ave=sum(npice)/len(npice)
for j in range(31):
if picesd[j]!=999999:
npiceave.append(picesd[j])
else:
npiceave.append(ave)
nsd.append(npiceave)
nsd=np.array(nsd).reshape(len(sd))
qy=arraydata[:,10].astype('float')
nqy=[]
for i in range(int(len(qy)/31)):
piceqy=qy[i*31:(i 1)*31]
npice=[]
npiceave=[]
for j in range(31):
if piceqy[j]!=999999:
npice.append(piceqy[j])
ave=sum(npice)/len(npice)
for j in range(31):
if piceqy[j]!=999999:
npiceave.append(piceqy[j])
else:
npiceave.append(ave)
nqy.append(npiceave)
nqy=np.array(nqy).reshape(len(qy))
submission = pd.DataFrame({'fs':nfs,'fx':nfx,'wd':nwd,'sd':nsd,'qy':nqy})
submission.to_csv('D:/Thesis/xiamen/qx/wrwnqxxm.csv',index=False)
浮点型部分就是原先的999999