İç içe JSON'larla çalışma

pandas ile Kolaylaştırılmış Veri Alımı

Amany Mahfouz

Instructor

İç içe JSON'lar

  • JSON, öznitelik-değer çiftlerine sahip nesneler içerir
  • Değerin kendisi bir nesne olduğunda JSON iç içedir
pandas ile Kolaylaştırılmış Veri Alımı

Yelp Business API dokümanlarından örnek JSON yanıtı

pandas ile Kolaylaştırılmış Veri Alımı

Örnek Yelp yanıtı; iç içe koordinat ve konum verileri vurgulanmış

pandas ile Kolaylaştırılmış Veri Alımı

Örnek Yelp yanıtı; iç içe kategori verileri vurgulanmış

pandas ile Kolaylaştırılmış Veri Alımı

Örnek Yelp yanıtı; işletmeler altında iç içe kayıtlar vurgulanmış

pandas ile Kolaylaştırılmış Veri Alımı
# İç içe veriler içeren sütunları yazdırın
print(bookstores[["categories", "coordinates", "location"]].head(3))
                                          categories  \
0   [{'alias': 'bookstores', 'title': 'Bookstores'}]   
1  [{'alias': 'bookstores', 'title': 'Bookstores'...   
2   [{'alias': 'bookstores', 'title': 'Bookstores'}]     

                                         coordinates  \
0  {'latitude': 37.7975997924805, 'longitude': -1...   
1  {'latitude': 37.7885846793652, 'longitude': -1...   
2  {'latitude': 37.7589836120605, 'longitude': -1...    

                                            location  
0  {'address1': '261 Columbus Ave', 'address2': '...  
1  {'address1': '50 2nd St', 'address2': '', 'add...  
2  {'address1': '866 Valencia St', 'address2': ''...
pandas ile Kolaylaştırılmış Veri Alımı

pandas.io.json

  • pandas.io.json alt modülü JSON okuma/yazma araçları sağlar
    • Kendi import ifadesi gerekir
  • json_normalize()
    • Sözlük/sözlük listesi alır (pd.DataFrame() gibi)
    • Yassılaştırılmış bir dataframe döndürür
    • Varsayılan sütun adı deseni: attribute.nestedattribute
    • sep bağımsız değişkeni ile farklı ayırıcı seçin
pandas ile Kolaylaştırılmış Veri Alımı

İç içe JSON verisi yükleme

import pandas as pd
import requests

from pandas.io.json import json_normalize
# Üstbilgileri, parametreleri ve API uç noktasını ayarlayın api_url = "https://api.yelp.com/v3/businesses/search" headers = {"Authorization": "Bearer {}".format(api_key)} params = {"term": "bookstore", "location": "San Francisco"}
# API çağrısını yapın ve JSON verisini çıkarın response = requests.get(api_url, headers=headers, params=params) data = response.json()
pandas ile Kolaylaştırılmış Veri Alımı
# Veriyi yassılaştırın ve _ ayırıcılarıyla dataframe'e yükleyin
bookstores = json_normalize(data["businesses"], sep="_")
print(list(bookstores))
['alias', 
 'categories',
 'coordinates_latitude',
 'coordinates_longitude',
 ...
 'location_address1',
 'location_address2',
 'location_address3',
 'location_city',
 'location_country',
 'location_display_address',
 'location_state',
 'location_zip_code',
 ...
 'url']
pandas ile Kolaylaştırılmış Veri Alımı

Derin iç içe veri

print(bookstores.categories.head())
0     [{'alias': 'bookstores', 'title': 'Bookstores'}]
1    [{'alias': 'bookstores', 'title': 'Bookstores'...
2     [{'alias': 'bookstores', 'title': 'Bookstores'}]
3     [{'alias': 'bookstores', 'title': 'Bookstores'}]
4    [{'alias': 'bookstores', 'title': 'Bookstores'...
Name: categories, dtype: object
pandas ile Kolaylaştırılmış Veri Alımı

Derin iç içe veri

  • json_normalize()
    • record_path: iç içe veriye giden öznitelik(ler) dizgesi/listesi
    • meta: dataframe'e yüklenecek diğer özniteliklerin listesi
    • meta_prefix: meta sütun adlarına eklenecek önek dizgesi
pandas ile Kolaylaştırılmış Veri Alımı

Derin iç içe veri

# Kategorileri yassılaştırın, işletme detaylarını ekleyin
df = json_normalize(data["businesses"],
                    sep="_",

record_path="categories",
meta=["name", "alias", "rating", ["coordinates", "latitude"], ["coordinates", "longitude"]],
meta_prefix="biz_")
pandas ile Kolaylaştırılmış Veri Alımı
print(df.head(4))
        alias               title                biz_name  \
0  bookstores          Bookstores   City Lights Bookstore   
1  bookstores          Bookstores  Alexander Book Company   
2  stationery  Cards & Stationery  Alexander Book Company   
3  bookstores          Bookstores       Borderlands Books   

                              biz_alias  biz_rating  biz_coordinates_latitude  \
0   city-lights-bookstore-san-francisco         4.5                 37.797600   
1  alexander-book-company-san-francisco         4.5                 37.788585   
2  alexander-book-company-san-francisco         4.5                 37.788585   
3       borderlands-books-san-francisco         5.0                 37.758984   

   biz_coordinates_longitude  
0                -122.406578  
1                -122.400631  
2                -122.400631  
3                -122.421638
pandas ile Kolaylaştırılmış Veri Alımı

Hadi pratik yapalım!

pandas ile Kolaylaştırılmış Veri Alımı

Preparing Video For Download...