from google.colab import files
= files.upload() uploaded
Referencias a videos originales
El EVITEMOS EL FRAUDE !! APRENDE A ANALIZAR EL PREP DEL INE CON PYTHON !!! y las partes describiendo el código estan en
- 0:0:0-24:50 (peque pandas code para plotear lineas de diferencia de votos)
- 1:27:50-1:29:08 (como se ve un fraude)
Desgraciadamente el INE decidio quitar la página inicial del PREP, pero por fortuna no quitaron a donde apunta y se puede encontrar una copia en https://web.archive.org/web/20210526174841/https://www.ine.mx/voto-y-elecciones/prep/ que la ultima disponible es el 27 de Mayo del 2021.
Finalmente para descargar el mismo archivo que se muestra en el video navegar aquí y descargarlo localmente https://prep2018.ine.mx/#/diputaciones/nacional/1/3/1/1
Este otro video explica más a fondo como se pueden detectar los fraudes más a fondo
¡NO TE DEJES ENGAÑAR! MODELOS MATEMÁTICOS PARA DETECTAR FRAUDES ELECTORALES
Ejecutando en colab
Este notebook usa python y se puede ejecutar en la nube por cualquier persona.
Lo siguiente que tenemos que hacer es subirlo, lo unico que tienes que hacer es ejecutarlo mediante el menu
- Runtime -> Run all
ó
- Entorno de ejecución -> Ejecutar todas
ó simplemente mediante CTRL+F9
Al subirlo mediante el siguiente formulario debería de mostarse algo similar a esto
%%time
# descomprimir el archivo que hayas subido desde el prep
!unzip 20180702_2100_PREP.zip
Archive: 20180702_2100_PREP.zip
extracting: 20180702_2100_PREP_diputaciones.zip
extracting: 20180702_2100_PREP_presidencia.zip
extracting: 20180702_2100_PREP_senadurias.zip
CPU times: user 7.46 ms, sys: 872 µs, total: 8.33 ms
Wall time: 273 ms
!unzip 20180702_2100_PREP_diputaciones.zip
Archive: 20180702_2100_PREP_diputaciones.zip
creating: 20180702_2100_PREP_diputaciones/
inflating: 20180702_2100_PREP_diputaciones/diputaciones.csv
inflating: 20180702_2100_PREP_diputaciones/diputaciones_candidaturas_2018.csv
inflating: 20180702_2100_PREP_diputaciones/LEEME.txt
Si ya haz descomprimido los archivos, a partir de aquí puedes sacar las cuentas cumulativas entre un partido y el resto de partidos
# cargar las librerías necesarias
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
'figure', figsize=(10, 10)) plt.rc(
# definimos algunos valores de las variables
= ['MORENA', 'PAN', 'PRI', 'PRD']
partidos ='FECHA_HORA_CAPTURA' tiempo
# leemos los datos
= pd.read_csv('20180702_2100_PREP_diputaciones/diputaciones.csv', sep='|', engine='python', header=5) datos
# vamos a descartar las líneas que no se contabilizaron
= datos[datos['CONTABILIZADA']==0].index
lineas_malas =True) datos.drop(lineas_malas, inplace
def limpia(data, columna):
= data[columna].replace('-', 0)
data[columna] = data[columna].replace('Ilegible', 0)
data[columna] = data[columna].replace('Sin dato', 0)
data[columna] = pd.to_numeric(data[columna], errors='raise') data[columna]
for partido in partidos:
limpia(datos, partido)
5) datos.sample(
CLAVE_CASILLA | CLAVE_ACTA | ID_ESTADO | ESTADO | ID_DISTRITO_FEDERAL | DISTRITO_FEDERAL | SECCION | ID_CASILLA | TIPO_CASILLA | EXT_CONTIGUA | ... | CONTABILIZADA | MECANISMOS_TRASLADO | SHA | FECHA_HORA_ACOPIO | FECHA_HORA_CAPTURA | FECHA_HORA_VERIFICACION | ORIGEN | DIGITALIZACION | TIPO_DOCUMENTO | COTEJADA | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1373 | '010263C0100' | '010263C010006' | 1 | AGUASCALIENTES | 3 | Aguascalientes | 0263 | 1 | C | 0 | ... | 1 | D | 4ab896849e13fcc2a26b1962115c2041d23bff9e8bee0b... | 2018-07-01 22:28:00 | 2018-07-01 23:06:00 | 2018-07-01 23:08:02 | CATD | ESC�NER | Acta PREP | 1 |
15969 | '071735C0200' | '071735C020006' | 7 | CHIAPAS | 6 | Tuxtla Guti�rrez | 1735 | 2 | C | 0 | ... | 0 | D | - | - | - | - | CATD | ESC�NER | - | - |
142531 | '301356B0100' | '301356B010006' | 30 | VERACRUZ | 2 | Tantoyuca | 1356 | 1 | B | 0 | ... | 1 | D | c153534dc09dee6577bdf41e45204db25ac05237b3ed04... | 2018-07-02 08:27:00 | 2018-07-02 09:22:00 | 2018-07-02 09:23:27 | CATD | ESC�NER | Acta PREP | 1 |
98989 | '191505C0200' | '191505C020006' | 19 | NUEVO LE�N | 6 | Monterrey | 1505 | 2 | C | 0 | ... | 1 | D | 1f48bb9db93215c4db2a46c73a7459122e9b6956fa4a81... | 2018-07-02 16:26:00 | 2018-07-02 16:45:00 | 2018-07-02 16:46:18 | CATD | ESC�NER | Acta PREP | - |
150484 | '304531C0100' | '304531C010006' | 30 | VERACRUZ | 16 | C�rdoba | 4531 | 1 | C | 0 | ... | 1 | F-D | 2f7475f3513f0981216175beb202322a5bb37ca524ad65... | 2018-07-01 21:56:00 | 2018-07-01 23:03:00 | 2018-07-01 23:29:15 | CASILLA | M�VIL | Acta PREP | 1 |
5 rows × 56 columns
# ordenamos los datos por tiempo (la columna 'FECHA_HORA_CAPTURA')
= datos.sort_values(by=[tiempo])
datos_ordenados =True) datos_ordenados.reset_index(inplace
= []
diferencias for partido in partidos[1:]:
= partidos[0]
base = partido
contra print(base, 'vs', partido)
= np.cumsum(datos_ordenados[base]-datos_ordenados[contra])
resta
diferencias.append(resta)
for d in diferencias:
plt.plot(d)'diferencia de votos')
plt.ylabel( plt.show()
MORENA vs PAN
MORENA vs PRI
MORENA vs PRD
Dudas o comentarios
Aquí abajo puedes dejar tus comentarios o dudas que tengas para ejecutar tu mismo este análisis y talvez después otros si más gente coopera al conocimiento colectivo, ¡vamos que es fácil compartir!, recuerden que las cosas que no se coparten se pierden.