En el escrutinio provisorio realizado en la provincia de Santa Fe quedaron sin escrutar 347 mesas.
Desde Opendata Córdoba intentamos proyectar los resultados de las mesas ya escrutadas, sobre estas mesas sin escrutar para tratar de predecir que puede pasar en el recuento definitivo.
El gobierno de la provincia de Santa Fe provee los datos actualizados del escrutinio provisorio en csv.
Los descargamos desde http://elecciones.santafe.gov.ar/descargas
!wget http://elecciones.santafe.gov.ar/bundles/escrutinio/descargas/csv.zip
--2015-06-16 11:41:29-- http://elecciones.santafe.gov.ar/bundles/escrutinio/descargas/csv.zip Resolviendo elecciones.santafe.gov.ar (elecciones.santafe.gov.ar)... 200.12.192.183 Conectando con elecciones.santafe.gov.ar (elecciones.santafe.gov.ar)[200.12.192.183]:80... conectado. Petición HTTP enviada, esperando respuesta... 200 OK Longitud: 865821 (846K) [application/zip] Grabando a: “csv.zip” 100%[======================================>] 865.821 725K/s en 1,2s 2015-06-16 11:41:30 (725 KB/s) - “csv.zip” guardado [865821/865821]
!unzip csv.zip
Archive: csv.zip inflating: desestimados.csv inflating: pendientes.csv inflating: computados.csv
Usando pandas preparamos los datos.
import pandas as pd
computados = pd.read_csv('computados.csv')
/home/jtrad/play/stats/local/lib/python2.7/site-packages/pandas/io/parsers.py:1170: DtypeWarning: Columns (6) have mixed types. Specify dtype option on import or set low_memory=False. data = self._reader.read(nrows)
Calculamos los votos de una mesa "Promedio" por cada seccion, solo los partidos con mas de 5 votos.
pd.set_option('display.max_rows', 2000)
promedio_gob_seccion = pd.pivot_table(computados, index=['nroSeccion', 'nroPartido'], values=['votosGob'])
votos_promedio_seccion = promedio_gob_seccion[promedio_gob_seccion.votosGob > 5]
votos_promedio_seccion
votosGob | ||
---|---|---|
nroSeccion | nroPartido | |
1 | 0004 | 60.518519 |
0005 | 101.009259 | |
0006 | 71.370370 | |
0008 | 6.388889 | |
ANUL | 5.240741 | |
BLAN | 11.814815 | |
2 | 0004 | 50.153488 |
0005 | 91.911628 | |
0006 | 72.748837 | |
0008 | 9.093023 | |
ANUL | 6.967442 | |
BLAN | 12.627907 | |
3 | 0004 | 90.985542 |
0005 | 70.127711 | |
0006 | 57.987952 | |
0008 | 6.669880 | |
ANUL | 6.067470 | |
BLAN | 7.115663 | |
4 | 0004 | 67.569444 |
0005 | 74.245370 | |
0006 | 73.532407 | |
0008 | 8.648148 | |
ANUL | 5.773148 | |
BLAN | 11.504630 | |
5 | 0004 | 73.037037 |
0005 | 79.870370 | |
0006 | 52.777778 | |
0008 | 6.240741 | |
ANUL | 5.259259 | |
BLAN | 15.055556 | |
6 | 0004 | 55.075107 |
0005 | 82.152361 | |
0006 | 83.175966 | |
0008 | 7.437768 | |
BLAN | 10.976395 | |
7 | 0004 | 73.019608 |
0005 | 65.223039 | |
0006 | 83.588235 | |
0008 | 7.387255 | |
ANUL | 5.105392 | |
BLAN | 11.526961 | |
8 | 0004 | 59.910714 |
0005 | 89.434524 | |
0006 | 72.172619 | |
0008 | 7.369048 | |
ANUL | 6.732143 | |
BLAN | 11.172619 | |
9 | 0001 | 5.849754 |
0004 | 80.976601 | |
0005 | 72.028325 | |
0006 | 69.038177 | |
0008 | 11.842365 | |
ANUL | 9.296798 | |
BLAN | 5.490148 | |
10 | 0004 | 84.262658 |
0005 | 81.088608 | |
0006 | 57.829114 | |
0008 | 9.231013 | |
ANUL | 8.468354 | |
BLAN | 6.797468 | |
11 | 0004 | 64.423664 |
0005 | 84.377863 | |
0006 | 68.610687 | |
0008 | 8.274809 | |
ANUL | 5.267176 | |
BLAN | 10.034351 | |
12 | 0004 | 69.859155 |
0005 | 84.183099 | |
0006 | 51.014085 | |
0008 | 7.591549 | |
BLAN | 18.281690 | |
13 | 0001 | 9.826156 |
0004 | 51.103668 | |
0005 | 66.385965 | |
0006 | 101.730463 | |
0008 | 10.357257 | |
ANUL | 6.835726 | |
14 | 0001 | 9.798171 |
0004 | 70.072502 | |
0005 | 63.915741 | |
0006 | 77.970607 | |
0008 | 11.160026 | |
ANUL | 11.238406 | |
BLAN | 6.130634 | |
15 | 0001 | 6.252874 |
0004 | 79.022989 | |
0005 | 76.100164 | |
0006 | 71.533662 | |
0008 | 8.522167 | |
ANUL | 9.591133 | |
BLAN | 8.558292 | |
16 | 0004 | 69.158192 |
0005 | 64.683616 | |
0006 | 75.553672 | |
BLAN | 13.045198 | |
17 | 0004 | 79.886076 |
0005 | 65.759494 | |
0006 | 69.873418 | |
ANUL | 6.177215 | |
BLAN | 16.746835 | |
18 | 0004 | 72.791262 |
0005 | 79.509709 | |
0006 | 62.140777 | |
0008 | 6.577670 | |
ANUL | 6.165049 | |
BLAN | 11.941748 | |
19 | 0004 | 57.773913 |
0005 | 80.600000 | |
0006 | 61.939130 | |
ANUL | 5.234783 | |
BLAN | 8.991304 | |
20 | 0001 | 5.508951 |
0004 | 84.250639 | |
0005 | 76.074169 | |
0006 | 72.913043 | |
0008 | 7.312020 | |
ANUL | 7.797954 | |
BLAN | 7.959079 | |
21 | 0004 | 53.357576 |
0005 | 100.236364 | |
0006 | 61.927273 | |
0008 | 6.072727 | |
ANUL | 6.278788 | |
BLAN | 12.684848 | |
22 | 0004 | 69.725926 |
0005 | 71.014815 | |
0006 | 51.992593 | |
0008 | 6.392593 | |
BLAN | 13.888889 |
Contamos cuantas mesas sin escrutar quedaron por sección
desestimados= pd.read_csv('desestimados.csv')
mesas_desestimadas_por_seccion = desestimados["nroSeccion"].value_counts()
pendientes = pd.read_csv('pendientes.csv')
mesas_pendientes_por_seccion = pendientes["nroseccion"].value_counts()
Filtramos por los partidos políticos más importantes:
computados = computados[computados.nroPartido.isin(['0004','0005','0006','ANUL','BLAN'])]
secciones_con_mesas_desestimadas = desestimados["nroSeccion"].unique()
computados_en_secciones_con_mesas_desestimadas = computados[computados.nroSeccion.isin(secciones_con_mesas_desestimadas)]
computados_en_secciones_con_mesas_desestimadas.groupby('nombrePartido').votosGob.mean().order(ascending=False)
nombrePartido FRENTE PROGRESISTA CIVICO Y SOCIAL 74.262837 UNION PRO FEDERAL 73.118141 FRENTE JUSTICIALISTA PARA LA VICTORIA 70.905297 Votos en Blanco 8.267443 Votos Anulados 7.793253 Name: votosGob, dtype: float64
En promedio, en las secciones con mesas desestimadas, el FRENTE PROGRESISTA CIVICO Y SOCIAL tiene 1.15 votos más que UNION PRO FEDERAL. Lo Cual, si se mantuviera la tendencia, el FRENTE PROGRESISTA CIVICO Y SOCIAL mantendría la ventaja.
computados = computados[computados.nroPartido.isin(['0004','0005','0006','ANUL','BLAN'])]
secciones_con_mesas_pendientes = pendientes["nroseccion"].unique()
computados_en_secciones_con_mesas_pendientes = computados[computados.nroSeccion.isin(secciones_con_mesas_pendientes)]
computados_en_secciones_con_mesas_pendientes.groupby('nombrePartido').votosGob.mean().order(ascending=False)
nombrePartido FRENTE PROGRESISTA CIVICO Y SOCIAL 74.540892 UNION PRO FEDERAL 72.365472 FRENTE JUSTICIALISTA PARA LA VICTORIA 71.884418 Votos en Blanco 8.015801 Votos Anulados 7.926116 Name: votosGob, dtype: float64
En promedio, en las secciones con mesas pendientes, el FRENTE PROGRESISTA CIVICO Y SOCIAL tiene 2.18 votos más que UNION PRO FEDERAL. Lo Cual, si se mantuviera la tendencia, el FRENTE PROGRESISTA CIVICO Y SOCIAL mantendría la ventaja.
Multiplicamos la cantidad de mesas no escrutadas por los votos promedios por mesa de cada partido en cada seccion
def por_seccion(prom, sec):
mesas = 0
if sec in mesas_pendientes_por_seccion:
mesas += mesas_pendientes_por_seccion[sec]
if sec in mesas_desestimadas_por_seccion:
mesas += mesas_desestimadas_por_seccion[sec]
return int(prom)*mesas
fpcys = 558352
pro = 556224
fpv = 532156
for row in votos_promedio_seccion.iterrows():
if row[0][1] == "0004":
fpv += por_seccion(row[1], row[0][0])
elif row[0][1] == "0005":
pro += por_seccion(row[1], row[0][0])
elif row[0][1] == "0006":
fpcys += por_seccion(row[1], row[0][0])
print "FPV: %d Votos" % fpv
print "PRO: %d Votos" % pro
print "FPCYS: %d Votos" % fpcys
print "Diferencia a favor del Socialismo: %d" % (fpcys - pro)
FPV: 558740 Votos PRO: 582576 Votos FPCYS: 585198 Votos Diferencia a favor del Socialismo: 2622
@tin_nqn_ Martín Gaitan
@pdelboca Patricio del Boca
@jairotrad Jairo Trad
@frod_f Franco Rodriguez