Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
ven/*
653 changes: 653 additions & 0 deletions 01_api_calls/.ipynb_checkpoints/assignment_notebook-checkpoint.ipynb

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
import pandas as pd
import streamlit as st
import urllib.request
import json


"""
## Dashboard Template

This simple dashboard provides tables from the saferproducts.gov API.

- `remedy` is how consumers were compensated for the recall
- `mnf_country` is the place where the product originated

We focus on products in which the word "gas" appeared in the Recall Title.
"""

url = 'https://www.saferproducts.gov/RestWebServices/Recall'
#query = '?format=json&ProductType=Phone' #29
#query = '?format=json&ProductType=Grill' #70
#query = '?format=json&ProductType=Exercise' # 91
query = '?format=json&RecallTitle=Gas' # 216

response = urllib.request.urlopen(url+query)
response_bytes = response.read()
data = json.loads(response_bytes)
response.close()

df = pd.DataFrame.from_dict(data)
print(df.shape)

df.head()

temp = df['ManufacturerCountries']
clean_values = []
for i in range(len(temp)):
if len(temp[i])==1 :
clean_values.append( str(temp[i][0]['Country']) )
elif len(temp[i])>1:
countries = []
for j in range(len(temp[i])):
countries.append( temp[i][j]['Country'] )
clean_values.append( str(countries) )
else:
clean_values.append('')
df['mnf_country'] = clean_values
st.write(df['mnf_country'].value_counts())

temp = df['RemedyOptions']
clean_values = []
for i in range(len(temp)):
if len(temp[i])>0:
values = []
for j in range(len(temp[i])):
values.append(temp[i][j]['Option'] )
clean_values.append(values[0])
else:
clean_values.append('')
df['remedy'] = clean_values
st.write(df['remedy'].value_counts())

pd.set_option('display.max_rows', None)
pd.set_option('display.max_columns', None)
xtab = pd.crosstab( df['remedy'],df['mnf_country'] )

# Create streamlit output:
st.write(xtab)
35 changes: 35 additions & 0 deletions 01_api_calls/api_eda.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
import pandas as pd
import requests
import streamlit as st
import urllib.request
import json

url = 'https://wizard-world-api.herokuapp.com/' # Location of the API
query = 'Houses' # The query
response = urllib.request.urlopen(url+query)
response_bytes = response.read()

data = json.loads(response_bytes) # Convert response to json
df = pd.DataFrame.from_dict(data)

houses = {}

for field in data:
traits = []
for trait in field['traits']:
traits.append(trait['name'])
houses[field['name']] = traits


for house in houses:
print(houses[house])


st.set_page_config(page_title="Hogwarts Houses and Traits")
st.markdown("<h1 style='text-align: center; color: #9c27b0;'>Hogwarts Houses and Their Traits</h1>", unsafe_allow_html=True)

for house in houses:
st.subheader(f"{house} Traits")
for trait in houses[house]:
st.write(f"- {trait}")
st.write("---")
922 changes: 645 additions & 277 deletions 01_api_calls/assignment_notebook.ipynb

Large diffs are not rendered by default.

30 changes: 30 additions & 0 deletions 01_api_calls/remedy.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
import pandas as pd
import requests
import streamlit as st
import urllib.request
import json

url = 'https://www.saferproducts.gov/RestWebServices/' # Location of the API
query = 'Recall?format=json&ProductType=Exercise' # The query
response = urllib.request.urlopen(url+query)
response_bytes = response.read()
data = json.loads(response_bytes) # Convert response to json

# Conduct analysis:
df = pd.DataFrame.from_dict(data)
temp = df['RemedyOptions']
clean_values = []
for i in range(len(temp)):
if len(temp[i])>0:
values = []
for j in range(len(temp[i])):
values.append(temp[i][j]['Option'] )
clean_values.append(values)
else:
clean_values.append('')
df['remedy'] = clean_values
remedy_counts = df['remedy'].value_counts()
# Create streamlit output:
st.title('Remedy Statistics')
# Create bar chart displaying data
st.bar_chart(remedy_counts)
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
,title,price,year,link,style,age
0,> nokia - comes w/ all accessories needed incl. extra battery <,0,,https://charlottesville.craigslist.org/mob/d/charlottesville-nokia-comes-all/7788090327.html,missing,
1,samsung galaxy a11 - t-mobile,75,,https://charlottesville.craigslist.org/mob/d/charlottesville-samsung-galaxy-a11/7783598361.html,missing,
2,iphone 15 pro max 512gb unlocked with sim slot applecare+ included!,1200,,https://charlottesville.craigslist.org/mob/d/charlottesville-iphone-15-pro-max-512gb/7777373194.html,missing,
3,series 9 apple watch,308,,https://charlottesville.craigslist.org/mob/d/orange-series-apple-watch/7783251866.html,missing,
4,samsung galaxy z fold 3 (silver) - gently used,600,,https://charlottesville.craigslist.org/mob/d/charlottesville-samsung-galaxy-fold/7782645934.html,missing,
5,iphone 15 pro max 512gb unlocked with sim slot applecare+ included!,1200,,https://charlottesville.craigslist.org/mob/d/charlottesville-iphone-15-pro-max-512gb/7779847344.html,missing,
6,esr halolock magnetic wireless car charger,10,,https://charlottesville.craigslist.org/mob/d/free-union-esr-halolock-magnetic/7779928622.html,missing,
1,751 changes: 1,751 additions & 0 deletions 02_scraping/.ipynb_checkpoints/just_code-checkpoint.ipynb

Large diffs are not rendered by default.

Loading