讀Json文件生成pandas數據框詳情

前言

本文講解如何加載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)

到此這篇關於讀Json文件生成pandas數據框詳情的文章就介紹到這瞭,更多相關Json生成pandas數據框內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: