File size: 5,751 Bytes
47cec27 79bdb89 47cec27 79bdb89 168a3a3 |
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 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 |
import streamlit as st
from data_cleaning import DataCleaner
from visualization import VisualizationSelector
from data_analysis import DataAnalyzer
from report_generator import ReportGenerator
from api_integration import APIConnector
from natural_language_query import NLQueryEngine
from predictive_analytics import PredictiveAnalytics
from anomaly_detection import AnomalyDetector
from time_series_forecasting import TimeSeriesForecaster
from sentiment_analysis import SentimentAnalyzer
from data_storytelling import DataStoryteller
import pandas as pd
class DataAutomationApp:
def __init__(self):
self.data = None
self.cleaner = DataCleaner()
self.visualizer = VisualizationSelector()
self.analyzer = DataAnalyzer()
self.report_generator = ReportGenerator()
self.api_connector = APIConnector()
self.nl_query_engine = NLQueryEngine()
self.predictive_analytics = PredictiveAnalytics()
self.anomaly_detector = AnomalyDetector()
self.time_series_forecaster = TimeSeriesForecaster()
self.sentiment_analyzer = SentimentAnalyzer()
self.data_storyteller = DataStoryteller()
def load_data(self, file):
if file.name.endswith('.csv'):
self.data = pd.read_csv(file)
elif file.name.endswith(('.xls', '.xlsx')):
self.data = pd.read_excel(file)
else:
st.error("Unsupported file format. Please upload a CSV or Excel file.")
def run(self):
st.title("Data Automation and Visualization App")
# File upload
uploaded_file = st.file_uploader("Choose a CSV or Excel file", type=["csv", "xlsx"])
if uploaded_file is not None:
self.load_data(uploaded_file)
if self.data is not None:
st.success("Data loaded successfully!")
# Sidebar for feature selection
st.sidebar.title("Select a Feature")
feature = st.sidebar.radio(
"Choose what you'd like to do:",
("Clean Data", "Generate Visualizations", "Analyze Data",
"Natural Language Query", "Run Predictive Analytics",
"Detect Anomalies", "Forecast Time Series",
"Analyze Sentiment", "Generate Data Story",
"Generate Report")
)
# Based on the selected feature, execute corresponding functionality
if feature == "Clean Data":
st.subheader("Clean Data")
if st.button("Clean Data"):
self.data = self.cleaner.clean(self.data)
st.write(self.data.head())
elif feature == "Generate Visualizations":
st.subheader("Generate Visualizations")
if st.button("Generate Visualizations"):
visualizations = self.visualizer.select_visualizations(self.data)
for viz in visualizations:
st.pyplot(viz)
elif feature == "Analyze Data":
st.subheader("Analyze Data")
if st.button("Analyze Data"):
insights = self.analyzer.analyze(self.data)
st.write(insights)
elif feature == "Natural Language Query":
st.subheader("Ask a Question About Your Data")
query = st.text_input("Ask a question about your data:")
if query:
result = self.nl_query_engine.process_query(query, self.data)
st.write(result)
elif feature == "Run Predictive Analytics":
st.subheader("Run Predictive Analytics")
if st.button("Run Predictive Analytics"):
prediction = self.predictive_analytics.predict(self.data)
st.write(prediction)
elif feature == "Detect Anomalies":
st.subheader("Detect Anomalies")
if st.button("Detect Anomalies"):
anomalies = self.anomaly_detector.detect(self.data)
st.write(anomalies)
elif feature == "Forecast Time Series":
st.subheader("Forecast Time Series")
if st.button("Forecast Time Series"):
forecast = self.time_series_forecaster.forecast(self.data)
st.write(forecast)
elif feature == "Analyze Sentiment":
st.subheader("Analyze Sentiment")
if st.button("Analyze Sentiment"):
sentiment = self.sentiment_analyzer.analyze(self.data)
st.write(sentiment)
elif feature == "Generate Data Story":
st.subheader("Generate Data Story")
if st.button("Generate Data Story"):
story = self.data_storyteller.generate_story(self.data)
st.write(story)
elif feature == "Generate Report":
st.subheader("Generate Report")
if st.button("Generate Report"):
report = self.report_generator.generate(self.data)
st.download_button(
label="Download Report",
data=report,
file_name="data_report.txt",
mime="text/plain"
)
if __name__ == "__main__":
app = DataAutomationApp()
app.run()
|