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()
aW1wb3J0IG51bXB5IGFzIG5wCmltcG9ydCBtYXRwbG90bGliLnB5cGxvdCBhcyBwbHQKCmNsYXNzIERhdGFBbmFseXNpc0FwcDoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkYXRhKToKICAgICAgICBzZWxmLmRhdGEgPSBkYXRhCiAgICAKICAgIGRlZiBwZXJmb3JtX2FuYWx5c2lzKHNlbGYpOgogICAgICAgICMgUmVhbGl6YXIgY8OhbGN1bG9zIGNvbXBsZWpvcyB5IGFuw6FsaXNpcyBlc3RhZMOtc3RpY29zCiAgICAgICAgYW5hbHlzaXNfcmVzdWx0cyA9IHsKICAgICAgICAgICAgIm1lYW4iOiBucC5tZWFuKHNlbGYuZGF0YSksCiAgICAgICAgICAgICJtZWRpYW4iOiBucC5tZWRpYW4oc2VsZi5kYXRhKSwKICAgICAgICAgICAgInN0ZF9kZXYiOiBucC5zdGQoc2VsZi5kYXRhKSwKICAgICAgICAgICAgIyBBZ3JlZ2FyIG3DoXMgZXN0YWTDrXN0aWNhcyBzZWfDum4gc2VhIG5lY2VzYXJpbwogICAgICAgIH0KICAgICAgICByZXR1cm4gYW5hbHlzaXNfcmVzdWx0cwogICAgCiAgICBkZWYgdmlzdWFsaXplX2RhdGEoc2VsZik6CiAgICAgICAgIyBWaXN1YWxpemFyIGxvcyBkYXRvcyBhbmFsaXphZG9zIGEgdHJhdsOpcyBkZSBncsOhZmljb3MgeSBjdWFkcm9zCiAgICAgICAgcGx0LmZpZ3VyZShmaWdzaXplPSgxMCwgNikpCiAgICAgICAgcGx0Lmhpc3Qoc2VsZi5kYXRhLCBiaW5zPTIwLCBjb2xvcj0nc2t5Ymx1ZScsIGVkZ2Vjb2xvcj0nYmxhY2snKQogICAgICAgIHBsdC50aXRsZSgnSGlzdG9ncmFtYSBkZSBEYXRvcycpCiAgICAgICAgcGx0LnhsYWJlbCgnVmFsb3JlcycpCiAgICAgICAgcGx0LnlsYWJlbCgnRnJlY3VlbmNpYScpCiAgICAgICAgcGx0LmdyaWQoVHJ1ZSkKICAgICAgICBwbHQuc2hvdygpCgojIEVqZW1wbG8gZGUgdXNvCmlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAjIERhdG9zIGRlIGVqZW1wbG8gKHB1ZWRlbiBzZXIgc3VzdGl0dWlkb3MgcG9yIHR1cyBwcm9waW9zIGRhdG9zKQogICAgZGF0YSA9IG5wLnJhbmRvbS5ub3JtYWwobG9jPTAsIHNjYWxlPTEsIHNpemU9MTAwMCkKICAgIAogICAgIyBDcmVhciBpbnN0YW5jaWEgZGUgbGEgYXBsaWNhY2nDs24gZGUgYW7DoWxpc2lzIGRlIGRhdG9zCiAgICBhcHAgPSBEYXRhQW5hbHlzaXNBcHAoZGF0YSkKICAgIAogICAgIyBSZWFsaXphciBhbsOhbGlzaXMgZGUgZGF0b3MKICAgIGFuYWx5c2lzX3Jlc3VsdHMgPSBhcHAucGVyZm9ybV9hbmFseXNpcygpCiAgICBwcmludCAiUmVzdWx0YWRvcyBkZWwgYW7DoWxpc2lzOiIKICAgIGZvciBrZXksIHZhbHVlIGluIGFuYWx5c2lzX3Jlc3VsdHMuaXRlbXMoKToKICAgICAgICBwcmludCAiezB9OiB7MX0iLmZvcm1hdChrZXksIHZhbHVlKQogICAgCiAgICAjIFZpc3VhbGl6YXIgbG9zIGRhdG9zCiAgICBhcHAudmlzdWFsaXplX2RhdGEoKQo=