Akshayram1's picture
Update app.py
b51c72b verified
raw
history blame
2.46 kB
import pandas as pd
import openai
import streamlit as st
import matplotlib.pyplot as plt
# Analyze using OpenAI
def get_openai_insights(api_key, prompt):
openai.api_key = api_key
response = openai.Completion.create(
engine="text-davinci-003",
prompt=prompt,
max_tokens=500,
temperature=0.5
)
return response["choices"][0]["text"].strip()
# Streamlit app
def main():
st.title("Excel Data Visualization with OpenAI Insights")
# Input OpenAI API Key
api_key = st.text_input("Enter your OpenAI API Key", type="password")
if not api_key:
st.warning("Please enter your OpenAI API key to proceed.")
return
# File upload
excel_file = st.file_uploader("Upload the Excel File", type=["xls", "xlsx"])
if excel_file:
# Load Excel data
excel_data = pd.ExcelFile(excel_file)
st.sidebar.header("Select a Sheet to Visualize")
sheet_name = st.sidebar.selectbox("Sheet Name", excel_data.sheet_names)
if sheet_name:
data = pd.read_excel(excel_data, sheet_name=sheet_name)
st.subheader(f"Data from Sheet: {sheet_name}")
st.dataframe(data)
# Option to generate insights using OpenAI
st.header("Generate AI Insights")
if st.button("Get Insights from OpenAI"):
with st.spinner("Generating insights..."):
try:
data_sample = data.head(5).to_csv(index=False)
prompt = f"Analyze the following data and provide key insights:\n\n{data_sample}"
insights = get_openai_insights(api_key, prompt)
st.success("AI Insights Generated!")
st.text_area("AI Insights:", insights, height=200)
except openai.error.OpenAIError as e:
st.error(f"Error with OpenAI API: {e}")
# Visualize numeric data
st.header("Visualize Data")
numeric_cols = data.select_dtypes(include="number").columns
if numeric_cols.any():
col_to_plot = st.selectbox("Select a Column to Plot", numeric_cols)
if col_to_plot:
fig, ax = plt.subplots()
data[col_to_plot].plot(kind="bar", ax=ax, title=f"{col_to_plot} Analysis")
st.pyplot(fig)
if __name__ == "__main__":
main()