【Python】json

版权声明:相互学习,一起成长,转载请联系博主。 https://blog.csdn.net/sunyaowu315/article/details/86700257

json

所谓json,就是由键值对组合而成用来存储数据的数据交换格式。我个人非常喜欢json这个数据存储方式,因为它可以包罗万象,自由度很高。

接下来,就从python几个常见的使用场景,介绍json 的一些基本用法。


1、导入python包

import json 
info = {
    'name':'刘处玄',
    'age':22,
    'job':'student',
}

2、将代码数据转换成json字符串(dump和dumps的用法)

data = json.dumps(info)
print(data)
#输出{"name": "\u5218\u5904\u7384", "age": 22, "job": "student"}

#保存至文件
with open('test1.txt','w') as f:
    s = json.dumps(info)
    f.write(s)

3、将json字符串转换为代码数据(load和loads的用法)

data = json.dumps(info)
info2 = json.loads(data)
print(info2)
#输出{'name': '刘处玄', 'age': 22, 'job': 'student'}

4、json的键:Key

result=json.loads(data)
result.get('success')
result.get('error_text')
result.get('decision')
result.get('data').get('applyLoanInfo')

5、json的值:Value

根据取到的key取value

6、json和Dataframe之间的转换

当我们在进行数据分析的时候,经常会遇到各种各样格式的文件,今天在这里整理一下对于json格式的文件怎么转化为dataframe的形式的文件。

一、对于简单的json形式

   所谓的简单的json格式,就是将字典形式的文件,直接输出成dataframe形式的文件,如:
obj="""[{"姓名": "张三",
 "住处": "天朝",
 "宠物": "koala",
 "兄弟": "李四"
},{"姓名": "李四",
 "住处": "天朝",
 "宠物": "cat",
 "兄弟": "张三"}]"""
with open("test.json","w",encoding="utf-8") as f:
    f.write(obj)

1.利用pandas自带的read_json直接解析字符串

import pandas as pd
df = pd.read_json("test.json",encoding="utf-8", orient='records')
print(df)

2.利用json库loads方法和pandas库中的json_normalize方法

import json 
from pandas.io.json import json_normalize
data=open("test.json",encoding="utf-8").read()
data_list = json.loads(data)
df = json_normalize(data_list)
print(df)

二、对于稍微复杂一些的json进行处理

  复杂的一些的json格式的文件,例子如下,我们想要得到的数据是张三兄弟的数据,同样先写入json文件:
obj = """
{"姓名": "张三",
 "住处": ["天朝", "岛国", "万恶的资本主义日不落帝国"],
 "宠物": null,
 "兄弟": [{"姓名": "李四", "年龄": 25, "宠物": "汪星人"},
              {"姓名": "王五", "年龄": 23, "宠物": "喵星人"}]
}"""
with open("test1.json","w",encoding="utf-8") as f:
    f.write(obj)

1.利用json的loads和pandas的DataFrame

import json 
import pandas as pd
with open("test1.json","r",encoding="utf-8") as f:
    info=f.read()
    data_list = json.loads(info)
    brother_info = data_list["兄弟"]
    #print(type(df))
#     print(df)
    df=pd.DataFrame(df)
    print(df)

2.利用json的loads和pandas的json_normalize

from pandas.io.json import json_normalize
import json 
with open("test1.json","r",encoding="utf-8") as f:
    info=f.read()
    data_list = json.loads(info)
    brother_info = data_list["兄弟"]
    df = json_normalize(brother_info)
    print(df)

3.利用json的loads和pandas的read_json

import json 
import pandas as pd
with open("test1.json","r",encoding="utf-8") as f:
    info=f.read()
    data_list = json.loads(info)
    brother_info = data_list["兄弟"]
    json_data=json.dumps(brother_info)
    df=pd.read_json(json_data,orient="records")
    print(df)

总结:
在以上的例子中,可以发现在进行简单的格式转换的时候,可以使用pandas库的read_json进行处理,在进行复杂的格式转换的时候就要配合json库进行使用。在这里重点介绍一下两个函数,reada_json方法和json_normalize方法。

在使用时,要注意read_json方法中orient参数的选择,同时json_normalize可以将传入的列表,字典形式的json格式数据直接转换成dataframe。不足之处,还请指正~

猜你喜欢

转载自blog.csdn.net/sunyaowu315/article/details/86700257