hackathon / app.py
Ashar086's picture
Update app.py
79bdb89 verified
raw
history blame
4.89 kB
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 geospatial_visualization import GeospatialVisualizer
from sentiment_analysis import SentimentAnalyzer
from data_storytelling import DataStoryteller
from data_privacy import DataPrivacyTool
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.geospatial_visualizer = GeospatialVisualizer()
self.sentiment_analyzer = SentimentAnalyzer()
self.data_storyteller = DataStoryteller()
self.data_privacy_tool = DataPrivacyTool()
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!")
# Data cleaning
if st.button("Clean Data"):
self.data = self.cleaner.clean(self.data)
st.write(self.data.head())
# Visualization
if st.button("Generate Visualizations"):
visualizations = self.visualizer.select_visualizations(self.data)
for viz in visualizations:
st.pyplot(viz)
# Data Analysis
if st.button("Analyze Data"):
insights = self.analyzer.analyze(self.data)
st.write(insights)
# Natural Language Query
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)
# Predictive Analytics
if st.button("Run Predictive Analytics"):
prediction = self.predictive_analytics.predict(self.data)
st.write(prediction)
# Anomaly Detection
if st.button("Detect Anomalies"):
anomalies = self.anomaly_detector.detect(self.data)
st.write(anomalies)
# Time Series Forecasting
if st.button("Forecast Time Series"):
forecast = self.time_series_forecaster.forecast(self.data)
st.write(forecast)
# Geospatial Visualization
if st.button("Geospatial Visualization"):
geo_viz = self.geospatial_visualizer.visualize(self.data)
st.pyplot(geo_viz)
# Sentiment Analysis
if st.button("Analyze Sentiment"):
sentiment = self.sentiment_analyzer.analyze(self.data)
st.write(sentiment)
# Data Storytelling
if st.button("Generate Data Story"):
story = self.data_storyteller.generate_story(self.data)
st.write(story)
# Data Privacy Check
if st.button("Check Data Privacy"):
privacy_report = self.data_privacy_tool.check_privacy(self.data)
st.write(privacy_report)
# Report Generation
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()