اذهب إلى المحتوى
  • 0

التحويل من json إلى Dataframe في pandas

Mohamed Elnemr

السؤال

أحاول إستخراج البيانات من موقع الكتروني (خرائط جوجل) كالتالي:

from urllib2 import Request, urlopen
import json

path1 = '40,-81.1'
request=Request('http://maps.googleapis.com/maps/api/elevation/json?locations='+path1+'&sensor=false')
response = urlopen(request)
elevations = response.read()

لكن البيانات التي ترجع من هذا الموقع تكون على شكل json، حاولت أن أقوم بقراءتها بهذا الشكل:

pd.read_json(elevations)

لكن هذا لا يحولها الى dataframe، كيف يمكنني تحويل json الى dataframe 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 0

إكما يمكنك القيام بذلك من خلال json_normalize كالتالي (بدون urllib2):

import requests
from pandas import json_normalize
url = ..
response = requests.get(url)
dictr = response.json()
recs = dictr['result']['records']
df = json_normalize(recs)
print(df)

أو كالتالي (ينصح بالطريقة الأولى):

#json.load من خلال JSON نقوم بقراءة بيانات 
f = 'jsondata.json'
with open(f) as j:
    dict_train = json.load(j.read())
#DataFrame إلى json تحويل مجموعة بيانات
df = pd.DataFrame.from_dict(dict_train, orient='index')
df.reset_index(level=0, inplace=True)
رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

يمكنك استخدام الدالة json_normalize() لتسطيح البيانات flatten العائدة من ال api بعد ذلك تحولها الى dataframe بسهوله، الكود التالى يوضح تلك الخطوات:

from urllib2 import Request, urlopen
import json

import pandas as pd    

path1 = '40,-81.1'
request=Request('http://maps.googleapis.com/maps/api/elevation/json?locations='+path1+'&sensor=false')
response = urlopen(request)
elevations = response.read()
data = json.loads(elevations)
df = pd.json_normalize(data['results'])

يمكنك كذلك تحويلها الى قاموس dictionary ثم تحويلها الى dataframe كالتالي:

train = pd.DataFrame.from_dict(data, orient='index')
train.reset_index(level=0, inplace=True)

اذا قمت بطباعة البيانات في الحالتين ستجدها على الشكل والصيغة dataframe.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...