dindizz's picture
Update app.py
002c75f verified
import pandas as pd
import requests
import gradio as gr
import os
# Constants
API_URL = 'https://api.electricitymap.org/v3/carbon-intensity/latest'
API_TOKEN = os.getenv('ELECTRICITYMAP_API_TOKEN')
# Define the data for NIFTY 50 company headquarters
data = {
"Company": ["Reliance Industries", "Tata Consultancy Services", "HDFC Bank", "Infosys", "Hindustan Unilever",
"ICICI Bank", "Kotak Mahindra Bank", "SBI", "Bharti Airtel", "HCL Technologies",
"Asian Paints", "Bajaj Finance", "ITC", "Adani Green Energy", "Axis Bank",
"Maruti Suzuki", "Larsen & Toubro", "Tata Motors", "Sun Pharma", "HDFC",
"Wipro", "UltraTech Cement", "Nestle India", "Adani Ports", "Bajaj Finserv",
"Titan Company", "Grasim Industries", "Mahindra & Mahindra", "Tech Mahindra", "Divi's Laboratories",
"JSW Steel", "Power Grid Corporation", "Tata Steel", "Britannia Industries", "Hindalco Industries",
"Eicher Motors", "Dr. Reddy's Laboratories", "Tata Consumer Products", "HDFC Life", "SBI Life Insurance",
"Hero MotoCorp", "Coal India", "Indian Oil Corporation", "Oil and Natural Gas Corporation", "Bharat Petroleum",
"Cipla", "Shree Cement", "Bajaj Auto", "IndusInd Bank", "NTPC"],
"Location": ["Mumbai, Maharashtra", "Mumbai, Maharashtra", "Mumbai, Maharashtra", "Bengaluru, Karnataka", "Mumbai, Maharashtra",
"Mumbai, Maharashtra", "Mumbai, Maharashtra", "Mumbai, Maharashtra", "New Delhi, Delhi", "Noida, Uttar Pradesh",
"Mumbai, Maharashtra", "Pune, Maharashtra", "Kolkata, West Bengal", "Ahmedabad, Gujarat", "Mumbai, Maharashtra",
"New Delhi, Delhi", "Mumbai, Maharashtra", "Mumbai, Maharashtra", "Mumbai, Maharashtra", "Mumbai, Maharashtra",
"Bengaluru, Karnataka", "Mumbai, Maharashtra", "Gurugram, Haryana", "Ahmedabad, Gujarat", "Pune, Maharashtra",
"Bengaluru, Karnataka", "Nagda, Madhya Pradesh", "Mumbai, Maharashtra", "Pune, Maharashtra", "Hyderabad, Telangana",
"Mumbai, Maharashtra", "New Delhi, Delhi", "Mumbai, Maharashtra", "Bengaluru, Karnataka", "Mumbai, Maharashtra",
"Gurugram, Haryana", "Hyderabad, Telangana", "Mumbai, Maharashtra", "Mumbai, Maharashtra", "Mumbai, Maharashtra",
"New Delhi, Delhi", "Kolkata, West Bengal", "New Delhi, Delhi", "New Delhi, Delhi", "Mumbai, Maharashtra",
"Mumbai, Maharashtra", "Kolkata, West Bengal", "Pune, Maharashtra", "Mumbai, Maharashtra", "New Delhi, Delhi"],
"Latitude": [19.0760, 19.0760, 19.0760, 12.9716, 19.0760,
19.0760, 19.0760, 19.0760, 28.6139, 28.5355,
19.0760, 18.5204, 22.5726, 23.0225, 19.0760,
28.6139, 19.0760, 19.0760, 19.0760, 19.0760,
12.9716, 19.0760, 28.4595, 23.0225, 18.5204,
12.9716, 23.5330, 19.0760, 18.5204, 17.3850,
19.0760, 28.6139, 19.0760, 12.9716, 19.0760,
28.4595, 17.3850, 19.0760, 19.0760, 19.0760,
28.6139, 22.5726, 28.6139, 28.6139, 19.0760,
19.0760, 22.5726, 18.5204, 19.0760, 28.6139],
"Longitude": [72.8777, 72.8777, 72.8777, 77.5946, 72.8777,
72.8777, 72.8777, 72.8777, 77.2090, 77.3910,
72.8777, 73.8567, 88.3639, 72.5714, 72.8777,
77.2090, 72.8777, 72.8777, 72.8777, 72.8777,
77.5946, 72.8777, 77.0266, 72.5714, 73.8567,
77.5946, 75.4254, 72.8777, 73.8567, 78.4867,
72.8777, 77.2090, 72.8777, 77.5946, 72.8777,
77.0266, 78.4867, 72.8777, 72.8777, 72.8777,
77.2090, 88.3639, 77.2090, 77.2090, 72.8777,
72.8777, 88.3639, 73.8567, 72.8777, 77.2090]
}
df = pd.DataFrame(data)
# Function to make API request
def get_carbon_intensity(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('carbonIntensity', 'N/A')
else:
return 'Error'
# Define the function to fetch carbon intensity for all companies
def fetch_carbon_intensities():
results = []
for index, row in df.iterrows():
lat, lon = row["Latitude"], row["Longitude"]
carbon_intensity = get_carbon_intensity(lat, lon)
results.append({
"Company": row["Company"],
"Location": row["Location"],
"Latitude": row["Latitude"],
"Longitude": row["Longitude"],
"Carbon Intensity": carbon_intensity
})
return pd.DataFrame(results)
# Define Gradio interface
def show_carbon_intensity_table():
result_df = fetch_carbon_intensities()
return result_df
gr_interface = gr.Interface(fn=show_carbon_intensity_table,
inputs=None,
outputs="dataframe",
title="Carbon Intensity by NIFTY 50 Company Headquarters",
description="Click the button below to see the latest carbon intensity for NIFTY 50 company headquarters.")
gr_interface.launch()