<jupyter_start><jupyter_text>Lab7 : Datos Bivariados: <NAME>. Ambas variables CategoricasSe usaran las librerias pandas, numpy, matplotlib, statmodels y seaborn para hacer tablas de clasificacioncruzada y graficas de barras en cluster o en stack, boxplots para comparar grupos scatterplots y la linea de regresion (prediccion)<jupyter_code>import pandas as pd
import matplotlib.pyplot as plt
import numpy as np 
import seaborn as sns
import statsmodels.formula.api as sm
%matplotlib inline 
#Leyendo los datost")
df=pd.read_table("http://academic.uprm.edu/eacuna/eje316.txt",sep="\s+")
df.head()
# Haciendo una tabla de clasificacion cruzada para relacionar las variables escuela y
#y si aprueba o no la primera clase matematicas en el Colegio
#los datos estan sueltos
pd.crosstab(df['escuela'],df['aprueba'],margins=True)
# Haciendo una tabla de clasificacion cruzda con datos resumidos
df=pd.read_csv("https://academic.uprm.edu/eacuna/eje2biv.csv",sep=",")
df.info()
#construyendo la tabla
pd.pivot_table(df,values='conteo',index='Sexo',columns='Opinion',aggfunc=np.sum)
#Haciendo una tabla de clasificacion xruzada sin datos resumidos
#Este conjunto de datos esta disponible en kaggle.com
df=pd.read_csv("c://esma3016/student-mat.csv",sep=",")
df.head()
df.info()
# Haciendo una tabla de clasificacion cruzada para relacionar las variables school y
#Pstatus (situacion de los padres: A=estan separados T=estans juntos)
#los datos estan sueltos
pd.crosstab(df['school'],df['Pstatus'],margins=True)
#Hallando proporciones por columna
pd.crosstab(df['school'],df['Pstatus'],normalize='columns')
#Hallando porcentajes por filas
pd.crosstab(df['school'],df['Pstatus'],normalize='index')*100
# Barras horizontales en cluster usando seaborn
sns.countplot(y='school', hue='Pstatus', data=df,orient='h')
# Barras verticales  en cluster usando seaborn
sns.countplot(x='Pstatus', hue='school', data=df,orient='v')
# Obteniendo una tabla resumida para hacer las graficas de barras en matplotlib
p_table = pd.pivot_table(df,index='Pstatus',columns='school',aggfunc='size')
p_table
#Barras en cluster usando matplotlib
p_table.plot.bar(stacked=False)
#Barras en stack usando matplotlib
p_table.plot.bar(stacked=True)<jupyter_output><empty_output><jupyter_text>Caso II. Una variable categoria y la otra cuantitativa<jupyter_code>df.boxplot(column='age',by='Pstatus')
# Barras horizontales en cluster usando seaborn
sns.boxplot(x='school', y='age', data=df,orient='v')<jupyter_output><empty_output><jupyter_text>Caso III. Ambas variables son cuantitativas<jupyter_code>#Leyendo los datost")
df=pd.read_table("http://academic.uprm.edu/eacuna/eje1reg.txt",sep="\s+")
df.head()
#scatterplot usando matplotlib
df.plot.scatter('CEEB','GPA')
#scatteplot usando seaborn
sns.set(style="ticks")
sns.lmplot("CEEB", "GPA", data=df, fit_reg=False)
#calculo de la correlacion
df.corr()['GPA']['CEEB']
# calculo  de la linea de regresion
result = sm.ols(formula="GPA ~ CEEB", data=df).fit()
print result.params
# Ploteando los puntos y la linea de regresion
x=df['CEEB']
y=df['GPA']
plt.scatter(x,y)
plt.plot(x, np.poly1d(np.polyfit(x, y, 1))(x),color='red')

plt.show()
#Ploteando la linea de regresion usando ggplot
from ggplot import *

ggplot(aes(x='CEEB', y='GPA'), data=df) +\
    geom_point() +\
    stat_smooth(color='blue',se=False, span=0.2)
#PLoteando la linea de regresion usando seaborn
sns.set(style="ticks")
sns.lmplot("CEEB", "GPA", data=df,ci=False)<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.13519746324589219, 'fraction_numerical': 0.004900547708273278, 'mean_word_length': 7.321342925659472, 'pattern_counts': {'":': 0, '<': 14, '<?xml version=': 0, '>': 14, 'https://': 1, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '3', 'dir': 'jupyter-structured-clean-dedup', 'id': '371033', 'license': 'MIT', 'n_tokens_mistral': 1360, 'n_tokens_neox': 1329, 'n_words': 310, 'path': 'notebooks/lab7py.ipynb', 'repo_name': 'brianreyes3/PyLabs-Analisis-de-Datos', 'size': '3481'}