|
import os |
|
import pandas as pd |
|
import numpy as np |
|
import streamlit as st |
|
from groq import Groq |
|
|
|
GROQ_API_KEY = "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" |
|
|
|
|
|
client = Groq(api_key=GROQ_API_KEY) |
|
|
|
|
|
def analyze_energy_usage(data, household_id=None): |
|
if household_id: |
|
|
|
household_data = data[data["Household ID"] == household_id] |
|
else: |
|
household_data = data |
|
|
|
|
|
if household_data.empty: |
|
return "No data available for the specified Household ID.", None |
|
|
|
|
|
total_usage = household_data["Energy Usage (kWh)"].sum() |
|
avg_cost = household_data["Cost"].mean() |
|
peak_time_period = ( |
|
household_data.groupby("Time Period")["Energy Usage (kWh)"] |
|
.sum() |
|
.idxmax() |
|
) |
|
|
|
|
|
report_summary = f""" |
|
Total Energy Usage: {total_usage} kWh |
|
Average Cost: ${avg_cost:.2f} |
|
Peak Usage Time Period: {peak_time_period} |
|
""" |
|
return report_summary, household_data |
|
|
|
|
|
def generate_recommendations(context): |
|
try: |
|
response = client.chat.completions.create( |
|
messages=[ |
|
{ |
|
"role": "user", |
|
"content": f"Based on the following data:\n{context}\nProvide energy-saving recommendations and insights." |
|
} |
|
], |
|
model="llama3-8b-8192", |
|
stream=False, |
|
) |
|
return response.choices[0].message.content |
|
except Exception as e: |
|
return f"An error occurred: {e}" |
|
|
|
|
|
st.title("Energy Usage Analysis Report Generator") |
|
|
|
|
|
uploaded_file = st.file_uploader("Upload your energy usage dataset (CSV)", type="csv") |
|
if uploaded_file: |
|
|
|
data = pd.read_csv(uploaded_file) |
|
st.write("Dataset Preview:", data.head()) |
|
|
|
|
|
household_id = st.text_input("Enter Household ID for specific analysis (optional)") |
|
|
|
|
|
if st.button("Analyze Energy Usage"): |
|
with st.spinner("Analyzing..."): |
|
report_summary, filtered_data = analyze_energy_usage(data, household_id) |
|
|
|
if filtered_data is None: |
|
st.warning(report_summary) |
|
else: |
|
st.subheader("Energy Usage Summary") |
|
st.text(report_summary) |
|
|
|
|
|
st.subheader("Recommendations") |
|
context = filtered_data.to_string(index=False) |
|
recommendations = generate_recommendations(context) |
|
st.text(recommendations) |
|
|
|
|
|
st.sidebar.title("About") |
|
st.sidebar.info( |
|
""" |
|
This app generates energy usage reports and recommendations based on uploaded data. |
|
Built with Streamlit and powered by Groq's language model. |
|
""" |
|
) |
|
|