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相关推荐

  1. 【Python】json数据解析

    目录 json文件数据解析 爬虫获取王者荣耀英雄信息json数据包并解析 爬虫获取抖音视频json数据包并解析 json文件数据解析 json字符串:通常类似python数据类型中的列表和字典的结合, ...

  2. python里load什么意思_【python】json中load和loads区别

    相同点 dump 和 dumps 都实现了序列化 load 和 loads 都实现反序列化 变量从内存中变成可存储或传输的过程称之为序列化 序列化是将对象状态转化为可保存或可传输格式的过程. 变量内容 ...

  3. 【Python】Json Schema的使用【原创】

    Json Schema在Python中的应用 一. 背景 二.概述 三.介绍 四.Python中使用 五.例子 六.参考 一. 背景 之前在做容器发布系统的时候,在部署时需要对提交的deploymen ...

  4. 【python】json转csv

    需求:当同名文件夹下有多个json文件,批量转换到一个csv中 json中包含多层结构 ​ import osimport pandas as pd import json #同一个目录下读取多个js ...

  5. [转载] 【Python】向json文件中追加新的对象

    参考链接: python json 13: 解析json文件中的多个json对象 [Python]向json文件中追加新的对象 def get_json(path, write_path): file ...

  6. 【Python 身份证JSON数据读取】——身份证前六位地区码对照表文件(最全版-JSON文件)

    点个赞留个关注吧!! 1.生成身份证前六位地区码对照表JSON文件 2.python 读取JSON文件 提取码[1234] json文件下载 废话不多说,先上效果图 一.生成身份证json数据文件 先 ...

  7. 【cJson】 JSON格式详解

    0.前言 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式. 易于人阅读和编写.同时也易于机器解析和生成. 它基于JavaScript Programmin ...

  8. 【Python】Elasticsearch和elasticsearch_dsl

    [Python]Elasticsearch和elasticsearch_dsl 官网:https://elasticsearch-py.readthedocs.io/en/master/api.htm ...

  9. 【Python】开发笔记

    [Python]开发笔记 1. 开发工具篇 1)前言 2)VScode VScode搭建Python环境 简明教程 3)Pycharm 4)Visual Studio 5)Jupyter Lab/Ju ...

最新文章

  1. MFC中添加自己定义的消息
  2. 安装python模块时,遇到error: Unable to find vcvarsall.bat
  3. Shell——从hello world和echo命令开始
  4. 数组和集合的相互转换
  5. 汇编语言(三十四)之输出中文
  6. 关于配置Webapck的 exclude 不过滤 node_modules Babel却没有处理转换node_modules的源码
  7. 麦克风阵列声源定位 GCC-PHAT
  8. 不依赖浏览器控制台的JavaScript断点调试方法
  9. WPF DataGrid 根据某一特定内容进行交叉变色
  10. exp/imp 注释乱码问题或Oracle EXP-00091的解决方法
  11. java assert可以检查exception吗_PETCT检查可以排查大肠癌吗?
  12. Linux Server - NIS
  13. 分子重构技术_4. 串珠模型重构
  14. vim 的操作说明:
  15. 【转】ESL和ESR的基本認識
  16. 流媒体之色彩转换——RGB(X)与YUV之间转换
  17. NGUI渲染机制——从顶点和UV说起
  18. 摄影师没了?!生成式人工智能即将降维打击摄影行业
  19. viso 2013创建闪崩或异常退出
  20. unity 角度限制_Unity实现角度限制

热门文章

  1. C#中的数据类型转换
  2. java 查询表 并返回数据_ajax与java前后台传值及数据表查询解决一个bug的问题
  3. java 虚拟机的工作原理
  4. sklearn.naive_bayes
  5. html标签slot,HTML slot 标签
  6. python主线程执行_python 并发执行之多线程
  7. 126. Leetcode 剑指 Offer 46. 把数字翻译成字符串 (动态规划- 字符串系列)
  8. 88. Leetcode 剑指 Offer 14- I. 剪绳子 (动态规划-基础题)
  9. 文巾解题 27. 移除元素
  10. tableau可视化数据分析60讲(四)-tableau数据源操作数据提取