python 检查缺失值的百分比和df列中的孔的趋势以及它们是否连续。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 检查缺失值的百分比和df列中的孔的趋势以及它们是否连续。相关的知识,希望对你有一定的参考价值。
## check percent of nan values in pandas df
def check_nans(DATA,col_total):
print('Shape:', DATA[col_total].shape)
nas = [x for x in DATA[col_total].columns.values if DATA[x].isnull().sum() > 0]
print('Cols with NAs:', len(nas))
if len(nas)>0:
for x in nas:
print(x, ':{:.2f}% of NAs'.format(DATA[x].isnull().sum()/float(len(DATA))*100))
return None
## check trend of holes (consecutive or not)
def check_trend_holes(DF,svar,sdatetime):
import matplotlib.pyplot as plt
import copy
# copy
AUX = copy.deepcopy(DF[[svar]])
# reset index
AUX.reset_index(drop=False, inplace=True)
AUX.reset_index(drop=False, inplace=True)
# get 1st and last dates
dt1,dt2 = AUX[sdatetime].tolist()[0],AUX[sdatetime].tolist()[-1]
sdt1, sdt2 = dt1.strftime("%Y-%m-%d %H:%M"),dt2.strftime("%Y-%m-%d %H:%M")
# filtering nan values
lindex = list(AUX[np.isnan(AUX[svar])].index)
AUX = AUX[AUX.index.isin(lindex)]
# check consecutive holes
AUX.loc[(AUX['index'].shift(-1) - AUX['index'] == 1) | (AUX['index'].shift(1) - AUX['index'] == -1), 'isconsecutive'] = True
# display results
stitle = 'Period: %s - %s (Total: %s) \nHOLES: Total holes = %s / Consecutive holes = %s / Non-Consecutive holes = %s'%(sdt1,sdt2,len(DF)
len(AUX),
len(AUX[AUX.isconsecutive==True]),
len(AUX[AUX.isconsecutive!=True]))
# plot
pd.isnull(DF[svar]).plot(figsize=(20,3))
plt.title(stitle,fontsize=22)
plt.xticks(rotation='horizontal', fontsize=16)
plt.show()
# clean
del(AUX)
# return
return None
以上是关于python 检查缺失值的百分比和df列中的孔的趋势以及它们是否连续。的主要内容,如果未能解决你的问题,请参考以下文章
python和R对dataframe的缺失值的统计与填充:dplyrtidyrfillnaisnaisnullsum
检查文本列中的数值 - python
使用最后 n 个值的平均值或中值填充数据框不同列中的缺失值
python 检查熊猫df中是否有缺失值
使用 R 根据另一列中的类别计算列和列表之间常见值的百分比
在 python pandas 中使用 groupby 的列中出现的百分比