Akshayram1's picture
Update app.py
f1ff50c verified
import streamlit as st
import pandas as pd
import plotly.express as px
import openai
# Setup OpenAI API
openai.api_key = st.text_input("Enter your OpenAI API key", type="password")
# App Title
st.title("Bi-Weekly Report Visualizer")
# Upload Excel File
uploaded_file = st.file_uploader("Upload your Excel file", type=["xls", "xlsx"])
if uploaded_file is not None:
# Load data
df = pd.read_excel(uploaded_file)
# Display raw data
st.write("### Raw Data")
st.dataframe(df)
# Extract relevant columns (assume "Week", "Category", and "Hours" columns exist in the sheet)
if {"Week", "Category", "Hours"}.issubset(df.columns):
# Summarize data for visualization
summary = df.groupby(["Week", "Category"]).sum().reset_index()
# Visualize data as a pie chart for each week
st.write("### Weekly Time Allocation")
weeks = summary["Week"].unique()
for week in weeks:
week_data = summary[summary["Week"] == week]
fig = px.pie(week_data, values="Hours", names="Category", title=f"Week: {week}")
st.plotly_chart(fig)
# Generate descriptive insights using OpenAI
if st.button("Generate Insights"):
# Get summary in text form
insights_data = summary.to_string(index=False)
# OpenAI prompt
prompt = f"Provide insights about time allocation trends in the following data:\n\n{insights_data}"
try:
response = openai.Completion.create(
engine="text-davinci-003",
prompt=prompt,
max_tokens=150
)
st.write("### Insights")
st.text(response.choices[0].text.strip())
except Exception as e:
st.error(f"Failed to generate insights: {e}")
else:
st.error("The Excel file doesn't have the required columns: 'Week', 'Category', and 'Hours'.")