從多個角度詳解dataframe轉json

一、基本概念

dataframe是Pandas中的一種數據結構,可以看作是由不同類型的列組成的表格,每列可以是不同的類型(整數、浮點數、字符串等)。而json是一種輕量級的數據交換格式,常用於Web前端與後端進行數據傳輸,其支持多種數據類型,包括字符串、數字、對象、數組等。

dataframe轉json就是將dataframe中的數據轉換為json格式,以方便應用程序的數據傳輸、處理和存儲。

二、數據轉換方法

有多種方法可以將dataframe轉為json格式,常用的方法有以下幾種:

1. to_json()

to_json()是pandas中用於將dataframe轉為json格式的函數,其語法如下:

df.to_json(path_or_buf=None, orient=None, date_format=None, 
           double_precision=10, force_ascii=True, 
           date_unit='ms', default_handler=None, 
           lines=False, compression='infer', 
           index=True, **kwds)

參數解釋:

  • path_or_buf:寫入文件的文件路徑或文件類型,默認為None。
  • orient:轉換方式。’split’, ‘records’, ‘index’, ‘columns’, ‘values’。
  • date_format:日期格式。
  • double_precision:設定浮點數精度,默認為10。
  • force_ascii:強制ASCII編碼。
  • date_unit:設定日期單位,支持’d’,’s’,’ms’,’us’,’ns’。
  • default_handler:默認處理方式。
  • lines:按行輸出。
  • compression:設定壓縮格式,支持’gzip’和’bz2’。
  • index:將索引寫入json文件中。
  • kwds:其他參數。

示例:

>>> import pandas as pd
>>> data = {'name': ['Tom', 'Jack', 'Steve'], 'age': [25, 18, 36]}
>>> df = pd.DataFrame(data)
>>> df.to_json("dataframe.json")

以上代碼將dataframe寫入到dataframe.json文件中。

2. json_normalize()

json_normalize()是pandas中用於將json格式數據轉換為dataframe格式的函數,也可以用於將嵌套的json轉為dataframe。在此同時我們可以利用to_json()來實現dataframe轉json,其語法如下:

pd.json_normalize(data, record_path=None, meta=None, 
                  meta_prefix=None, record_prefix=None, 
                  errors='raise', sep='.')

參數解釋:

  • data:待轉化的json文件。
  • record_path:數據記錄路徑。
  • meta:與記錄數據合併的元數據。
  • meta_prefix:將meta附加到列名前綴。
  • record_prefix:將record附加到列名前綴。
  • errors:錯誤處理方式。
  • sep:記錄路徑分隔符。

示例:

>>> import json
>>> from pandas.io.json import json_normalize
>>> with open('dataframe.json', 'r') as f:
      data = json.load(f)
>>> df = json_normalize(data)
>>> result = df.to_json(orient="records")

以上代碼將dataframe.json文件中的數據讀入data中,利用json_normalize()函數將數據轉成dataframe的形式,最後利用to_json()函數將data轉成json格式的數據。

3. DataFrame.T.to_dict() + json.dumps()

此方法需要先將dataframe進行轉置,進而用to_dict()方法轉為字典類型,再用json.dumps()轉為json格式。其語法如下:

>>> import json
>>> df.T.to_dict().values()
>>> json.dumps(df.T.to_dict().values())

示例:

>>> import pandas as pd
>>> import json
>>> data = {'name': ['Tom', 'Jack', 'Steve'], 'age': [25, 18, 36]}
>>> df = pd.DataFrame(data)
>>> result = json.dumps(df.T.to_dict().values())

結果是一個JSON數組。這裡,我們轉換後的JSON字典中,用列名做為字典的key,列作為值。當然,這也取決於DataFrame所傳入的數據格式。

三、實例演示

下面給出一個更完整的演示例子,包括dataframe轉json和json轉dataframe,和一些基本操作。

>>> import pandas as pd
>>> import json

# 創建dataframe
>>> data = {'name': ['Tom', 'Jack', 'Steve'], 'age': [25, 18, 36]}
>>> df = pd.DataFrame(data)

# dataframe轉json
>>> json_str = df.to_json(orient='records')
>>> json_data = json.loads(json_str)
>>> print(json_data)

# json轉dataframe
>>> new_df = pd.DataFrame.from_records(json_data)
>>> print(new_df)

# 寫入json文件
>>> with open('dataframe.json', 'w') as f:
      f.write(json_str)

# 讀取json文件
>>> with open('dataframe.json', 'r') as f:
      json_data = json.load(f)
>>> new_df = pd.DataFrame.from_records(json_data)
>>> print(new_df)

四、總結

dataframe轉json是一個比較常見的操作,有多種方法可以實現,我們可以根據具體的需求和數據格式選擇最合適的方法。希望本文能給讀者帶來一些幫助。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/156570.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-18 01:56
下一篇 2024-11-18 01:56

相關推薦

發表回復

登錄後才能評論