【Python】json
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。不足之处,还请指正~
【Python】json相关推荐
- 【Python】json数据解析
目录 json文件数据解析 爬虫获取王者荣耀英雄信息json数据包并解析 爬虫获取抖音视频json数据包并解析 json文件数据解析 json字符串:通常类似python数据类型中的列表和字典的结合, ...
- python里load什么意思_【python】json中load和loads区别
相同点 dump 和 dumps 都实现了序列化 load 和 loads 都实现反序列化 变量从内存中变成可存储或传输的过程称之为序列化 序列化是将对象状态转化为可保存或可传输格式的过程. 变量内容 ...
- 【Python】Json Schema的使用【原创】
Json Schema在Python中的应用 一. 背景 二.概述 三.介绍 四.Python中使用 五.例子 六.参考 一. 背景 之前在做容器发布系统的时候,在部署时需要对提交的deploymen ...
- 【python】json转csv
需求:当同名文件夹下有多个json文件,批量转换到一个csv中 json中包含多层结构 import osimport pandas as pd import json #同一个目录下读取多个js ...
- [转载] 【Python】向json文件中追加新的对象
参考链接: python json 13: 解析json文件中的多个json对象 [Python]向json文件中追加新的对象 def get_json(path, write_path): file ...
- 【Python 身份证JSON数据读取】——身份证前六位地区码对照表文件(最全版-JSON文件)
点个赞留个关注吧!! 1.生成身份证前六位地区码对照表JSON文件 2.python 读取JSON文件 提取码[1234] json文件下载 废话不多说,先上效果图 一.生成身份证json数据文件 先 ...
- 【cJson】 JSON格式详解
0.前言 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式. 易于人阅读和编写.同时也易于机器解析和生成. 它基于JavaScript Programmin ...
- 【Python】Elasticsearch和elasticsearch_dsl
[Python]Elasticsearch和elasticsearch_dsl 官网:https://elasticsearch-py.readthedocs.io/en/master/api.htm ...
- 【Python】开发笔记
[Python]开发笔记 1. 开发工具篇 1)前言 2)VScode VScode搭建Python环境 简明教程 3)Pycharm 4)Visual Studio 5)Jupyter Lab/Ju ...
最新文章
- MFC中添加自己定义的消息
- 安装python模块时,遇到error: Unable to find vcvarsall.bat
- Shell——从hello world和echo命令开始
- 数组和集合的相互转换
- 汇编语言(三十四)之输出中文
- 关于配置Webapck的 exclude 不过滤 node_modules Babel却没有处理转换node_modules的源码
- 麦克风阵列声源定位 GCC-PHAT
- 不依赖浏览器控制台的JavaScript断点调试方法
- WPF DataGrid 根据某一特定内容进行交叉变色
- exp/imp 注释乱码问题或Oracle EXP-00091的解决方法
- java assert可以检查exception吗_PETCT检查可以排查大肠癌吗?
- Linux Server - NIS
- 分子重构技术_4. 串珠模型重构
- vim 的操作说明:
- 【转】ESL和ESR的基本認識
- 流媒体之色彩转换——RGB(X)与YUV之间转换
- NGUI渲染机制——从顶点和UV说起
- 摄影师没了?!生成式人工智能即将降维打击摄影行业
- viso 2013创建闪崩或异常退出
- unity 角度限制_Unity实现角度限制
热门文章
- C#中的数据类型转换
- java 查询表 并返回数据_ajax与java前后台传值及数据表查询解决一个bug的问题
- java 虚拟机的工作原理
- sklearn.naive_bayes
- html标签slot,HTML slot 标签
- python主线程执行_python 并发执行之多线程
- 126. Leetcode 剑指 Offer 46. 把数字翻译成字符串 (动态规划- 字符串系列)
- 88. Leetcode 剑指 Offer 14- I. 剪绳子 (动态规划-基础题)
- 文巾解题 27. 移除元素
- tableau可视化数据分析60讲(四)-tableau数据源操作数据提取