dindizz's picture
Update app.py
349aad5 verified
import pandas as pd
import requests
import gradio as gr
import os
# Constants
API_URL = 'https://api.electricitymap.org/v3/power-breakdown/latest'
API_TOKEN = os.getenv('ELECTRICITYMAP_API_TOKEN')
# Define the data for company headquarters
data = {
"Company": ["Apple", "Microsoft", "NVIDIA", "Alphabet (Google)", "Amazon", "Saudi Aramco",
"Meta Platforms (Facebook)", "TSMC", "Berkshire Hathaway", "Eli Lilly",
"Tesla", "Broadcom", "Novo Nordisk", "JPMorgan Chase", "Walmart"],
"Location": ["Cupertino, California, USA", "Redmond, Washington, USA", "Santa Clara, California, USA",
"Mountain View, California, USA", "Seattle, Washington, USA", "Dhahran, Eastern Province, Saudi Arabia",
"Menlo Park, California, USA", "Hsinchu, Taiwan", "Omaha, Nebraska, USA", "Indianapolis, Indiana, USA",
"Palo Alto, California, USA", "San Jose, California, USA", "Bagsværd, Denmark",
"New York City, New York, USA", "Bentonville, Arkansas, USA"],
"Latitude": [37.3349, 47.6424, 37.3706, 37.4219, 47.6062, 26.3032,
37.4848, 24.7851, 41.2565, 39.7684, 37.3947, 37.3382,
55.7500, 40.7128, 36.3729],
"Longitude": [-122.0090, -122.1362, -121.9669, -122.0840, -122.3321, 50.1503,
-122.1484, 121.0177, -95.9345, -86.1581, -122.1503, -121.8863,
12.4500, -74.0060, -94.2088]
}
df = pd.DataFrame(data)
# Function to make API request
def get_power_breakdown(lat, lon):
headers = {'auth-token': API_TOKEN}
params = {'lat': lat, 'lon': lon}
response = requests.get(API_URL, headers=headers, params=params)
if response.status_code == 200:
return response.json().get('fossilFreePercentage', 'N/A')
else:
return 'Error'
# Define the function to fetch fossil-free percentage for all companies
def fetch_fossil_free_percentages():
results = []
for index, row in df.iterrows():
lat, lon = row["Latitude"], row["Longitude"]
fossil_free_percentage = get_power_breakdown(lat, lon)
results.append({
"Company": row["Company"],
"Location": row["Location"],
"Latitude": row["Latitude"],
"Longitude": row["Longitude"],
"Fossil-Free Percentage": fossil_free_percentage
})
return pd.DataFrame(results)
# Define Gradio interface
def show_fossil_free_table():
result_df = fetch_fossil_free_percentages()
return result_df
gr_interface = gr.Interface(fn=show_fossil_free_table,
inputs=None,
outputs="dataframe",
title="Fossil-Free Percentage by Company Headquarters",
description="Click the button below to see the latest fossil-free energy usage percentages for the top market cap company headquarters.")
gr_interface.launch()