如何在 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 格式,以用於各種應用程式。