File size: 2,713 Bytes
7bf1eec a199ef4 c93a752 a199ef4 c93a752 7bf1eec a199ef4 c93a752 7bf1eec c93a752 7bf1eec c93a752 7bf1eec c93a752 7bf1eec c93a752 7bf1eec c93a752 7bf1eec c93a752 7bf1eec c93a752 7bf1eec c93a752 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 |
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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"
# Initialize Groq API client
client = Groq(api_key=GROQ_API_KEY)
# Function to analyze energy usage
def analyze_energy_usage(data, household_id=None):
if household_id:
# Filter data for a specific household
household_data = data[data["Household ID"] == household_id]
else:
household_data = data
# Aggregate data
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()
)
# Generate a summary report
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
# Function to generate recommendations using Groq's API
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}"
# Streamlit App
st.title("Energy Usage Analysis Report Generator")
# Upload Dataset
uploaded_file = st.file_uploader("Upload your energy usage dataset (CSV)", type="csv")
if uploaded_file:
# Load dataset
data = pd.read_csv(uploaded_file)
st.write("Dataset Preview:", data.head())
# User Input
household_id = st.text_input("Enter Household ID for specific analysis (optional)")
# Analyze Data
if st.button("Analyze Energy Usage"):
with st.spinner("Analyzing..."):
report_summary, filtered_data = analyze_energy_usage(data, household_id)
st.subheader("Energy Usage Summary")
st.text(report_summary)
# Generate recommendations
st.subheader("Recommendations")
context = filtered_data.to_string(index=False)
recommendations = generate_recommendations(context)
st.text(recommendations)
# Footer
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.
"""
)
|