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()