Python - archivos .csv de aproximadamente 1.5 GB

 
Vista:
Imágen de perfil de Gustavo
Val: 64
Ha disminuido su posición en 2 puestos en Python (en relación al último mes)
Gráfica de Python

archivos .csv de aproximadamente 1.5 GB

Publicado por Gustavo (24 intervenciones) el 31/03/2021 22:50:48

Hola gente:



Nuevamente yo.

Estoy trabajando sobre unos archivos .csv de aproximadamente 1.5 GB, con unas 7.5 millones de filas. Excel solo muestra una octava parte (aprox).

Para desarrollar el programa, tomé las primeras cientos de líneas del archivo original y creé otro .csv, pero mini, depuré el programa hasta que funcionó adecuadamente (con el archivo mini).
El problema es que cuando quiero ejecutarlo con el archivo grande (el original), no me da errores, pero no hace lo si hace con el pequeño.

¿Alguna idea?

Desde ya, muchas gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de joel
Val: 3.475
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

archivos .csv de aproximadamente 1.5 GB

Publicado por joel (901 intervenciones) el 01/04/2021 08:48:47
Hola Gustavo, la verdad es que nunca he trabajado con un CSV tan grande...
Has comprobado que realmente lea todo el archivo?

de todas maneras, si no te da ningún error... entiendo que tiene que funcionar correctamente.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Gustavo
Val: 64
Ha disminuido su posición en 2 puestos en Python (en relación al último mes)
Gráfica de Python

archivos .csv de aproximadamente 1.5 GB

Publicado por Gustavo (24 intervenciones) el 01/04/2021 13:24:59

Hola Joel.




Estoy seguro que lee completo el archivo, ya que hice un programa para partir los csv en partes (usando partes del mismo programa) y funciona perfectamente, y para ello lo debe cargarlo completo.
Es llamativo que no me de errores, pero no lo hace, solo deja de funcionar aún cuando corre completo, no se para porque lo último es un print que se ejecuta.

¿?????
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Joel
Val: 3.475
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

archivos .csv de aproximadamente 1.5 GB

Publicado por Joel (901 intervenciones) el 01/04/2021 14:04:13
Hola Gustavo, la verdad es que es muy extraño...

Exactamente que hace el código con el CSV? puedes mostrarnos el código haber si vemos alguna cosa?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Gustavo
Val: 64
Ha disminuido su posición en 2 puestos en Python (en relación al último mes)
Gráfica de Python

archivos .csv de aproximadamente 1.5 GB

Publicado por Gustavo (24 intervenciones) el 01/04/2021 17:41:36
No problem.
Pero ya lo superé. E problema era index(), prescindí de index y lo reemplacé con un bucle de 400 iteraciones que se ejecuta unas 8 millones de veces.
El procesamiento es más lento, pero funciona.
Igual te mando el código conflictivo.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
from datetime import *
from csv import *
from time import *
import winsound
#import pandas as pd
# -*- coding: utf-8 -*-
 
inicio = date.toordinal(datetime.strptime('1/3/2020', '%d/%m/%Y'))  # Desde, incluido
final = date.toordinal(datetime.strptime('31/12/2020', '%d/%m/%Y'))  # Hasta, incluido)
 
salida, lista = [], []
 
for i in range(inicio, final + 1):
    salida.append([datetime.strftime(date.fromordinal(i), '%d/%m/%Y'), 0])
    lista.append(i)
                           # Casos500
                           # Covid19Casos_23_3 300
                           # Covid19Casos_23_3CSM1
                           # b4Covid19Casos (Part 1)
                           # b4Covid19Casos_23_3
                           # Covid19Casos_23_3
                           # 14-12Covid19Casos = 3.980.748 Registros
print('Comenzó la carga.') # Covid19Casos(2)   = 7.402.057 Registros
arranque = time()            # Covid19Casos (1)  = 7.325.938 Registros
 
winsound.Beep(1300, 500)
with open('C:\\Users\\Bangho\\Desktop\\ZZZ\\Covid19Casos_23_3 300.csv', newline='\n') as archivo: # , encoding='utf-8'
    leido = list(reader(archivo))
 
print(len(leido), 'Registros\n', gmtime(time() - arranque)[4],
      'Minutos', gmtime(time()-arranque)[5], 'Segundos')
 
arranque = time()
x, y, indice = 0, 0, 0
 
winsound.Beep(3900, 1500)
 
for i in range(len(leido)): # len(leido)
    if leido[i][14] == 'SI':
        #input(leido[i])
        try:
            indice = lista.index(date.toordinal(datetime.strptime(leido[i][15], '%d/%m/%Y')))
            salida[indice][1] += 1
        except ValueError:
            try:
                indice = lista.index(date.toordinal(datetime.strptime(leido[i][15], '%d-%m-%Y')))
                salida[indice][1] += 1
            except ValueError:
                x = 0
 
print('Registros\n', gmtime(time() - arranque)[4], 'Minutos',
gmtime(time() - arranque)[5], 'Segundos\n', x, '   ', y)
 
winsound.Beep(3900, 600)
winsound.Beep(3900, 600)
 
for j in range(len(salida)):
    print(salida[j])
 
with open('Otro1.csv', 'w', newline='') as formato_csv:
    escrito = writer(formato_csv)
    escrito.writerows(salida) # salida
 
print('Finalizó el programa.')
del leido, salida, lista; import sys; sys.exit()
 
## id_evento_caso   .   .   .   .   0  A
## sexo	.   .   .   .   .   .   .   1  B
## edad	.   .   .   .   .   .   .   2  C
## edad_años_meses .   .   .   .   3  D
## residencia_pais_nombre   .   .   4  E
## residencia_provincia_nombre  .   5  F
## residencia_departamento_nombre   6  G
## carga_provincia_nombre   .   .   7  H
## fecha_inicio_sintomas    .   .   8  I
## fecha_apertura   .   .   .   .   9  J
## sepi_apertura    .   .   .   .   10 K
## fecha_internacion    .   .   .   11 L
## cuidado_intensivo	.   .   .   12 M
## fecha_cui_intensivo	.   .   .   13 N
## fallecido	.   .   .   .   .   14 O
## fecha_fallecimiento	.   .   .   15 P
## asistencia_respiratoria_mecanica 16 Q
## carga_provincia_id	.   .   .   17 R
## origen_financiamiento    .   .   18 S
## clasificacion    .   .   .   .   19 T
## clasificacion_resumen    .   .   20 U
## residencia_provincia_id  .   .   21 V
## fecha_diagnostico	.   .   .   22 W
## residencia_departamento_id	.   23 X
## ultima_actualizacion	.   .   .   24 Y

Gracias por todo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de joel
Val: 3.475
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

archivos .csv de aproximadamente 1.5 GB

Publicado por joel (901 intervenciones) el 02/04/2021 11:27:22
Ah, que buena solución... muy buena idea!!!
Gracias por compartir!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar