最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python?Pandas實(shí)現(xiàn)將嵌套JSON數(shù)據(jù)轉(zhuǎn)換DataFrame

 更新時(shí)間:2024年01月28日 10:01:39   作者:python收藏家  
對于復(fù)雜的JSON數(shù)據(jù)進(jìn)行分析時(shí),通常的做法是將JSON數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換為Pandas?DataFrame,所以本文就來看看將嵌套JSON數(shù)據(jù)轉(zhuǎn)換為Pandas?DataFrame的具體方法吧

對于復(fù)雜的JSON數(shù)據(jù)進(jìn)行分析時(shí),通常的做法是將JSON數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換為Pandas DataFrame,因?yàn)樗梢詭椭奖愕夭僮骱涂梢暬瘮?shù)據(jù)。在本文中,讓我們考慮不同的嵌套JSON數(shù)據(jù)結(jié)構(gòu),并使用內(nèi)置和自定義函數(shù)將它們扁平化。

Pandas有一個(gè)很好的內(nèi)置函數(shù)json_normalize(),可以將簡單到中等半結(jié)構(gòu)化的嵌套JSON結(jié)構(gòu)扁平化為數(shù)據(jù)表。

語法: pandas.json_normalize(data, errors=’raise’, sep=’.’, max_level=None)

參數(shù):

  • data - 字典或字典列表
  • errors - {‘raise’, ‘ignore’},,默認(rèn)值”raise“
  • sep - str,默認(rèn)值“.”嵌套記錄將生成由指定分隔符分隔的名稱。
  • max_level - int,默認(rèn)為None。要規(guī)格化的最大級別數(shù)(字典深度)。

JSON - > Pandas DataFrame示例

大多數(shù)通過從Web提取的數(shù)據(jù)都是JSON數(shù)據(jù)類型的形式,因?yàn)镴SON是在Web應(yīng)用程序中傳輸數(shù)據(jù)的首選數(shù)據(jù)類型。首選JSON的原因是,由于文件大小很小,它非常輕量級,可以在HTTP請求和響應(yīng)中來回發(fā)送。

下面是我們可以在Python中扁平化嵌套json的示例:

示例1:Pandas json_normalize函數(shù)

考慮一個(gè)嵌套字典列表,其中包含有關(guān)學(xué)生及其分?jǐn)?shù)的詳細(xì)信息。在這個(gè)JSON數(shù)據(jù)結(jié)構(gòu)上使用pandas json_normalize,將其扁平化為一個(gè)扁平表,如圖所示

import pandas as pd

data = [
	{"Roll no": 1,
	"student": {"first_name": "Ram", "last_name": "kumar"}
	},
	{"student": {"English": "95", "Math": "88"}
	},
	{"Roll no": 2,
	"student": {"first_name": "Joseph", "English": "90", "Science": "82"}
	},
	{"Roll no": 3,
	"student": {"first_name": "abinaya", "last_name": "devi"},
	"student": {"English": "91", "Math": "98"}
	},
]

df = pd.json_normalize(data)
print(df)

輸出

   Roll no student.first_name student.last_name student.English student.Math student.Science
0        1                Ram            kumar            NaN          NaN             NaN
1      NaN                NaN              NaN             95           88             NaN
2        2             Joseph              NaN             90          NaN              82
3        3            abinaya             devi             91           98             NaN

示例2:使用max_level=0在Pandas中展平嵌套的JSON

現(xiàn)在讓我們使用max_level選項(xiàng)將一個(gè)稍微復(fù)雜的JSON結(jié)構(gòu)扁平化為一個(gè)扁平表。在這個(gè)例子中,我們考慮了max_level為0,這意味著只扁平化JSON的第一層,并且可以對結(jié)果進(jìn)行實(shí)驗(yàn)。

在這里,我們考慮了一個(gè)JSON格式的不同個(gè)人健康記錄的示例。

import pandas as pd

???????data = [
    {
        "id": 1,
        "candidate": "Roberto mathews",
        "health_index": {"bmi": 22, "blood_pressure": 130},
    },
    {"candidate": "Shane wade", "health_index": {"bmi": 28, "blood_pressure": 160}},
    {
        "id": 2,
        "candidate": "Bruce tommy",
        "health_index": {"bmi": 31, "blood_pressure": 190},
    },
]
pd.json_normalize(data, max_level=0)

輸出

由于我們只使用了一個(gè)層次的扁平化,第二個(gè)層次被保留為鍵值對

    id    candidate    health_index
0    1.0    Roberto mathews    {'bmi': 22, 'blood_pressure': 130}
1    NaN    Shane wade    {'bmi': 28, 'blood_pressure': 160}
2    2.0    Bruce tommy    {'bmi': 31, 'blood_pressure': 190}

示例3:使用max_level=1在Pandas中展平嵌套的JSON

現(xiàn)在讓我們使用與上面相同的JSON數(shù)據(jù)結(jié)構(gòu),max_level為1,這意味著將JSON的前兩個(gè)級別扁平化,并可以對結(jié)果進(jìn)行實(shí)驗(yàn)。

import pandas as pd
 
data = [
    {
        "id": 1,
        "candidate": "Roberto mathews",
        "health_index": {"bmi": 22, "blood_pressure": 130},
    },
    {"candidate": "Shane wade", "health_index": {"bmi": 28, "blood_pressure": 160}},
    {
        "id": 2,
        "candidate": "Bruce tommy",
        "health_index": {"bmi": 31, "blood_pressure": 190},
    },
]
pd.json_normalize(data, max_level=1)

輸出

    id    candidate    health_index.bmi    health_index.blood_pressure
0    1.0    Roberto mathews    22    130
1    NaN    Shane wade    28    160
2    2.0    Bruce tommy    31    190

示例4:將Meta參數(shù)傳遞給json_normalize

最后,讓我們考慮一個(gè)深度嵌套的JSON結(jié)構(gòu),通過將Meta參數(shù)傳遞給json_normalize函數(shù),可以將其轉(zhuǎn)換為數(shù)據(jù)表,如下所示。

這里,在下面的代碼中,我們已經(jīng)將JSON必須解析到數(shù)據(jù)表的時(shí)間順序傳遞給了它。在下面的代碼中,我們首先建議解析部門鍵,然后是公司和標(biāo)語,然后,我們將management和CEO鍵作為嵌套列表傳遞,表明它們必須作為單個(gè)字段解析。

import pandas as pd
data = [
    {
        "company": "Google",
        "tagline": "Dont be evil",
        "management": {"CEO": "Sundar Pichai"},
        "department": [
            {"name": "Gmail", "revenue (bn)": 123},
            {"name": "GCP", "revenue (bn)": 400},
            {"name": "Google drive", "revenue (bn)": 600},
        ],
    },
    {
        "company": "Microsoft",
        "tagline": "Be What's Next",
        "management": {"CEO": "Satya Nadella"},
        "department": [
            {"name": "Onedrive", "revenue (bn)": 13},
            {"name": "Azure", "revenue (bn)": 300},
            {"name": "Microsoft 365", "revenue (bn)": 300},
        ],
    },

???????]
result = pd.json_normalize(
    data, "department", ["company", "tagline", ["management", "CEO"]]
)
result

輸出

          name  revenue (bn)   company         tagline management.CEO
0        Gmail           123    Google    Dont be evil  Sundar Pichai
1          GCP           400    Google    Dont be evil  Sundar Pichai
2  Google drive           600    Google    Dont be evil  Sundar Pichai
3     Onedrive            13  Microsoft  Be What's Next  Satya Nadella
4        Azure           300  Microsoft  Be What's Next  Satya Nadella
5  Microsoft 365           300  Microsoft  Be What's Next  Satya Nadella

以上就是Python Pandas實(shí)現(xiàn)將嵌套JSON數(shù)據(jù)轉(zhuǎn)換DataFrame的詳細(xì)內(nèi)容,更多關(guān)于Pandas實(shí)現(xiàn)JSON數(shù)據(jù)轉(zhuǎn)DataFrame的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • python用fsolve、leastsq對非線性方程組求解

    python用fsolve、leastsq對非線性方程組求解

    這篇文章主要為大家詳細(xì)介紹了python用fsolve、leastsq對非線性方程組進(jìn)行求解,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-12-12
  • python tkinter組件擺放方式詳解

    python tkinter組件擺放方式詳解

    這篇文章主要介紹了python tkinter組件擺放方式詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-09-09
  • Python中創(chuàng)建表格詳細(xì)過程

    Python中創(chuàng)建表格詳細(xì)過程

    這篇文章主要介紹了Python中創(chuàng)建表格,在python中使用tabulate庫來創(chuàng)建表格,并針對輸出形式進(jìn)行不斷改進(jìn)來美化輸出效果,并給出了代碼示例。需要的小伙伴可以參考一下
    2022-02-02
  • python使用opencv實(shí)現(xiàn)馬賽克效果示例

    python使用opencv實(shí)現(xiàn)馬賽克效果示例

    這篇文章主要介紹了python使用opencv實(shí)現(xiàn)馬賽克效果,結(jié)合實(shí)例形式分析了Python使用cv2模塊操作圖片實(shí)現(xiàn)馬賽克效果的相關(guān)技巧,需要的朋友可以參考下
    2019-09-09
  • python分塊讀取大數(shù)據(jù),避免內(nèi)存不足的方法

    python分塊讀取大數(shù)據(jù),避免內(nèi)存不足的方法

    今天小編就為大家分享一篇python分塊讀取大數(shù)據(jù),避免內(nèi)存不足的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12
  • Python小工具之消耗系統(tǒng)指定大小內(nèi)存的方法

    Python小工具之消耗系統(tǒng)指定大小內(nèi)存的方法

    今天小編就為大家分享一篇Python小工具之消耗系統(tǒng)指定大小內(nèi)存的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12
  • Python虛擬環(huán)境venv的使用方法

    Python虛擬環(huán)境venv的使用方法

    venv 是 Python 里的一個(gè)標(biāo)準(zhǔn)工具,它的主要功能是幫助用戶管理和控制虛擬環(huán)境,venv 的使用方法其實(shí)非常簡單,下面我將詳細(xì)介紹如何創(chuàng)建虛擬環(huán)境,如何激活虛擬環(huán)境,以及如何退出虛擬環(huán)境的操作步驟,需要的朋友可以參考下
    2024-03-03
  • python threading模塊操作多線程介紹

    python threading模塊操作多線程介紹

    這篇文章主要介紹了python threading模塊操作多線程介紹,本文給出簡單使用實(shí)例,需要的朋友可以參考下
    2015-04-04
  • pandas庫中?DataFrame的用法小結(jié)

    pandas庫中?DataFrame的用法小結(jié)

    這篇文章主要介紹了pandas庫中?DataFrame的用法,利用pandas.DataFrame可以構(gòu)建表格,通過列標(biāo)屬性調(diào)用列對象,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2023-05-05
  • python字符串的index和find的區(qū)別詳解

    python字符串的index和find的區(qū)別詳解

    這篇文章主要介紹了python字符串的index和find的區(qū)別,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-06-06

最新評論

沭阳县| 石门县| 鄱阳县| 太康县| 永平县| 大埔县| 城固县| 沂水县| 韩城市| 商南县| 安阳县| 祁阳县| 仁化县| 昌宁县| 霸州市| 顺昌县| 平顶山市| 辽宁省| 建德市| 哈尔滨市| 长岛县| 榆林市| 高台县| 兴和县| 灵丘县| 渭南市| 萨嘎县| 宁波市| 内江市| 绍兴市| 万宁市| 汉沽区| 偃师市| 长子县| 张家港市| 桐柏县| 黎川县| 定州市| 建昌县| 三原县| 洪泽县|