读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

标签:Json,文件,生成,pandas,数据框
0
投稿

猜你喜欢

  • python3.6+django2.0开发一套学员管理系统

    2022-11-10 14:15:21
  • Python3爬虫关于识别检验滑动验证码的实例

    2021-08-25 02:17:37
  • 详解链接的rel与target

    2007-11-05 18:25:00
  • 在Python中操作列表之List.append()方法的使用

    2021-07-07 04:09:45
  • 用Python下载一个网页保存为本地的HTML文件实例

    2023-04-15 18:41:53
  • vue通信方式EventBus的实现代码详解

    2024-05-10 14:16:38
  • Golang分布式应用定时任务示例详解

    2024-02-12 06:23:19
  • pytorch下使用LSTM神经网络写诗实例

    2022-03-12 13:21:43
  • css hack简易的“独享”与“交集”

    2008-08-31 20:17:00
  • MySQL IFNULL判空问题解决方案

    2024-01-21 13:23:10
  • mysql 卡死 大部分线程长时间处于sending data的状态

    2024-01-23 06:43:48
  • 基于Python获取城市近7天天气预报

    2023-04-02 08:59:35
  • 基于IE下ul li 互相嵌套时的bug,排查,解决过程以及心得介绍

    2024-04-19 10:42:32
  • 如何改良你的CSS代码编写结构

    2008-09-29 16:03:00
  • mysql 字符串正则表达式及说明

    2024-01-13 17:47:59
  • Python中def()函数的实战练习题

    2023-02-13 02:04:54
  • CSS的优先级与特殊性

    2008-06-24 11:36:00
  • python实现简单的学生管理系统

    2022-11-25 08:34:04
  • HTML 5 正在改变 Web

    2008-09-15 08:20:00
  • python 制作网站小说下载器

    2021-06-07 23:04:42
  • asp之家 网络编程 m.aspxhome.com