一个不常用的东西,(补缺)

2020-09-15 12:21:37 浏览数 (1)

数据缺失是经常遇到的问题,本次的案例有一定的不足,但也发上来了。。。

很多数据按照数据的分布,可能是同一个小时、同一天、同一个站点、同一个、、、、总有那么多同一个的分类,同一个的数据底下可能却在子类型的部分数据缺失,这个案例针对的就是子类型下部分数据缺失的情况,如果是子类型全部缺失,暂时没有考虑到。:::

好了,接下来就是自说自话,气象数据每个小时,不同站点可能缺失,下面是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

0 人点赞