关于json的解析及简单的特征衍生

Posted 风控建模

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于json的解析及简单的特征衍生相关的知识,希望对你有一定的参考价值。

最近经常需要解析json,然后写了一个代码,此代码并不通用,只是针对这个问题比较简单。


三方返回的excel数据,有用的信息都包含在一列json中,如下图所示:

我们先取出一行json看一下,构造如下图所示:

接下来,我们来进行解析,并衍生一些简单的求和、平均等简单特征,代码如下:

def xxx(r):
   x = ["last_15_day","last_180_day","last_90_day","last_7_day","last_30_day"]
   rr = [None]*5*8+[r[0],r[1]]
   if len(r[2])<5:
       return pd.Series(rr)
   j = json.loads(r[2])
   for i in j:
       k = x.index(i)
       hc = 0
       hos = 0
       hus = 0
       ha = None
       sc = 0
       sa = None
       ss = 0
       smax = 0
       for ii in j[i]:
           if ii.startswith('SC'):
               sc += 1
               ss += j[i][ii]
               if j[i][ii]>smax:
                   smax = j[i][ii]
           else:
               hc +=1
               hos += j[i][ii]['org_code_num']
               hus += j[i][ii]['use_num']
       if sc != 0:
           sa = ss*1.0/sc
       if hc !=0 :
           ha = hus*1.0 / hc
       rr[k*8] = hc if hc >0 else None
       rr[k*8+1] = hos if hos >0 else None
       rr[k*8+2] = hus if hus >0 else None
       rr[k*8+3] = ha
       rr[k*8+4] = sc if sc >0 else None
       rr[k*8+5] = sa
       rr[k*8+6] = ss if ss >0 else None
       rr[k*8+7] = smax if smax >0 else None
   return pd.Series(rr)
dd = df1[['id_card','phone','json']].fillna('xxx').drop_duplicates(['id_card','phone']).apply(xxx,axis=1)
dd.columns = ['last_15_day_H_CNT',
'last_15_day_ORG_SUM',
'last_15_day_USE_SUM',
'last_15_day_USE_AVG',
'last_15_day_S_CNT',
'last_15_day_S_AVG',
'last_15_day_S_SUM',
'last_15_day_S_MAX',            
'last_180_day_H_CNT',
'last_180_day_ORG_SUM',
'last_180_day_USE_SUM',
'last_180_day_USE_AVG',
'last_180_day_S_CNT',
'last_180_day_S_AVG',
'last_180_day_S_SUM',
'last_180_day_S_MAX',
'last_90_day_H_CNT',
'last_90_day_ORG_SUM',
'last_90_day_USE_SUM',
'last_90_day_USE_AVG',
'last_90_day_S_CNT',
'last_90_day_S_AVG',
'last_90_day_S_SUM',
'last_90_day_S_MAX',
'last_7_day_H_CNT',
'last_7_day_ORG_SUM',
'last_7_day_USE_SUM',
'last_7_day_USE_AVG',
'last_7_day_S_CNT',
'last_7_day_S_AVG',
'last_7_day_S_SUM',
'last_7_day_S_MAX',
             'last_30_day_H_CNT',
'last_30_day_ORG_SUM',
'last_30_day_USE_SUM',
'last_30_day_USE_AVG',
'last_30_day_S_CNT',
'last_30_day_S_AVG',
'last_30_day_S_SUM','last_30_day_S_MAX','id_card','phone']

得到结果如下:


以上是关于关于json的解析及简单的特征衍生的主要内容,如果未能解决你的问题,请参考以下文章

android json解析及简单例子

是否有关于如何使用基于 C 的 YAJL 库解析简单 JSON 文件的简单示例?

片段中的 JSON 解析 [关闭]

关于朴素贝叶斯的一些理解及python的简单实现

android json解析及简单例子

c++好用的json解析类源码分享及简单使用