import numpy as np
import matplotlib.pyplot as plt

class DataAnalysisApp:
    def __init__(self, data):
        self.data = data
    
    def perform_analysis(self):
        # Realizar cálculos complejos y análisis estadísticos
        analysis_results = {
            "mean": np.mean(self.data),
            "median": np.median(self.data),
            "std_dev": np.std(self.data),
            # Agregar más estadísticas según sea necesario
        }
        return analysis_results
    
    def visualize_data(self):
        # Visualizar los datos analizados a través de gráficos y cuadros
        plt.figure(figsize=(10, 6))
        plt.hist(self.data, bins=20, color='skyblue', edgecolor='black')
        plt.title('Histograma de Datos')
        plt.xlabel('Valores')
        plt.ylabel('Frecuencia')
        plt.grid(True)
        plt.show()

# Ejemplo de uso
if __name__ == "__main__":
    # Datos de ejemplo (pueden ser sustituidos por tus propios datos)
    data = np.random.normal(loc=0, scale=1, size=1000)
    
    # Crear instancia de la aplicación de análisis de datos
    app = DataAnalysisApp(data)
    
    # Realizar análisis de datos
    analysis_results = app.perform_analysis()
    print "Resultados del análisis:"
    for key, value in analysis_results.items():
        print "{0}: {1}".format(key, value)
    
    # Visualizar los datos
    app.visualize_data()
