读Json文件生成pandas数据框详情
作者:梦想画家 发布时间:2023-01-11 19:29:01
前言
本文讲解如何加载json文件或字符串为pandas数据框。pandas把json数据分成几种典型类型,希望对你实际数据应用开发有所启示。
有时可能需要转换json文件位pandas数据框。使用pandas内置的read_json()函数很容易实现,
其语法如下:
read_json(‘path’, orient=’index’)
path: json文件的路径
orient: json文件的格式描述,缺省是
index
,还有其他选型:split, records, columns, values
。
下面通过几个示例进行说明。
records格式
假设json文件my_file.json的格式如下:
[
{
"points": 25,
"assists": 5
},
{
"points": 12,
"assists": 7
},
{
"points": 15,
"assists": 7
},
{
"points": 19,
"assists": 12
}
]
我们使用pandas的函数read_json,只要只从orient参数位records:
# 加载json文件,生成pandas数据框
df = pd.read_json('data/json_file.json', orient='records')
# 查看数据框
print(df)
输出结果:
points assists
0 25 5
1 12 7
2 15 7
3 19 12
index格式
假设json文件格式为:
{
"0": {
"points": 25,
"assists": 5
},
"1": {
"points": 12,
"assists": 7
},
"2": {
"points": 15,
"assists": 7
},
"3": {
"points": 19,
"assists": 12
}
}
与上面实现代码一样,仅需要修改orient=‘index’:
import pandas as pd
df = pd.read_json("data/my_file.json", orient='index')
print(df)
输出结果:
points assists
0 25 5
1 12 7
2 15 7
3 19 12
columns 类型
假设json文件格式为:
{
"points": {
"0": 25,
"1": 12,
"2": 15,
"3": 19
},
"assists": {
"0": 5,
"1": 7,
"2": 7,
"3": 12
}
}
加载代码修改orient参数为’columns’:
import pandas as pd
df = pd.read_json("data/my_file.json", orient='columns')
print(df)
结果与上面一致。
values格式
假设json文件代码如下:
[
[
25,
5
],
[
12,
7
],
[
15,
7
],
[
19,
12
]
]
加载代码如下:
import pandas as pd
df = pd.read_json("data/my_file.json", orient='values')
print(df)
输出结果:
0 1
0 25 5
1 12 7
2 15 7
3 19 12
split 参数示例
下面看split参数示例:
import pandas as pd
# 示例数据
data = '{"columns":["col 1","col 2"], "index":["row 1","row 2"], "data":[["a","b"],["c","d"]]}'
df = pd.read_json(data, orient='split')
print(df)
输出交叉表形式结果:
col 1 col 2
row 1 a b
row 2 c d
如果不指定index,则行自动生成序号:
import pandas as pd
data = '{"columns":["col 1","col 2"], "data":[["a","b"],["c","d"]]}'
df = pd.read_json(data, orient='split')
print(df)
输出结果:
col 1 col 2
0 a b
1 c d
压缩与编码
使用compression参数可以解压并载入json文件,参数选型有:‘zip’, ‘gzip’, ‘bz2’, ‘zstd’。如果指定zip,则确保文件为zip文件格式,None表示不解压。
使用 encoding
指定自定义编码,缺省为 UTF-8 编码。
假设my_file.zip压缩文件格式为:
[
[
25,
5
],
[
12,
7
],
[
15,
7
],
[
19,
12
]
]
载入代码:
import pandas as pd
df = pd.read_json("data/my_file.zip", orient='values', compression='zip')
print(df)
来源:https://blog.csdn.net/neweastsun/article/details/125125565
猜你喜欢
- 接着上一篇学习:https://www.jb51.net/article/70528.htm七、MySQL数据库Schema设计的性能优化高
- 一、前言首先说,Python中一切皆对象,老生常谈。还有,Python提供了许多特殊方法、元类等等这样的“元编程”机制。像给对象动态添加属性
- 回文数字是很有意思的数字,不管从最高位开始念,还是从个位开始念,最终结果都一样,有一种对称美。下面是回文数字的函数判断方式:def is_p
- 问题1:使用.net2005自带的SQL-Express连接不上。解决方法:1.网络防火墙阻止数据库连接;2.默认SQL-Express没有
- Microsoft office Access Database Engine 错误 '80040e14' Insert I
- 很多web开发者或许都遇到过这样的问题,程序莫名奇怪出现“不能执行已释放Script的代码”,错误行1,列1.对于这种消息描述不着边,行列描
- 代码如下import numpy as npfrom matplotlib import pyplot as plt# 用numpy生成数据
- 1.打开apache的httpd.conf文件,找到# Virtual hosts#Include conf/extra/httpd-vho
- 前言: 在 MySQL 运维过程中,锁等待和死锁问题是令各位 DBA 及开发同学非常头痛的事。出现此类问题会造成业务回滚、卡顿等故
- 前置条件确保mysql的版本是5.7+一、新建mysql表增加json字段二、pojo类package com.cxstar.domain;
- 翻译说明:这是Solid State Group网站上的一篇很友好的文章,解决了我在设计中遇到的很多问题,故在此我翻译其文,并对原作者表示非
- 同事在学mybatis时,遇到了一个问题就是,使用char类型字段作为查询条件时一直都查不出数据,其他类型的则可以。 使用的数据库
- 正则表达式有两种基本的操作,分别是匹配和替换。匹配就是在一个文本字符串中搜索匹配一特殊表达式;替换就是在一个字符串中查找并替换匹
- 1. 一个指令定义对象可以提供如下几个钩子函数(均为可选)bind:只调用一次,指令第一次绑定到元素时调用。在这里可以进行一次性的初始化设置
- title: Python 装饰器装饰类中的方法comments: truedate: 2017-04-17 20:44:31tags: [
- 今天使用import pandasusers = pandas.read_csv("H:\python\data analysis
- 删除字段从Model中删除一个字段要比添加容易得多。 删除字段,仅仅只要以下几个步骤: 删除字段,然后重
- 在执行任何查询时,SQL Server都会将数据读取到内存,数据使用之后,不会立即释放,而是会缓存在内存Buffer中,当再次执行相同的查询
- K折交叉交叉验证的过程如下以200条数据,十折交叉验证为例子,十折也就是将数据分成10组,进行10组训练,每组用于测试的数据为:数据总条数/
- 误区 #21:数据库损坏可以通过重启SQL Server或是Windows,或是附加和分离数据库解决 错误 SQL Server中没有任何一