版权声明:相互学习,一起成长,转载请联系博主。 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。不足之处,还请指正~