python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > Json生成pandas数据框

读Json文件生成pandas数据框详情

作者:梦想画家

这篇文章主要介绍了读Json文件生成pandas数据框详情,文章围绕主题展开详细的内容介绍,具有一定的参考价值,感兴趣的小伙伴可以参考一下

前言

本文讲解如何加载json文件或字符串为pandas数据框。pandas把json数据分成几种典型类型,希望对你实际数据应用开发有所启示。

有时可能需要转换json文件位pandas数据框。使用pandas内置的read_json()函数很容易实现,

其语法如下:

read_json(‘path’, orient=’index’)

下面通过几个示例进行说明。

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)

到此这篇关于读Json文件生成pandas数据框详情的文章就介绍到这了,更多相关Json生成pandas数据框内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文