#(11)Frequent Values
df.iloc[:,0].value_counts().iloc[0:5,]
df.iloc[:,0][~np.isin(df.iloc[:,0], missSet)]
df.iloc[:,0][~np.isin(df.iloc[:,0], missSet)].value_counts()[0:5,]
json_fre_name = {}
json_fre_count = {}
def fill_fre_top_5(x):
if len(x) <= 5:
new_array = np.full(5, np.nan)
new_array[0:len(x)] = x
return new_array
df['ind_var1_0'].value_counts()
len(df['imp_sal_var16_ult1'].value_counts())
for i,name in enumerate(df[['ind_var1_0','imp_sal_var16_ult1']].columns):
index_name = df[name][~np.isin(df[name], missSet)].value_counts().iloc[0:5,].index.values
index_name = fill_fre_top_5(index_name)
json_fre_name[name] = index_name
values_count = df[name][~np.isin(df[name], missSet)].value_counts().iloc[0:5,].values
values_count = fill_fre_top_5(values_count)
json_fre_count[name] = values_count
df_fre_name = pd.DataFrame(json_fre_name)[df[['ind_var1_0','imp_sal_var16_ult1']].columns].T
1.统计指标示例-频数
# (11)Frequent Value
df.iloc[:, 0].value_counts().iloc[0:5, ] # value_counts是pandas中dataframe的方法,显示指定特征按照频数由大到小排序,我们一般取前五位频繁出现的值以及它的频数
# 至于选择0:5还是0:10,根据业务定义,一般选取前五位就已经看出一些问题了
df.iloc[:, 0][~np.in1d(df.iloc[:, 0], missSet)] # 去除缺失值
df.iloc[:, 0][~np.in1d(df.iloc[:, 0], missSet)].value_counts()[0:5] # 去除缺失值后进行频数的统计
# 和分位点的处理方法类似,不能直接用apply
json_fre_name = {} # 名字
json_fre_count = {} # 计数
# 如果特征不够5怎么办?剩下的置空。有两个目的:第一,定长,为了和前面的值一致;第二,留一些位置以便更好地拓展
def fill_fre_top_5(x):
if(len(x)) <= 5:
new_array = np.full(5, np.nan)
new_array[0:len(x)] = x
return new_array
df['ind_var1_0'].value_counts() # 小于5
df['imp_sal_var16_ult1'].value_counts() # 大于5
for i, name in enumerate(df[['ind_var1_0', 'imp_sal_var16_ult1']].columns): # columns取其列名
# 1.Index Name
index_name = df[name][~np.in1d(df[name], missSet)].value_counts().iloc[0:5, ].index.values
# 1.1 If the length of array is less than 5
index_name = fill_fre_top_5(index_name)
json_fre_name[name] = index_name
# 2.Value Count
values_count = df[name][~np.in1d(df[name], missSet)].value_counts().iloc[0:5, ].values
# 2.1 If the length of array is less than 5
values_count = fill_fre_top_5(values_count)
json_fre_count[name] = values_count
df_fre_name = pd.DataFrame(json_fre_name)[df[['ind_var1_0', 'imp_sal_var16_ult1']].columns].T # 为了保证格式一致
df_fre_count = pd.DataFrame(json_fre_count)[df[['ind_var1_0', 'imp_sal_var16_ult1']].columns].T
df_fre = pd.concat([df_fre_name, df_fre_count], axis=1) # concat合并
特殊描述值--频数
这个没怎么看懂