引言

本文主要介绍 Pandas 对 JSON 格式数据的读写,更多 Python 进阶系列文章,请参考 Python 进阶学习 玩转数据系列

内容提要:
JSON File Format
剖析 JSON Format
JSON 值的类型
JSON Data I/O Modules in Python
Pandas: read_json() and to_json()

JSON File Format

  1. JSON: JavaScript Object Notation
    ● 一个轻量级的数据交换格式
    ● 人类易读写
    ● 方便计算机解析和生成
    ● 文本格式跟语言完全无关
    ● 有其它许多语言类似的规范
  2. JSON 有两种结构:
    ● Object: 键值对
    也可以是 a record, struct, dictionary, hash table, keyed list, or associative array
    ● Array: 有序数组
    也可以是 vector, list, or sequence
  3. 文件扩展名
    ● filename.json

剖析 JSON Format

Object

• 一个无序的键值对集合 name:value
• 开始于 { , 结束于 }
• 每个键后面跟着冒号 :
• 每对键值对用逗号分隔 ,

Array

• 一个有序的集合:
• 开始于 [ , 结束于 ]
• 集合中的值用逗号分割 ,

举例:

JSON: Values, Numbers, and Strings

JSON 值的类型:

数字 number


字符串 String

JSON Data I/O Modules in Python

Module Installation / Load / Methods URL / Comment
json import json https://docs.python.org/3/library/json.html
simplejson pip install simplejson https://pypi.org/project/simplejson/
metamagic.json pip install metamagic.json https://pypi.org/project/metamagic.json/
json-tricks pip install json-tricks http://json-tricks.readthedocs.io/en/latest/
pandas import pandas as pd pd.read_json() df.to_json() https://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_json.html

Pandas: read_json() and to_json()

read_json()
通过参数 orient 的不同值来支持读取不同格式的 JSON 数据

df = pd.read_json (data, orient = ‘columns’ )

to_json()
通过参数 orient=attribute 来控制将数据写入到不同格式的 JSON 文件。

df.to_json (filename, orient = ‘columns’ )

参数 orient

orient = Series DataFrame Format
split dict like {index : [index], columns : [columns], data : [values]}
records list like [{column : value}, … , {column : value}]
index default dict like {index : {column : value}}
columns default dict like {column : { index : value }}
values NO just the values array

orient=‘records’: list like [{column : value}, … , {column : value}]

import pandas as pddata = '''[{"first": "Ann", "last": "Hunt", "age": 13},{"first": "John", "last": "Smith", "age": 10},{"first": "Tim", "last": "Geist", "age": 20}]
'''
df = pd.read_json(data, orient='records')
print("df:\n{}".format(df))
df.to_json("records.json", orient='records')

输出:

df:first   last  age
0   Ann   Hunt   13
1  John  Smith   10
2   Tim  Geist   20

生成的 records.json 内容

orient=‘split’: dict like {index : [index], columns : [cols], data : [vals]}

import pandas as pddata = '''{"columns": ["first", "last", "age"],"data": [["Ann", "Hunt", 13], ["John", "Smith", 10], ["Tim", "Geist", 20]],"index": [0, 1, 2]}
'''df = pd.read_json(data, orient='split')
print("df:\n{}".format(df))
df.to_json("split.json", orient='split')

输出:

df:first   last  age
0   Ann   Hunt   13
1  John  Smith   10
2   Tim  Geist   20

生成的 split.json 内容:

orient=‘index’: dict like {index : {column : value}}

import pandas as pddata = '''{"0":{"first": "Ann", "last": "Hunt", "age": 13},"1":{"first": "John", "last": "Smith", "age": 10},"2":{"first": "Tim", "last": "Geist", "age": 20},}
'''df = pd.read_json(data, orient='index')
print("df:\n{}".format(df))
df.to_json("index.json", orient='index')

输出:

df:first   last  age
0   Ann   Hunt   13
1  John  Smith   10
2   Tim  Geist   20

生成的 index.json 内容:

orient=‘columns’: dict like {column : {index : value}}

import pandas as pddata = '''{"first":{"0": "Ann", "1": "John", "2": "Tim"},"last":{"0": "Hunt", "1": "Smith", "2": "Geist"},"age":{"0": 13, "1": 10, "2": 20},}
'''df = pd.read_json(data, orient='columns')
print("df:\n{}".format(df))
df.to_json("columns.json", orient='columns')

输出:

df:first   last  age
0   Ann   Hunt   13
1  John  Smith   10
2   Tim  Geist   20

生成的 columns.json 内容:

orient=‘values’: just the values array

import pandas as pddata = '''[["Ann", "Hunt", 13],["John", "Smith", 10],["Tim", "Geist", 20]]
'''df = pd.read_json( data, orient = 'values' )
df.columns = ["first", "last", "age"]print("df:\n{}".format(df))
df.to_json("values.json", orient='values')

输出:

df:first   last  age
0   Ann   Hunt   13
1  John  Smith   10
2   Tim  Geist   20

生成的 values.json 内容:

Python 玩转数据 12 - 数据读写 Data I/O: Pandas 读写 JSON File Format相关推荐

  1. python txt文件读写 pandas_Python数据分析之Pandas读写外部数据文件!

    阅读目录 1 引言 2 文本文件(txt.csv) 2.1 读取数据 2.2 写入数据 3 excel文件 3.1 读取数据 3.2 写入数据 4 mysql数据库 5 mongodb数据库 1 引言 ...

  2. python玩转大数据_【小旭学长】大数据博士教你用python玩转时空大数据

    好消息!好消息!手把手教你用python玩大数据 小旭学长的python大数据教程完结撒花,共26P录制完毕,总时长4小时.每10分钟的视频的录制加剪辑时间加起来都要两小时以上,讲得很细但是节奏也很快 ...

  3. 数据分析从零开始实战,Pandas读写Excel/XML数据

    点击查看第一篇文章: 数据分析从零开始实战,Pandas读取HTML页面+数据处理解析_ 数据分析 从零开始到实战,Pandas读写CSV数据_ 数据分析 从零开始到实战,Pandas读写CSV数据 ...

  4. Tensorflow2.* 加载和预处理数据之用 tf.data 加载磁盘图片数据(4)

    Tensorflow2.* 机器学习基础知识篇: 对服装图像进行分类 使用Tensorflow Hub对未处理的电影评论数据集IMDB进行分类 Keras 机器学习基础知识之对预处理的电影评论文本分类 ...

  5. Python数据分析之Pandas读写外部数据文件

    点击上方"Datawhale",选择"星标"公众号 第一时间获取价值内容 阅读目录 1 引言 2 文本文件(txt.csv) 2.1 读取数据 2.2 写入数据 ...

  6. python 按列读取数据并写入txt_Python数据分析之Pandas读写外部数据文件!

    阅读目录 1 引言 2 文本文件(txt.csv) 2.1 读取数据 2.2 写入数据 3 excel文件 3.1 读取数据 3.2 写入数据 4 mysql数据库 5 mongodb数据库 1 引言 ...

  7. Python玩转大数据-张敏-专题视频课程

    Python玩转大数据-221人已学习 课程介绍         该课程采用时下后的编程语言Python讲解,囊括了当前火的大数据技术Spark/Hadoop/Hive知识,学习环境是基于Docker ...

  8. python与excel做数据可视化-我在工作中是怎么玩数据的—数据可视化系列教程—Python篇...

    一. 为什么是Python? Python现在已经成为数据科学的语言!基于 Python 代码实现批量化,流程化的数据探索与汇报!按照地产大佬***的话讲--就是重复性的工作直接用Python搞定就可 ...

  9. python好学吗mooc中文网-2020年大学mooc用Python玩转数据作业答案

    2020年大学mooc用Python玩转数据作业答案 更多相关问题 一台电脑先涨价着一%,后降价2一%,这台电脑一现价同原价相比是()A.一样的B.降低了C.提高了直接写出9数 3÷地下%=6×3下% ...

  10. python好学吗mooc中文网-用Python玩转数据

    spContent=欢迎来到<用Python玩转数据>,这是第10次开课,大壮老师会尽量用非计算机专业(需要有一些编程基础,最好学过一门程序设计语言,但不一定是Python)小伙伴们能听懂 ...

最新文章

  1. java bag集合_集合基于数组的实现:ArrayBag.java
  2. numpy使用[]语法索引二维numpy数组中指定指定行之后所有数据行的数值内容(accessing rows in numpy array after specifc row)
  3. python读取xml标注坐标_遍历文件 创建XML对象 方法 python解析XML文件 提取坐标计存入文件...
  4. DataSet导出Excel,比以往的方法导出的Excel外观更加好看
  5. Java基础笔记 – 增强的for循环For each循环 自动装箱拆箱 可变参数
  6. 第五十四天 how can I 坚持
  7. 如何取消高亮显示重复项_如何将重复数据突出显示?
  8. Tensorflow学习—— 预创建的 Estimator
  9. (原创)面向对象的系统对接接口编写。第4篇
  10. 如何使用windows自带的远程协助
  11. open cv+C++错误及经验总结(十)
  12. 服务器设置系统盘分页,服务器设置系统盘分页
  13. [网络安全自学篇] 九十四.《Windows黑客编程技术详解》之提权技术(令牌权限提升和Bypass UAC)
  14. php 转gbk,php 中文怎么转gbk
  15. Lightroom Classic CC 2019 for Mac永久破解激活方法(含lr cc 2019破解补丁)
  16. 搬寝室 ----- 动态规划
  17. Dtop环球嘉年华全球Web3.0分布式私域电商生态发展峰会圆满举办
  18. 在IE8中使用建行企业网银的解决方法
  19. 《楚门的世界》观后感
  20. 行测测评(二)——图形找规律技巧

热门文章

  1. 2022,一名85后程序猿之感慨,加油
  2. 架设自己的邮件服务器
  3. 求两条轨迹间的hausdorff距离_【每周三题】高二【136】分子间作用力和分子势能...
  4. 小弟需要一个能显示播放音频的各频率音量大小(不知道叫什么东东)的控件~!...
  5. UNITY性能优化✨MeshBaker在Unity中的使用教程
  6. 《雍正皇帝》文化专有词翻译策略的研究现状(Baker)
  7. BootStrap快速入门
  8. bugk学习1:宽带信息泄露misc
  9. 红军协同对抗蓝军问题
  10. 计算机图画大赛作品六年级,小学学生电脑绘画比赛活动方案-20210407071921.docx-原创力文档...