将Json数据转换为Python DataFrame

时间:2015-07-24 17:45:00

标签: python json pandas

这是我第一次访问API /使用json数据,所以如果有人能够指出我有一个很好的资源来理解如何使用它,我真的很感激。

具体来说,我有这种形式的json数据:

{"result": { "code": "OK", "msg": "" },"report_name":"DAILY","columns":["ad","ad_impressions","cpm_cost_per_ad","cost"],"data":[{"row":["CP_CARS10_LR_774470","966","6.002019","5.797950"]}],"total":["966","6.002019","5.797950"],"row_count":1}

我理解这种结构,但我不知道如何正确地将其导入DataFrame。

2 个答案:

答案 0 :(得分:1)

查看json的结构,可能您的数据会有几行,在我看来,自己构建数据框会更有意义。

此代码使用columnsdata构建数据框:

In [12]:

import json
import pandas as pd
​
with open('... path to your json file ...') as fp:
    for line in fp:
        obj = json.loads(line)
        columns = obj['columns']
        data = obj['data']
        l = []
        for d in data:
            l += [d['row']]
        df = pd.DataFrame(l, index=None, columns=columns)

df
Out[12]:
ad  ad_impressions  cpm_cost_per_ad cost
0   CP_CARS10_LR_774470 966 6.002019    5.797950

至于其余数据,在json中,我猜您可以例如使用总计来检查您的数据框,

In [14]:

sums = df.sum(axis=0)
obj['total']
for i in range(0,3):
    if (obj['total'][i] != sums[i+1]):
        print "error in total"

In [15]:

if obj['row_count'] != len(df.index):
    print "error in row count"

至于json中的其他数据,我很难知道是否应该做其他事情。

希望它有所帮助。

答案 1 :(得分:0)

检查pandas文档。具体地,

http://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_json.html

Pandas支持将json读取到dataframe