Python – analiza danych z Rest API z użyciem biblioteki Pandas

Python – analiza danych z Rest API z użyciem biblioteki Pandas

Ten wpis ma na celu pokazać jak w Pythonie szybko zanalizować dane pochodzące z Rest API. Użyjemy do tego celu biblioteki Pandas! Pod adresem:

http://dummy.restapiexample.com/api/v1/employees

znajduje się publiczne, przykładowe API z którego pobierzemy dane i poddamy je analizie. API to zwraca informację o pracownikach w formacie json;

{
    "data": [
        {
            "employee_age": "61", 
            "employee_name": "Tiger Nixon", 
            "employee_salary": "320800", 
            "id": "1", 
            "profile_image": ""
        }, 
        {
            "employee_age": "63", 
            "employee_name": "Garrett Winters", 
            "employee_salary": "170750", 
            "id": "2", 
            "profile_image": ""
        }, 
        {
            "employee_age": "66", 
            "employee_name": "Ashton Cox", 
            "employee_salary": "86000", 
            "id": "3", 
            "profile_image": ""
        }, 
    ...
    ], 
    "status": "success"
}

importujemy przydatne biblioteki:

import json
import urllib
import pandas

Za pomocą json.load ładujemy dane z podanego adresu, w wyniku otrzymujemy słownik, za pomocą json.dumps tworzymy na podstawie słownika JSON String:

url    = "http://dummy.restapiexample.com/api/v1/employees"
output = json.load(urllib.urlopen(url))
dump   = json.dumps(output["data"])

Tworzymy ramkę panda (obiekt DataFrame) – dwuwymiarowa struktura z etykietami, mogąca przechowywać kolumny z różnymi typami danych:

data_frame =  pandas.DataFrame(json.loads(dump))

na podstawie danych źródłowych chcemy uzyskać informację jaka jest suma pensji wszystkich pracowników, w tym celu należy dokonać rzutowania pensji na typ całkowity:

data_frame_int_salary = data_frame.astype({'employee_salary': 'int32'})
print data_frame_int_salary.loc[:,["employee_salary"]].sum()

w wyniku otrzymujemy sumę:

employee_salary 6644770
dtype: int64

cały skrypt przedstawia się następująco:

import json
import urllib
import pandas
 
url                   = "http://dummy.restapiexample.com/api/v1/employees"
output                = json.load(urllib.urlopen(url))
dump                  = json.dumps(output["data"])
data_frame            = pandas.DataFrame(json.loads(dump))
data_frame_int_salary = data_frame.astype({'employee_salary': 'int32'})
print data_frame_int_salary.loc[:,["employee_salary"]].sum()

szybko i sprawnie udało się uzyskać wynik! 😉

Leave a comment

Your email address will not be published.


*