Documentos de Académico
Documentos de Profesional
Documentos de Cultura
TP 3 - Eda
TP 3 - Eda
Fecha: 12/05/2022
In [1]: # Datos a utilizar: 2008 US Swing State Election Results. FUENTE: Datacamp.com basado en www.data.gov del gobie
# de los EE.UU.
# Explicación: resultados de votación en la elección de 2008 a nivel de condado en cada uno de los tres princip
# oscilantes que definen una elección (Ohio, Pensilvania, y Florida)
# Los datos están guardados en CSV en alguna parte de nuestro disco de trabajo.
import pandas as pd
df_swing = pd.read_csv(path)
Visualización
In [2]: # Podemos generar un histograma
# Vamos a usar dataframes en todo lo que sigue, pero bien podríamos usar arrays como ya lo hemos visto
plt.show()
bins_límites = [0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100]
In [13]: # Notá que ahora es más claro que la masa de la distribución está a la izquierda del 50, indicando que hubo más
# McCain que por Obama en estos estados oscilantes.
In [5]: # También podemos usar una librería alternativa para gráficos: seaborn, creada por Michael Waskom
sns.set() # con esta función estamos definiendo que el estilo sea el que tiene seaborn como default
_ = plt.hist(df_swing["dem_share"])
_ = plt.xlabel("% que votó por B. Obama")
_ = plt.ylabel("cantidad de condados")
plt.show()
In [6]: # A esta altura queda claro que cada histograma puede contar una historia visualmente diferente
# dependiendo de cómo definamos los bins
# Se requiere para ello trabajar con estructuras de dataframes: características de interés en los títulos de co
# valores de las observaciones en las entradas de las filas.
# En este caso, la observación en cada fila es para un condado y las características son el % de voto demócrata
plt.show()
In [17]: # Notá que Obama tuvo menos del 50% en cada uno de los estados.
# Aquí también superamos el sesgo del "bin" y vemos los punto indicando lecturas reales de los datos.
# Es más detallado que el histograma, y no agrega mucha complejidad.
In [12]: # Hay otro gráfico de interés: ECDF (Empirical cumulative distribution function)
import numpy as np
plt.show()
222
In [19]: # Interpretación:
# Por ejemplo, 20% de todos los condados de los Estados Oscilantes tuvieron 36% o menos de su gente votando por
# Por ejemplo, 3 de cada 4 condados de los Estados de interés tuvieron 50% o menos de su gente votando por Obam
# También se podría hacer en este gráfico una curva ECDF para cada Estado y ello nos daría mucha más informació
y = np.arange(1, len(x)+1)/len(x)
u = np.arange(1, len(t)+1)/len(t)
n = np.arange(1, len(m)+1)/len(m)
plt.show()
print("\n")
print("Interpretación:")
print("El Estado de Florida se comporto diferente a los\
otros dos estados para el primer 40% de sus condados. En \
el primer 20% de los condados de Florida tuvieron un 20% o \
menos de su gente que votó por Obama.")
print("Los estados de Ohio y Pensilvania se comportan\
de manera similar en toda la curv.")
FL= 67 condados
OH= 88 condados
PA= 67 condados
Interpretación:
El Estado de Florida se comporto diferente a losotros dos estados para el primer 40% de sus condados. En el pri
mer 20% de los condados de Florida tuvieron un 20% o menos de su gente que votó por Obama.
Los estados de Ohio y Pensilvania se comportande manera similar en toda la curv.
Estadísticas resumidas
In [38]: # Media de los votos en PA
import numpy as np
np.mean(dem_share_PA)
Out[38]: 45.476417910447765
np.median(dem_share_PA)
Out[39]: 44.03
In [40]: type(dem_share_PA)
Out[40]: pandas.core.series.Series
45.476417910447765
45.476417910447765
44.03
In [ ]: # En el caso anterior vemos que no hay mucho impacto de outliers ya que mediana y media coinciden.
In [42]: # Percentiles
# La mediana es el 50% percentile. En otras palabras, 50% de los datos son menores a la mediana. Mirar el ECDF.
# Así también tenemos el 25% percentile y otros similares. El 25% percentile es el valor de los datos que es ma
# de los datos
# Cuando el número de datos es muy grande y los gráficos de enjambre son complicados, boxplots son los más conv
plt.show()
np.var(dem_share_PA) # pero esto no tiene las mismas unidades de lo que estamos midiendo: los % de votos para
Out[43]: 94.66503492982848
np.std(dem_share_PA)
Out[44]: 9.729595825615187
# Primero, vamos a importar todos los datos que tenemos en la base, y no solo 3 columnas como hasta ahora.
total_votes = np.array(df_swing.total_votes)
dem_share = np.array(df_swing.dem_share)
# groups = df_swing.groupby("state")
# Ahora graficamos
In [87]: # Notá que los condados más grandes en población,votaron por Obama (ángulo superior derecho)
# Los condados más chicos, votaron por el republicano.
votos_tot_vs_dem_cov = cov_matrix[0,1]
print("La covarianza entre los votos totales y democrátas es: ", votos_tot_vs_dem_cov)
print("--------------------")
[[20245.10393632 817.30936184]
[ 817.30936184 114.76344739]]
--------------------
La covarianza entre los votos totales y democrátas es: 817.3093618405286
--------------------
[[1. 0.53619736]
[0.53619736 1. ]]
--------------------
La correlación entre los votos totales y democrátas es: 0.5361973649586781