Skip to content

Instantly share code, notes, and snippets.

@daradecic
Created June 26, 2021 12:34
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save daradecic/6eb27d5f6a4ee944b330df40ceec934c to your computer and use it in GitHub Desktop.
Save daradecic/6eb27d5f6a4ee944b330df40ceec934c to your computer and use it in GitHub Desktop.
import json
import requests
import pandas as pd
from datetime import datetime
def extract(url: str) -> dict:
res = requests.get(url)
if not res:
raise Exception('No data fetched!')
return json.loads(res.content)
def transform(data: dict) -> pd.DataFrame:
transformed = []
for user in data:
transformed.append({
'ID': user['id'],
'Name': user['name'],
'Username': user['username'],
'Email': user['email'],
'Address': f"{user['address']['street']}, {user['address']['suite']}, {user['address']['city']}",
'PhoneNumber': user['phone'],
'Company': user['company']['name']
})
return pd.DataFrame(transformed)
def load(data: pd.DataFrame, path: str) -> None:
data.to_csv(path_or_buf=path, index=False)
if __name__ == '__main__':
users = extract(url='https://jsonplaceholder.typicode.com/users')
df_users = transform(users)
load(data=df_users, path=f'data/users_{int(datetime.now().timestamp())}.csv')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment