一、基本概念
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-hant/n/156570.html