欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

對于復(fù)雜的JSON數(shù)據(jù)進行分析時,通常的做法是將JSON數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換為Pandas DataFrame,因為它可以幫助更方便地操作和可視化數(shù)據(jù)。在本文中,讓我們考慮不同的嵌套JSON數(shù)據(jù)結(jié)構(gòu),并使用內(nèi)置和自定義函數(shù)將它們扁平化。

Pandas有一個很好的內(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’},,默認值”raise“
  • sep - str,默認值“.”嵌套記錄將生成由指定分隔符分隔的名稱。
  • max_level - int,默認為None。要規(guī)格化的最大級別數(shù)(字典深度)。

JSON - > Pandas DataFrame示例

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

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

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

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

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選項將一個稍微復(fù)雜的JSON結(jié)構(gòu)扁平化為一個扁平表。在這個例子中,我們考慮了max_level為0,這意味著只扁平化JSON的第一層,并且可以對結(jié)果進行實驗。

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

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)

輸出

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

    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的前兩個級別扁平化,并可以對結(jié)果進行實驗。

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

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

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

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實現(xiàn)將嵌套JSON數(shù)據(jù)轉(zhuǎn)換DataFrame的詳細內(nèi)容,更多關(guān)于Pandas實現(xiàn)JSON數(shù)據(jù)轉(zhuǎn)DataFrame的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • python 制作網(wǎng)站小說下載器

    python 制作網(wǎng)站小說下載器

    這篇文章主要介紹了python 如何制作網(wǎng)站小說下載器,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2021-02-02
  • python網(wǎng)絡(luò)編程:socketserver的基本使用方法實例分析

    python網(wǎng)絡(luò)編程:socketserver的基本使用方法實例分析

    這篇文章主要介紹了python網(wǎng)絡(luò)編程:socketserver的基本使用方法,結(jié)合實例形式分析了python網(wǎng)絡(luò)編程中socketserver的基本功能、使用方法及操作注意事項,需要的朋友可以參考下
    2020-04-04
  • 詳解OpenCV執(zhí)行連通分量標記的方法和分析

    詳解OpenCV執(zhí)行連通分量標記的方法和分析

    在本教程中,您將學(xué)習(xí)如何使用?OpenCV?執(zhí)行連通分量標記和分析。具體來說,我們將重點介紹?OpenCV?最常用的連通分量標記函數(shù):cv2.connectedComponentsWithStats,感興趣的可以了解一下
    2022-08-08
  • 詳解PyQt5中Thread多線程的使用

    詳解PyQt5中Thread多線程的使用

    QThread是Qt線程類中最核心的底層類,這篇文章主要為大家介紹了PyQt5中Thread多線程的具體使用,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-08-08
  • Django中使用極驗Geetest滑動驗證碼過程解析

    Django中使用極驗Geetest滑動驗證碼過程解析

    這篇文章主要介紹了Django中使用極驗Geetest滑動驗證碼過程解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-07-07
  • Python類中的魔法方法之 __slots__原理解析

    Python類中的魔法方法之 __slots__原理解析

    這篇文章主要介紹了Python類中的魔法方法之 __slots__詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-08-08
  • anaconda jupyter不能導(dǎo)入安裝的lightgbm解決方案

    anaconda jupyter不能導(dǎo)入安裝的lightgbm解決方案

    這篇文章主要介紹了anaconda jupyter不能導(dǎo)入安裝的lightgbm解決方案,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • python實現(xiàn)telnet客戶端的方法

    python實現(xiàn)telnet客戶端的方法

    這篇文章主要介紹了python實現(xiàn)telnet客戶端的方法,分析了Python中telnetlib模塊實現(xiàn)telnet操作的方法,并實例敘述了Telnet客戶端的實現(xiàn)技巧,需要的朋友可以參考下
    2015-04-04
  • 對Tensorflow中的矩陣運算函數(shù)詳解

    對Tensorflow中的矩陣運算函數(shù)詳解

    今天小編就為大家分享一篇對Tensorflow中的矩陣運算函數(shù)詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • python切換hosts文件代碼示例

    python切換hosts文件代碼示例

    開發(fā)或者測試網(wǎng)站程序時,我們很多時候都會遇到多個hosts文件來回切換,windows的hosts文件目錄比較深,麻煩,因此,用python寫了個小腳本來簡化此功能
    2013-12-12

最新評論