Quantcast
Channel: Cómo generar un diccionario estadístico con variables predefinidas - Stack Overflow en español
Viewing all articles
Browse latest Browse all 2

Respuesta de JohanC en Cómo generar un diccionario estadístico con variables predefinidas

$
0
0

La función estadisticas hay que llamar con una x y una y que son listas con valores numéricos.

Un ejemplo seria:

import pandas as pdimport numpy as npcolumnas = ['nombre', 'Matematicas', 'Ciencias', 'Espanol', 'Historia', 'EdFisica']lineas = [['Lucia ', 7.0, 6.5, 9.2, 8.6, 8.0],          ['Pedro ', 7.5, 9.4, 7.3, 7.0, 7.0],          ['Ines  ', 7.6, 9.2, 8.0, 8.0, 7.5],          ['Luis  ', 5.0, 6.5, 6.5, 7.0, 9.0],          ['Andres', 6.0, 6.0, 7.8, 8.9, 7.3],          ['Ana   ', 7.8, 9.6, 7.7, 8.0, 6.5],          ['Carlos', 6.3, 6.4, 8.2, 9.0, 7.2],          ['Jose  ', 7.9, 9.7, 7.5, 8.0, 6.0],          ['Sonia ', 6.0, 6.0, 6.5, 5.5, 8.7],          ['Maria ', 6.8, 7.2, 8.7, 9.0, 7.0]]df = pd.DataFrame(columns=columnas, data=lineas)df.set_index('nombre', inplace=True)y = df['Espanol']x = df['Matematicas']def estadisticas(x, y):    return {'Variable_1': x,'Variable_2': y,'Correlacion': np.corrcoef(x, y),'Covarianza': np.cov(x, y)}estadisticas(x, y)

Para trabajar con el dataframe, se puede escribir la función con un dataframe y los nombres de dos columnas. Y para comparar cada 2 columnas, itertools es un manera cómoda para coger cada combinación:

import itertoolsdef estadisticas(df, col_x, col_y):    return {'Variable_1': col_x,'Variable_2': col_y,'Correlacion': np.corrcoef(df[col_x], df[col_y]),'Covarianza': np.cov(df[col_x], df[col_y])}for col_x, col_y in itertools.combinations(df.columns, 2):    print(estadisticas(df, col_x, col_y ))

Lo más cómodo para visualizar es la función pairplot de la librería seaborn:

from matplotlib import pyplot as pltimport seaborn as sns# df = ....g = sns.pairplot(df)plt.tight_layout()plt.show()

Obtendrías:

pairplot


Viewing all articles
Browse latest Browse all 2


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>