No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Playgrounds: Lee un CSV para calcular el total de gastos

38/44

Aportes 413

Preguntas 3

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Aporto mi solución:

def read_csv(path):
   with open(path, 'r') as csvfile:      
      total = sum(int(r[1]) for r in csv.reader(csvfile))
      return total

response = read_csv('./data.csv')
print(response)

Hola, dejo una solución utilizando la función de orden superior reduce:

import csv
import functools

def read_csv(path):
   # Tu código aquí 👇
   with open(path) as csvfile:
      reader = csv.reader(csvfile, delimiter=',')
      data = list()
      for line in reader:
         data.append(int(line[1]))
   total = functools.reduce(lambda x,y: x+y, data)
   return total

response = read_csv('./data.csv')
print(response)

Mi solución, creo que queda más eficiente haciendo la lógica de la suma directamente en vez de convertir los datos a lista para después usar la función ya incluida

import csv

def read_csv(path):
   sum = 0
   with open(path, 'r') as csvfile:
      reader = csv.reader(csvfile)
      for data_set in reader:
         sum += int(data_set[1])
   return sum
   
sum_csv = read_csv('./data.csv')
print(sum_csv)

Espero que les sirva:

import csv

def read_csv(path):
   with open(path, 'r') as csvfile:
      reader = csv.reader(csvfile, delimiter= ",")
      dic = { j: k for j,k in reader}
      total = 0
      for valor in dic.values():
         total += int(valor)
      
      return int(total)
response = read_csv('./data.csv')
print(response)

Aqui es donde se pone bueno todo esto, las diferentes respuestas de todos ustedes me molan

Aquí les comparto mi solución:

import csv

def read_csv(path):
   with open(path, 'r') as csvfile:
      reader = csv.reader(csvfile, delimiter=',')
      total = [int(row[1]) for row in reader]
   return sum(total)

response = read_csv('./data.csv')
print(response)

Aqui mi solucion al reto:

def read_csv(path):
   total = 0
   with open(path, 'r', encoding='utf-8') as f:
      data = csv.reader(f)
      for _, val in data:
         total += int(val)

   return total

my solucion

import csv

def read_csv(path):
   # Tu código aquí 👇
   with open (path,"r") as csvfile:
      reader = csv.reader(csvfile,delimiter=",") 
      total_num=[]        
      for row in reader:     
         total_num.append(int(row[1]))  
        
     
   total= sum(total_num)     
   
   return total

response = read_csv('./data.csv')
print(response)

Este ejercicio me pareció perfecto para aplicar la función reduce aprendida en clases anteriores

import csv
import functools

def read_csv(path):
   with open(path) as csvfile:
      reader = csv.reader(csvfile, delimiter = ',')
      total = functools.reduce(lambda acc, row: acc + int(row[1]), reader, 0)
      return total

response = read_csv('./data.csv')
print(response)
![](https://static.platzi.com/media/user_upload/image-41453a92-f4a0-4f5a-a1ca-06fe168c6ecb.jpg)

Aporto mi solución:

import csv

def read_csv(path):
   # Tu código aquí 👇
   total = 0
   with open(path, 'r') as csvfile:
      reader = csv.reader(csvfile, delimiter=',')
      for row in reader:
         total += int(row[1])
   return total

response = read_csv('./data.csv')
print(response)
import csv

def read_csv(path):
   # Tu código aquí 👇
   with open(path, 'r') as archivoCSV:
      archivo = csv.reader(archivoCSV, delimiter = ',')
      total = sum(int(fila[1]) for fila in archivo)
   return total

response = read_csv('./data.csv')
print(response)

Aquí mi solución. Muy complicada creo en mi opinion jejeje

import csv

def run():
    def read_csv(path):
        with open(path, "r") as file:
            reader = csv.reader(file, delimiter=",")
            dicty = {x:y for x,y in reader}
            return dicty
    dicty = read_csv("./data.csv")
    print(dicty)
    result = int(dicty["Administration"]) + int(dicty["Marketing"]) + int(dicty["Purchasing"]) + int(dicty["Human Resources"]) + int(dicty["Shipping"]) + int(dicty["IT"]) + int(dicty["Public Relations"]) + int(dicty["Sales"]) + int(dicty["Executive"]) + int(dicty["Finance"])
    print(f"El precio total es {result}") 

if __name__ == "__main__":
    run()
dejo aca mi solucion: ```js import csv def read_csv(path): result = 0 with open(path, 'r') as csvfile: reader = csv.reader(csvfile) for row in reader: result += int(row[1]) return result response = read_csv('./data.csv') print(response) ```
```js import csv def read_csv(path): # Tu código aquí 👇 with open(path, 'r') as datos: leecosa = csv.reader(datos, delimiter=',') dicionario1 = dict(leecosa) listavalores = list(dicionario1.values()) total = 0 for x in listavalores: total = total + int(x) return(total) response = read_csv('./data.csv') print(response) ```import csv def read\_csv(path):   # Tu código aquí 👇   with open(path, 'r') as datos:      leecosa = csv.reader(datos, delimiter=',')      dicionario1 = dict(leecosa)      listavalores = list(dicionario1.values())      total = 0      for x in listavalores:         total = total + int(x)      return(total) response = read\_csv('./data.csv')print(response)
```python import csv def read_csv(path): total = 0 try: # Abrimos el archivo y utilizamos el módulo csv para leer los datos with open(path, mode='r') as file: reader = csv.reader(file) for row in reader: # Sumamos la segunda columna (los gastos) al total total += int(row[1]) except FileNotFoundError: return "Archivo no encontrado." except ValueError: return "Error en el formato de datos." return total # Llamada a la función con el archivo CSV response = read_csv('./data.csv') print(response) ```
![](https://static.platzi.com/media/user_upload/image-8047c163-e39c-48f5-9745-5b4c9e6f57ef.jpg)import csv def read\_csv(path):   # Tu código aquí 👇   with open(path, 'r') as csvfile:    reader = csv.reader(csvfile)    data = dict(reader)    valuesDict = data.values()        total = 0   for number in valuesDict:      intNum = int(number)      total += intNum   return total response = read\_csv('./data.csv')print(response)```js import csv def read_csv(path): # Tu código aquí 👇 with open(path, 'r') as csvfile: reader = csv.reader(csvfile) data = dict(reader) valuesDict = data.values() total = 0 for number in valuesDict: intNum = int(number) total += intNum return total response = read_csv('./data.csv') print(response) ```Al ser nueva con esto, me costó un poco (bastante) pero a la final lo logré y pude hacerlo.
Aquí mi solución: ```python import csv, functools def read_csv(path): # Tu código aquí 👇 with open(path, 'r') as file: reader = csv.reader(file, delimiter=',') totals = map(lambda item: int(item[1]), reader) total = functools.reduce(lambda counter, item: counter + item, totals) return total response = read_csv('./data.csv') print(response) ```
import csv

def read_csv(path):
   # Tu código aquí 👇
   with open(path, 'r') as csv_file:
      reader = csv.reader(csv_file)
      # print(reader)
      total = sum(int(r[1]) for r in reader)
   return total

response = read_csv('./data.csv')
print(response)
import csv

def read_csv(path):
   total = 0
   with open(path, 'r') as csvfile:
      reader = csv.reader(csvfile, delimiter=',')
      for row in reader:
         total += int(row[1])
   return total

response = read_csv('./data.csv')
print(response)

Quise ponerle un encabezado a la data del archivo csv y trabajar con ello:

import csv

def read_csv(path):
       with open(path, 'r') as csvfile:
        data = []
        for row in csvfile:
            row = row.rstrip('\n')
            columns = row.split(',')
            area = columns[0]
            expenses = int(columns[1])
            data.append({
                'Area': area,
                'Expenses': expenses
            })
            expenses = sum(list(map(lambda item: item['Expenses'], data)))
        return expenses
           
if __name__ == '__main__':
    data = read_csv('./data2.csv')
    print(data)
import csv

def read_csv(path):
   lista=[]
   with open(path,"r") as file :
      reader = csv.reader(file,delimiter = ",")
      header = ["Area", "Gasto"]
      for linea in reader:
         iterable=zip(header,linea)
         dic = {key:valor for (key,valor) in iterable}
         lista.append(dic)
   gastos = [lis["Gasto"] for lis in lista]
   gastos = list(map(lambda x : int(x),gastos))
   total = sum(gastos)
   return total

response = read_csv('./data.csv')
print(response)
```js import csv import functools def read_csv(path): # Tu código aquí 👇 total = 0 with open(path, 'r') as csvfile: reader = csv.reader(csvfile, delimiter = ',') for row in reader: total += int(row[1]) return total response = read_csv('./data.csv') print(response) ```
![](https://static.platzi.com/media/user_upload/image-fa7fc6af-0c3c-412f-97cc-abd1d6b23b17.jpg)
```python import csv,functools def read_csv(path): # Tu código aquí with open(path) as csvfile: reader = csv.reader(csvfile) return functools.reduce(lambda counter,item:int(item[1])+counter,reader,0) response = read_csv('./data.csv') print(response) ```import csv,functools def read\_csv(path): # Tu código aquí with open(path) as csvfile: reader = csv.reader(csvfile) return functools.reduce(lambda counter,item:int(item\[1])+counter,reader,0) response = read\_csv('./data.csv')print(response)
Dejo mi solucion ![](https://static.platzi.com/media/user_upload/image-6a840472-78ee-4d97-bb63-52fec6b9f043.jpg)
```js import csv def read_csv(path): with open(path, 'r') as csvfile: reader = csv.reader(csvfile, delimiter=',') total = sum(int(row[1]) for row in reader) return total response = read_csv('./reto.csv') print(response) ```
la verdad me costo bastante , creo que me puse a hacer de más , solo estaban pidiendo la suma total de todo , yo estaba tratando de sacar cada area y luego empezar a sumar areas, es decir hacer una tupla y luego un diccionario para luego si sumar todo , no se en que estaba pensando
![](https://static.platzi.com/media/user_upload/image-3d73a5d8-77de-412a-9d56-49629da879f6.jpg)![](https://static.platzi.com/media/user_upload/image-0c43be0b-6a6d-42be-ac16-674b105e1f5b.jpg)
Aporto mi solución con `lambda:` ```js def read_csv(path): with open(path, 'r') as csvfile: total = map(lambda x: int(x[1]) ,csv.reader(csvfile)) return sum(total) response = read_csv('./data.csv') print(response) ```def read\_csv(*path*):   with open(*path*, 'r') as csvfile:            total = map(lambda *x*: int(*x*\[1]) ,csv.reader(csvfile))      return sum(total) response = read\_csv('./data.csv')print(response)
Holaaa, solucion usando conceptos anteriores como`list_comprenhension` y `reduce` : ```python import csv from functools import reduce def read_csv(path): total = 0 with open(path, mode='r') as file: reader = csv.reader(file) spends = [row[1] for row in reader] total = reduce(lambda acc, spend: acc + int(spend), spends, 0) return total response = read_csv('./data.csv') print(response) ```
Saludos! Casi un año después, antes de que actualicen este curso estoy revisando para completar lo que me faltaba y pude realizar esto.import csv def read\_csv(path):   # Tu código aquí 👇   with open(path, 'r') as csvfile:      reader = csv.reader(csvfile, delimiter=',')      data = list(reader)    total = sum(map(lambda x: float(x\[1]), data))   return total response = read\_csv('./data.csv')print(response) ```js import csv def read_csv(path): # Tu código aquí 👇 with open(path, 'r') as csvfile: reader = csv.reader(csvfile, delimiter=',') data = list(reader) total = sum(map(lambda x: float(x[1]), data)) return total response = read_csv('./data.csv') print(response) ```
```python import csv def read_csv(path): # Tu código aquí 👇 total = 0 with open(path, 'r') as csvfile: reader = csv.reader(csvfile) for row in reader: total += int(row[1]) return total response = read_csv('./data.csv') print(response) ```
![](https://static.platzi.com/media/user_upload/image-367d4e6a-18d7-4e91-9310-ffd64f257a91.jpg)
````js import csv def read_csv(path): # Tu código aquí 👇 total = 0 with open(path,"r") as csvfile: reader = csv.reader(csvfile, delimiter=",") for row in reader: total += int(row[1]) return total response = read_csv('./data.csv') print(response) ```import csv def read\_csv(path):   # Tu código aquí 👇   total = 0   with open(path,"r") as csvfile:      reader = csv.reader(csvfile, delimiter=",")      for row in reader:         total += int(row\[1])            return total response = read\_csv('./data.csv')print(response) ````
![](https://static.platzi.com/media/user_upload/image-dde68da6-1cf3-4f69-8adb-ff7ce858f52c.jpg)
import csv def read\_csv(path):   # Tu código aquí 👇   with open(path, 'r') as csvfile:      reader = csv.reader(csvfile, delimiter=',')      total = 0      for row in reader:         print(row)         total += int(row\[1])      return total            response = read\_csv('./data.csv')print(response)
Mi solución: `import csv` `def read_csv(path):   # Tu código aquí 👇   with open(path, 'r') as csvfile:      reader = csv.reader(csvfile, delimiter=',')      list_reader=list(reader)      gastos=[int(y) for x,y in list_reader]   return sum(gastos)` `response = read_csv('./data.csv')print(response)`
Mi solución: import csv def read\_csv(path):   # Tu código aquí 👇   with open(path, 'r') as csvfile:      reader = csv.reader(csvfile, delimiter=',')      list\_reader=list(reader)      gastos=\[int(y) for x,y in list\_reader]   return sum(gastos) response = read\_csv('./data.csv')print(response)
mi solución con list comprehensions: ```js import csv def read_csv(path):   # Tu código aquí 👇   with open(path, 'r') as csvfile:      reader = csv.reader(csvfile, delimiter=',')      total = sum([int(row[1]) for row in reader])   return total response = read_csv('./data.csv')print(response) ```import csv def read\_csv(path):   # Tu código aquí 👇   with open(path, 'r') as csvfile:      reader = csv.reader(csvfile, delimiter=',')      total = sum(\[int(row\[1]) for row in reader])   return total response = read\_csv('./data.csv')print(response)
```js import csv def read_csv(path): # Tu código aquí 👇 with open(path, 'r') as csv_file: reader = csv.reader(csv_file, delimiter=',') total_list = [] for row in reader: total = [int(item) for item in row if item.isdigit()][0] total_list.append(total) total = sum(total_list) return total response = read_csv('./data.csv') # Print response print(response) ```import csv def read\_csv(path):   # Tu código aquí 👇   with open(path, 'r') as csv\_file:      reader = csv.reader(csv\_file, delimiter=',')      total\_list = \[]      for row in reader:         total = \[int(item) for item in row if item.isdigit()]\[0]         total\_list.append(total)   total = sum(total\_list)   return total response = read\_csv('./data.csv')# Print response print(response)
`import csv def read\_csv(path):   # Tu código aquí 👇   with open(path, 'r') as csv\_file:      reader = csv.reader(csv\_file, delimiter=',')      total\_list = \[]      for row in reader:         total = \[int(item) for item in row if item.isdigit()]\[0]         print(total)         total\_list.append(total)   total = sum(total\_list)   return total response = read\_csv('./data.csv')# Print response print(response)`
Solucion sin usar el modulo `csv` ```python def read_csv(path): total = 0 with open(path,'r') as archivo: contenido = [x for x in archivo.read().split('\n') if x != ''] for s in contenido: total += int(s.split(',')[1]) return total response = read_csv('./data.csv') print(response) ```
Esta es mi solución: ```js import csv def accum(counter, item): return counter + item def read_csv(path): gastos = [] with open(path, 'r') as csvfile: reader = csv.reader(csvfile, delimiter=',') for row in reader: gastos.append(int(row[1])) total = 0 for x in gastos: total += x return total response = read_csv('./data.csv') print(response) ```
```python import csv def read_csv(path): # Tu código aquí 👇 with open('data.csv', 'r') as csvfile: csvfile_reader = csv.reader(csvfile, delimiter = ',') data = 0 for row in csvfile_reader: x = row[1] num = int(x) data += num total = data return data response = read_csv('./data.csv') print(response) ```import csv def read\_csv(path):   # Tu código aquí 👇   with open('data.csv', 'r') as csvfile:      csvfile\_reader = csv.reader(csvfile, delimiter = ',')      #header = next(csvfile\_reader)      data = 0       for row in csvfile\_reader:         x = row\[1]         num = int(x)         data += num         total = data   return data response = read\_csv('./data.csv')print(response)
```js import csv def read_csv(path): # Tu código aquí 👇 total = 0 with open(path, 'r')as file: reader = csv.reader(file, delimiter = ',') for row in reader: print(row) total += int(row[1]) return total response = read_csv('./data.csv') print(f'total de gastos:', response) ```
```python import csv def read_csv(path): total = 0 with open(path, 'r') as csvfile: reader = csv.reader(csvfile, delimiter=',') for row in reader: total += int(row[1]) return total response = read_csv('./data.csv') print(response) ```
```js import csv def read_csv(path): # Tu código aquí 👇 with open(path, 'r') as csv_file: headers = ['Department', 'Gastos'] reader = csv.DictReader(csv_file, fieldnames = headers) total = 0 for row in reader: gasto = row['Gastos'] total = total + float(gasto) print(row) return total print(total) response = read_csv('./data.csv') print(response) ```
Mi solución: ```python import csv def read_csv(path): with open(path, "r") as data: reader = csv.reader(data, delimiter = ",") total = sum(int(row[1]) for row in reader) return total response = read_csv('./data.csv') print(response) ```
```python import csv from functools import reduce def read_csv(path): total = 0 with open(path,'r') as csv_file: csv_reader = csv.reader(csv_file, delimiter=',') total = reduce(lambda x, y: x + int(y[1]), csv_reader, 0) return total response = read_csv('./data.csv') print(response) ```import csvfrom functools import reduce def read\_csv(path):   total = 0   with open(path,'r') as csv\_file:    csv\_reader = csv.reader(csv\_file, delimiter=',')    total = reduce(lambda x, y: x + int(y\[1]), csv\_reader, 0)   return total response = read\_csv('./data.csv')print(response)
Mi solución, con algunos comentarios del funcionamiento ```python #Importamos el modulo para manejar archivos CSV import csv #Definimos la función read_csv que se encargara de toda la operacion def read_csv(path): # Tu código aquí 👇 #Abrimos el archivo CSV en modo lectura with open(path, 'r') as csvfile: #Definimos la variable de total para guardar ahí la suma de los gastos total =0 #Generamos el iterable reader que contiene la informacion de cada renglon del CSV reader = csv.reader(csvfile, delimiter=',') #Con el iterable reader, y el ciclo for,vamos recorriendo cada renglón y sumando el valor del segundo elemento de cada renglon al resultado "total" for rows in reader: total += int(rows[1]) return total response = read_csv('./data.csv') print(response) ```
mi solución: ```python import csv def read_csv(path): with open(path, 'r') as file: reader = csv.reader(file, delimiter=',') sum_ = [] for row in reader: sum_.append(int(row[1])) return sum(sum_) response = read_csv('./dt.csv') print(response) ```import csv def read\_csv(path): with open(path, 'r') as file: reader = csv.reader(file, delimiter=',') sum\_ = \[] for row in reader: sum\_.append(int(row\[1])) return sum(sum\_) response = read\_csv('./dt.csv')print(response)
Esta es mi propuesta de respuesta, pero antes, sobre la complejidad de estas funciones: Complejidad Temporal (Velocidad) 1. **Lectura del archivo con** `csv.reader`**:** La lectura del archivo se realiza línea por línea, usando un iterador interno de Python. Su complejidad es **O(n)**, donde `n` es el número de líneas en el archivo CSV. 2. **Append a la lista (**`expenses.append(int(row[1]))`**):** En el peor de los casos, hay `n` operaciones `append` (una por cada línea). La complejidad temporal de cada `append` es **O(1)**. Entonces, en total, esto también toma **O(n)**. 3. **Suma de los valores en la lista (**`for i in expenses:`**):** Una vez que tenemos la lista `expenses` con `n` elementos, sumamos todos los elementos de la lista, lo cual tiene una complejidad de **O(n)**, ya que recorremos todos los elementos una vez. ```js import csv def read_csv(path): # Tu código aquí 👇 expenses = [] total = 0 with open(path, 'r') as csvfile: lines = csv.reader(csvfile, delimiter=',') for row in lines: expenses.append(int(row[1])) for i in expenses: total = total + i return total response = read_csv('./data.csv') print(response) ```
Esta fue la solución a la que llegué, siguiendo el principio "Simple es mejor que complejo" del Zen de Python: ```python import csv def read_csv(path): # Tu código aquí 👇 total = 0 with open(path, 'r+') as csvfile: reader = list(csv.reader(csvfile, delimiter = ',')) for item in reader: total += int(item[1]) return total response = read_csv('./data.csv') print(response) ```import csv def read\_csv(path):   # Tu código aquí 👇   total = 0   with open(path, 'r+') as csvfile:      reader = list(csv.reader(csvfile, delimiter = ','))      for item in reader:         total += int(item\[1])   return total response = read\_csv('./data.csv')print(response)
def read\_csv(path):   # Tu código aquí 👇   total = 0   with open('./data.csv', 'r') as csv\_file:    body = csv.reader(csv\_file, delimiter=',')    for item in body:        try:            total += int(item\[1])        except ValueError:            total +=0    return totaldef read\_csv(path):   # Tu código aquí 👇   total = 0   with open('./data.csv', 'r') as csv\_file:    body = csv.reader(csv\_file, delimiter=',')    for item in body:        try:            total += int(item\[1])        except ValueError:            total +=0    return total
Mi solución, se que no es la solución más práctica, pero me sirvió para practicar otros conceptos. ```js import csv import functools def get_total(acc, row): acc['total']+=int(row['anual_total']) return acc def read_csv(path): total = 0 with open(path, mode='r') as csvfile: reader = csv.reader(csvfile, delimiter=',') data=[] keys = ('area_name', 'anual_total') for raw in reader: iterable = zip(keys, raw) dictionary = {key:value for key, value in iterable} data.append(dictionary) total = functools.reduce(get_total, data, {'total':total})['total'] return total response = read_csv('./data.csv') print(response) ```
```js import csv def read_csv(path): # Tu código aquí 👇 total=0 with open(path,'r') as csvfile: reader=csv.reader(csvfile) for i in reader: if int(i[1])>=0: total+=int(i[1]) return total response = read_csv('./data.csv') print(response) ```
![](https://static.platzi.com/media/user_upload/image-25d94530-81e6-40a0-8d72-8dafcaa17538.jpg)
Esta fue mi solución ```js import csv def read_csv(path): total = 0 with open('data.csv','r') as csvfile: reader = csv.reader(csvfile,delimiter=',') for row in reader: total+= int(row[1]) return total response = read_csv('./data.csv') print(response) ```
Por acá mi solución al reto ```python import csv def read_csv(path): # Tu código aquí 👇 total = 0 with open(path, 'r') as csvfile: reader = csv.reader(csvfile, delimiter=',') for row in reader: gasto = int(row[1]) total += gasto return total response = read_csv('./data.csv') print(response) ```Quedo atento a comentarios y sugerencias.
otra alternativa: ```python from csv import reader from functools import reduce def read_csv(path): with open(path, 'r') as file: content = reader(file, delimiter=',') return reduce(lambda x, y: x + y, [int(row[1]) for row in content]) response = read_csv('./data.csv') print(response) ```from csv import reader from functools import reduce def read\_csv(path): with open(path, 'r') as file: content = reader(file, delimiter=',') return reduce(lambda x, y: x + y, \[int(row\[1]) for row in content]) response = read\_csv('./data.csv') print(response)
```js import csv def read_csv(path): total = 0 with open(path, 'r') as csvfile: reader = csv.reader(csvfile, delimiter=',') for row in reader: total += int(row[1]) return total response = read_csv('./data.csv') print(response) ```
Este código abrirá el archivo CSV, leerá cada fila, convertirá el segundo valor de cada fila a un entero y sumará todos estos valores, devolviendo el total. Luego, imprimirá el resultado.
```python def read_csv(path): with open(path, mode="r") as file_processor: return sum([int(row[1]) for row in csv.reader(file_processor)]) ```Aca adjunto la solucion mas pythonica que se me ocurrió aplicando lo visto en el curso
```js def read_csv(path): with open(path, mode="r") as file_processor: return sum([int(row[1])for row in csv.reader(file_processor)]) ```def read\_csv(path): with open(path, mode="r") as file\_processor: return sum(\[int(row\[1])for row in csv.reader(file\_processor)]) Comparto mi solucion, lo mas pythonic posible usando lo que hemos aprendido en todo el curso
import csvimport functools def read\_csv(*path*):    with open(*path*, 'r') as csvfile:        reader = csv.reader(csvfile, *delimiter*=',')        total= functools.reduce(lambda *x*, *y*: *x* + int(*y*\[1]), reader, 0)    return total response = read\_csv('./data.csv')print(response)
```js def read_csvg(path): with open(path, "r") as csvfile: reader = csv.reader(csvfile,delimiter=',') total = sum(map(lambda item: int(item[1]), reader)) #-- 🤷🏻‍♀️ return total ```
import csv def read\_csv(path):   total = 0   with open(path) as csv\_file:      csv\_reader = csv.reader(csv\_file, delimiter=',')      for row in csv\_reader:         total += int(row\[1])   return total response = read\_csv('./data.csv')print(response) ```js import csv def read_csv(path): total = 0 with open(path) as csv_file: csv_reader = csv.reader(csv_file, delimiter=',') for row in csv_reader: total += int(row[1]) return total response = read_csv('./data.csv') print(response) ```
import csv def read\_csv(path):   total = 0   with open(path) as csv\_file:      csv\_reader = csv.reader(csv\_file, delimiter=',')      for row in csv\_reader:         total += int(row\[1])   return total response = read\_csv('./data.csv')print(response)
A mí me imprimía raro el encabezado de Density: "Density (per km²)" Si les muestra caracteres raros a la hora de imprimir, agreguen el argumento `encoding='UTF-8'` a la función `open()` ```js with open(path, 'r', encoding='UTF-8') as csvfile: reader = csv.reader(csvfile, delimiter=',') ```
Si les muestra carácteres raros a la hora de imprimir, agreguen el argumento `encoding='UTF-8'` a la función `open()`. ```js with open(path, 'r', encoding='UTF-8') as csvfile: reader = csv.reader(csvfile, delimiter=',') ````with open(path, 'r', encoding='UTF-8') as csvfile:` ` reader = csv.reader(csvfile, delimiter=',')` A mí me imprimía raro el encabezado de Density: "Density (per km²)"
Si les muestra carácteres raros a la hora de imprimir, agreguen el argumento `encoding='UTF-8'` a la función `open()` ```js with open(path, 'r', encoding='UTF-8') as csvfile: reader = csv.reader(csvfile, delimiter=',') ```A mí me imprimía raro el encabezado de Density: "Density (per km²)"
![](https://static.platzi.com/media/user_upload/Captura%20desde%202024-06-19%2011-39-18-9db31524-a254-4cb3-934e-d3c99dd83517.jpg)
reduce + lambda + list comprehension: ````python import csv import functools def read_csv(path): # Tu código aquí 👇 with open(path, "r") as csv_file: reader = csv.reader(csv_file) total = functools.reduce(lambda counter, item: counter + item, [int(row[1]) for row in reader]) return total response = read_csv('./data.csv') print(response) ```import csvimport functools def read\_csv(path):   # Tu código aquí 👇   with open(path, "r") as csv\_file:      reader = csv.reader(csv\_file)      total = functools.reduce(lambda counter, item: counter + item, \[int(row\[1]) for row in reader])   return total response = read\_csv('./data.csv')print(response) ````
reduce + lambda + list comprehension: ![](https://static.platzi.com/media/user_upload/image-dc09675a-068a-46a1-aa8f-cfcb87043f5c.jpg)
El output del data.csv del desafío da 1499 (chequeado en excel).  La función read\_csv abre el archivo CSV especificado por path, luego recorre cada línea del CSV. Para cada línea, convierte el segundo elemento (el total de gastos del año) a un entero y lo suma al total. Finalmente, devuelve el total. import csv def read\_csv(path):     total = 0     with open(path, 'r') as file:         reader = csv.reader(file)         # next(reader)  # si el CSV tiene cabecera, para este caso no.          for row in reader:             total += int(row\[1])  # Sumar los gastos     return total \# Uso de la función response = read\_csv('./data.csv') print(response)
Comparto mi solucion: ```js import csv def read_csv(path): # Tu código aquí 👇 total = 0 with open(path,'r') as csv_f: reader = csv.reader(csv_f) for num in reader: total += int(num[1]) return total response = read_csv('./data.csv') print(response) ```import csv def read\_csv(path):   # Tu código aquí 👇   total = 0   with open(path,'r') as csv\_f:      reader = csv.reader(csv\_f)      for num in reader:         total += int(num\[1])      return total response = read\_csv('./data.csv')print(response)
```python import csv def read_csv(path): with open(path,'r') as csvgastos: reader=csv.reader(csvgastos, delimiter=',') total={key:int(value) for key,value in reader} tot=sum(total.values()) return tot response=read_csv('./data.csv') print(response) ```
Lo hice con validación de datos. ```js import csv def read_csv(path): sum = 0 with open(path, 'r') as csvfile: reader = csv.reader(csvfile) for total in reader: try: sum += int(total[1]) except ValueError: continue return sum response = read_csv('./data.csv') print(response) ```
Lo hice con una validación de datos.import csv def read\_csv(path):   sum = 0   with open(path, 'r') as csvfile:      reader = csv.reader(csvfile)      for total in reader:         try:            sum += int(total\[1])         except ValueError:            continue     return sum response = read\_csv('./data.csv')print(response) ```js import csv def read_csv(path): sum = 0 with open(path, 'r') as csvfile: reader = csv.reader(csvfile) for total in reader: try: sum += int(total[1]) except ValueError: continue return sum response = read_csv('./data.csv') print(response) ```
Lo hice con una validación de datos.import csv def read\_csv(path):   sum = 0   with open(path, 'r') as csvfile:      reader = csv.reader(csvfile)      for total in reader:         try:            sum += int(total\[1])         except ValueError:            continue  # Ignorar filas con datos no válidos en la segunda columna   return sum response = read\_csv('./data.csv')print(response) ```js import csv def read_csv(path): sum = 0 with open(path, 'r') as csvfile: reader = csv.reader(csvfile) for total in reader: try: sum += int(total[1]) except ValueError: continue # Ignorar filas con datos no válidos en la segunda columna return sum response = read_csv('./data.csv') print(response) ```
Le puse una técnica de manejo de errores por si la columna contiene valores numéricos antes de convertirlos a enteros para evitar errores de ejecución.import csv def read\_csv(path):   sum = 0   with open(path, 'r') as csvfile:      reader = csv.reader(csvfile)      for total in reader:         try:            sum += int(total\[1])         except ValueError:            continue  # Ignorar filas con datos no válidos en la segunda columna   return sum response = read\_csv('./data.csv')print(response) ```python import csv def read_csv(path): sum = 0 with open(path, 'r') as csvfile: reader = csv.reader(csvfile) for total in reader: try: sum += int(total[1]) except ValueError: continue # Ignorar filas con datos no válidos en la segunda columna return sum response = read_csv('./data.csv') print(response) ```
Este lo hice yo, y le puse una verificación de datos por si una columna no tiene valores numericos para evitar errores ```python import csv def read_csv(path): sum = 0 with open(path, 'r') as csvfile: reader = csv.reader(csvfile) for total in reader: try: sum += int(total[1]) except ValueError: continue # Ignorar filas con datos no válidos en la segunda columna return sum response = read_csv('./data.csv') print(response) ```import csv def read\_csv(path):   sum = 0   with open(path, 'r') as csvfile:      reader = csv.reader(csvfile)      for total in reader:         try:            sum += int(total\[1])         except ValueError:            continue  # Ignorar filas con datos no válidos en la segunda columna   return sum response = read\_csv('./data.csv')print(response)
Les muestro mi solución comunidad ```js import csv def read_csv(path): # Tu código aquí 👇 total = 0 with open(path, "r") as fileData: fileReader = csv.reader(fileData, delimiter=",") for row in fileReader: total += int(row[1]) return total response = read_csv('./data.csv') print(response) ```
Esta fue mi solución ```python import csv def read_csv(path): # Tu código aquí 👇 total = 0 with open('./data.csv','r') as csvfile: reader = csv.reader(csvfile,delimiter = ',') data = [] suma = 0 for row in reader: suma = suma + int(row[1]) return suma response = read_csv('./data.csv') print(response) ```import csv def read\_csv(path):   # Tu código aquí 👇   total = 0   with open('./data.csv','r') as csvfile:      reader = csv.reader(csvfile,delimiter  = ',')      data = \[]      suma = 0      for row in reader:         suma = suma + int(row\[1])      return sumaresponse = read\_csv('./data.csv')print(response)
![](https://static.platzi.com/media/user_upload/imagen-216d6dc5-87e1-4e12-8717-d421b90f5fcd.jpg)
![](https://static.platzi.com/media/user_upload/image-498288f1-1204-4756-ae75-1670e826293e.jpg)
![](https://static.platzi.com/media/user_upload/image-2d01aed7-c0dd-488b-bea7-7fceadfbb3fb.jpg)![](https://static.platzi.com/media/user_upload/image-ee5421d5-8f8c-4970-8531-364683aba1d7.jpg)
![](https://static.platzi.com/media/user_upload/image-99740c09-b392-4b2d-924e-a6f4cfa3a114.jpg)
```pythonimport csv def read\_csv(path):   with open(path,'r') as csvfile:      reader = csv.reader(csvfile, delimiter=',')      prices = \[int(row\[1]) for row in reader]      return sum(prices) response = read\_csv('./data.csv')print(response)```
```python import csv def read\_csv(path):    with open(path,'r') as csvfile:      reader = csv.reader(csvfile, delimiter=',')      prices = \[int(row\[1]) for row in reader]      return sum(prices) response = read\_csv('./data.csv') print(response) ```
```python import csv def read\_csv(path):   with open(path,'r') as csvfile:      reader = csv.reader(csvfile, delimiter=',')      prices = \[int(row\[1]) for row in reader]      return sum(prices) response = read\_csv('./data.csv')print(response) ```
`import csv` `def read_csv(path):   with open(path,'r') as csvfile:      reader = csv.reader(csvfile, delimiter=',')      prices = [int(row[1]) for row in reader]      return sum(prices)` `response = read_csv('./data.csv')print(response)`
import csv def read\_csv(path):   with open(path,'r') as csvfile:      reader = csv.reader(csvfile, delimiter=',')      prices = \[int(row\[1]) for row in reader]      return sum(prices) response = read\_csv('./data.csv')print(response)
Me costo muchisimo. Despues de 2 horas buque en google como cambiar el 'Valu'e del diccionario en un 'entero' para sumarlos. Tambien revise las respuestas pero no quede convencido con mi solucion. De todas maneras funciona ```js import csv import functools def read_csv(path): # Tu código aquí 👇 with open(path, 'r') as csvfile: #leer el csv reader = csv.reader(csvfile, delimiter=',') #crear el diccionario #al mismo tiempo convertir el value en entero (int) dict = {x : int(y) for x, y in reader} #sumar el Value del diccionario PorFin = sum(dict.values()) return PorFin total = PorFin return total response = read_csv('./data.csv') print(response) ```import csvimport functoolsdef read\_csv(path):   # Tu código aquí 👇   with open(path, 'r') as csvfile:      #leer el csv      reader = csv.reader(csvfile, delimiter=',')      #crear el diccionario      #al mismo tiempo convertir el value en entero (int)      dict = {x : int(y) for x, y in reader}      #sumar el Value del diccionario      PorFin = sum(dict.values())      return PorFin               total = PorFin   return total response = read\_csv('./data.csv')print(response)
Adjunto mi solución:import csv def read\_csv(path): total = 0 with open(path, "r") as csvfile: reader = csv.reader(csvfile, delimiter=",") for row in reader: total += int(row\[1]) return total response = read\_csv('./data.csv')print(response) ```js import csv def read_csv(path): total = 0 with open(path, "r") as csvfile: reader = csv.reader(csvfile, delimiter=",") for row in reader: total += int(row[1]) return total response = read_csv('./data.csv') print(response) ```
Adjunto mi solución: ![]()```python import csv def read_csv(path): total = 0 with open(path, "r") as csvfile: reader = csv.reader(csvfile, delimiter=",") for row in reader: total += int(row[1]) return total response = read_csv('./data.csv') print(response) ```
```python import csv def read_csv(path): # Tu código aquí 👇 with open(path) as csvfile: reader = csv.reader(csvfile,delimiter=",") acum = 0 for row in reader : acum=acum +int(row[1]) total = acum return total response = read_csv('./data.csv') print(response) ```import csv def read\_csv(path):   # Tu código aquí 👇   with open(path) as csvfile:      reader = csv.reader(csvfile,delimiter=",")      acum = 0      for row in reader :         acum=acum +int(row\[1])   total = acum   return total response = read\_csv('./data.csv')print(response)
undefined