tft每日頭條

 > 生活

 > sql和json的區别

sql和json的區别

生活 更新时间:2024-11-26 02:28:18

作者:Python進階者

來源:Python爬蟲與數據挖掘

一、前言

前幾天在Python白銀交流群【HugoLB】問了一個Python處理json文件的問題,提問截圖如下:

sql和json的區别(大佬們有沒有辦法把這個json變成sql)1

二、實現過程

這裡【此類生物】提示使用pandas中的read_json()函數來處理,【dcpeng】給出了代碼如下圖所示:

sql和json的區别(大佬們有沒有辦法把這個json變成sql)2

看上去好像也沒啥問題,但是并不是粉絲想要的。

sql和json的區别(大佬們有沒有辦法把這個json變成sql)3

【dcpeng】還想到了jsonpath,另外正則表達式應該也可以做,代碼如下:

import json import jsonpath obj = json.load(open('EN_soccer_straight.json', 'r', encoding='utf-8')) follower = jsonpath.jsonpath(obj, '$..data') print(follower)

sql和json的區别(大佬們有沒有辦法把這個json變成sql)4

後來【此類生物】也給了一份代碼,如下所示:

sql和json的區别(大佬們有沒有辦法把這個json變成sql)5

但是仍然不是他想要的,因為擔心數據處理太麻煩。

sql和json的區别(大佬們有沒有辦法把這個json變成sql)6

如果是這樣的話,需要讀取後再處理下才行。

後來他自己給了一個代碼,看上去沒啥問題了,代碼如下:

from pandas.io.json import json_normalize import pandas import json f = open('./clean/data/EN_soccer_straight.json', 'r') data = json.loads(f.read()) f.close() def dat(x): if x == None: return None else: return x['data'] df = pandas.DataFrame.from_dict( orient='index', columns=['home', 'away', 'matchup_id', "-3.5", "-3.25", "-3.0", "-2.75", "-2.5", "-2.25", "-2.0", "-1.75", "-1.5", "-1.25", "-1.0", "-0.75", "-0.5", "-0.25", "0.0", "0.25", "0.5", "0.75", "1.0", "1.25", "1.5", "1.75", "2.0", "2.25", "2.5", "2.75", "3.0", "3.25", "3.5", "3.75", "4.0", "4.25"], data=data) for odds in ["-3.5", "-3.25", "-3.0", "-2.75", "-2.5", "-2.25", "-2.0", "-1.75", "-1.5", "-1.25", "-1.0", "-0.75", "-0.5", "-0.25", "0.0", "0.25", "0.5", "0.75", "1.0", "1.25", "1.5", "1.75", "2.0", "2.25", "2.5", "2.75", "3.0", "3.25", "3.5", "3.75", "4.0", "4.25"]: df[odds] = df[odds].apply(dat) print(df.head(10)) df.to_csv('out.csv')

直接用這個代碼對原始的json文件進行處理,還是會報錯的,後來才知道他自己稍微改了下數據結構。

sql和json的區别(大佬們有沒有辦法把這個json變成sql)7

最終得到的數據如下所示:

sql和json的區别(大佬們有沒有辦法把這個json變成sql)8

這樣看上去确實清晰了很多,接下來開站相關的數據分析工作,就可以順利進行了。

最後補充個知識點,json.dumps()方法将字典轉換為json格式的字符串;json.loads()将json格式的字符串轉換為字典格式。另外,json模塊也可以與文件進行交互,使用dump()方法和load()方法。

三、總結

大家好,我是皮皮。這篇文章主要盤點了一個Python列表推導式處理的問題,文中針對該問題給出了具體的解析和代碼實現,幫助粉絲順利解決了問題。

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved