如何在 Python 中將 Pandas DataFrame 轉換為 JSON?


Pandas 是一個流行的 Python 庫,用於資料處理和分析。在使用 Pandas 的過程中,一個常見的任務是將 DataFrame 轉換為 JSON(JavaScript 物件表示法)格式,這是一種輕量級的資料交換格式,廣泛用於 Web 應用程式。從 Pandas DataFrame 到 JSON 的轉換對於資料共享、資料儲存以及不同程式語言之間的資料傳輸非常有用。

在本教程中,我們將討論如何使用內建的 Pandas 函式將 Pandas DataFrame 轉換為 JSON,探索轉換的不同選項和引數,並提供處理特定場景的示例。

將 Pandas DataFrame 轉換為 JSON

在 Python 的 pandas 庫中,我們可以利用 DataFrame.to_json() 函式將 pandas DataFrame 轉換為 JSON 格式。此函式提供了各種自定義選項,使我們能夠獲得所需的 JSON 格式。在接下來的部分中,我們將深入探討此函式的可接受引數,並更詳細地檢查自定義選項。

以下是一些可在 DataFrame.to_json() 函式中用於將 pandas DataFrame 轉換為 JSON 的重要引數及其可能值:

  • path_or_buf - 生成的 JSON 將儲存到的輸出位置。它可以是檔案路徑或緩衝區物件。預設值為 None。

  • orient - 生成的 JSON 的格式。可能的值為 'split'、'records'、'index'、'columns' 和 'values'。預設值為 'columns'。

  • date_format - DataFrame 中類似日期列使用的日期格式。它可以是任何有效的日期時間格式字串。預設值為 None。

  • double_precision - JSON 中浮點數的精度。它可以是一個整數,指定要包含的小數位數。預設值為 10。

  • force_ascii - 是否將非 ASCII 字元編碼為其 Unicode 轉義序列。預設值為 True。

  • date_unit - 類似日期列中時間戳的單位。可能的值為 's'(秒)、'ms'(毫秒)和 'us'(微秒)。預設值為 'ms'。

讓我們來看幾個示例,以更好地瞭解 DataFrame.to_json() 函式的使用方法。

示例 1:基本用法

請考慮以下程式碼。在此程式碼中,我們建立了一個名為 array_data 的 2×2 NumPy 陣列,其中包含四個字串值。然後,我們將此陣列轉換為名為 df 的 pandas DataFrame,列名為 'col1' 和 'col2'。最後,我們使用 to_json() 函式將 DataFrame 轉換為 JSON 字串,並使用 print() 函式將其列印到控制檯。

import numpy as np
import pandas as pd

# create a NumPy array with two rows and two columns
array_data = np.array([['1', '2'], ['3', '4']])

# convert the NumPy array into a pandas DataFrame with column names
df = pd.DataFrame(array_data, columns=['col1', 'col2'])

# convert the DataFrame to a JSON string
json_data = df.to_json()

# print the resulting JSON string
print(json_data)

輸出

執行後,將產生以下輸出

{"col1":{"0":"1","1":"3"},"col2":{"0":"2","1":"4"}}

示例 2:將 DataFrame 轉換為 JSON

現在,讓我們看一個如何使用這些引數在 DataFrame.to_json() 函式中將 pandas DataFrame 轉換為 JSON 的示例。

請考慮以下程式碼。在此示例中,我們將 path_or_buf 引數設定為 'output.json' 以將 JSON 資料儲存到名為 'output.json' 的檔案中。我們將 orient 引數設定為 'records' 以將 JSON 格式化為記錄列表。

我們還將 date_format 引數設定為 'iso' 以對類似日期的列使用 ISO 日期格式,並將 double_precision 引數設定為 2 以包含浮點數的兩位小數。最後,我們將 force_ascii 設定為 False 以保留非 ASCII 字元,並將 date_unit 設定為 'ms' 以使用毫秒作為時間戳的單位。

import pandas as pd

# create a sample DataFrame
df = pd.DataFrame({
   'Name': ['John', 'Jane', 'Bob'],
   'Age': [30, 25, 40],
   'Salary': [50000.0, 60000.0, 70000.0],
   'Join_date': ['2022-01-01', '2021-06-15', '2020-11-30']
})

# convert the DataFrame to JSON
json_data = df.to_json(
   path_or_buf='output.json',
   orient='records',
   date_format='iso',
   double_precision=2,
   force_ascii=False,
   date_unit='ms'
)

# print the resulting JSON
print(json_data)

輸出

執行後,它將建立一個名為“output.json”的新檔案,檔案內容如下所示

[
   { "Name": "John", "Age": 30, "Salary": 50000.0, "Join_date": "2022-01-01" },
   { "Name": "Jane", "Age": 25, "Salary": 60000.0, "Join_date": "2021-06-15" },
   { "Name": "Bob", "Age": 40, "Salary": 70000.0, "Join_date": "2020-11-30" }
]

結論

總之,在 Python 中將 pandas DataFrame 轉換為 JSON 格式是一個簡單的過程,可以使用 pandas 庫提供的 to_json() 方法來完成。

此方法允許各種自定義,例如指定 JSON 輸出格式、日期格式和精度。它還提供將生成的 JSON 字串寫入檔案的功能,從而可以輕鬆地與其他系統共享資料。透過對 to_json() 方法及其引數的基本瞭解,您可以輕鬆地將 pandas DataFrame 轉換為 JSON 格式,以用於各種應用程式。

更新於: 2023年4月18日

1K+ 閱讀量

開啟您的 職業生涯

透過完成課程獲得認證

立即開始
廣告