Spaces:
Sleeping
Sleeping
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() | |