首頁 > 軟體

讀Json檔案生成pandas資料框詳情

2022-08-25 22:01:13

前言

本文講解如何載入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資料框內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com