Seminario-de-Lenguajes-Python

馃捇Practica 3

Objetivos

Archivos CSV

Veamos el archivo netflix_titles.csv con el que estuvieron trabajando en la teor铆a

path_files = "files"
archivo_net = "netflix_titles.csv"
import csv
import os.path
import os
path_arch = os.path.join(os.getcwd(), path_files)
archivo = open(os.path.join(path_arch, archivo_net), "r")
data_net = csv.reader(archivo, delimiter=',')
header , datos = next(data_net), list(data_net )
header
for linea in datos:
    print(linea)

1.1 Ejercicios

1) Resoluci贸n

Encontrar qu茅 tipo de shows tiene un pa铆s determinado.

Analizar:

2) Resoluci贸n

Informe la lista de pa铆ses del archivo en orden alfab茅ticamente creciente.

3) Resoluci贸n

Informe los shows de un a帽o determinado, realice una funci贸n que reciba un a帽o y la l铆nea como argumentos.

Fechas - datatime

Documentaci贸n datatime

import datetime

El m贸dulo datetime crea un objeto con el cual podemos realizar operaciones para c谩lculo de fechas.

x = datetime.datetime.now()
x
x.hour
horario_juego = datetime.datetime.now().strftime("%d/%m/%Y,%H:%M:%S")
horario_juego

2.1 Ejercicios

import os
logs = 'BBB_nuevo.csv'
with open(os.path.join(path_arch, logs)) as logs_moodle:
    data_logs = csv.reader(logs_moodle, delimiter=',')
    header , logs_recurso = next(data_logs), list(data_logs )
for linea in logs_recurso:
    print(linea[0])

Analicemos c贸mo calcular el d铆a de la semana que corresponde el log, el dato est谩 guardado como string y para hacer consults debemos convertirlo a objeto datetime. El segundo argumento de la funci贸n strptime corresponde al formato, donde debemos indicar c贸mo se encuentra cada dato:

formato = "%d/%m/%Y %H:%M"
print(datetime.datetime.strptime(linea[0], formato).weekday())

dias_semana = ['lunes', 'martes', 'miercoles', 'jueves', 'viernes', 'sabado','domingo']
nro_dia = datetime.datetime.strptime(linea[0], formato).weekday()
dias_semana[nro_dia]
datetime.datetime.strptime(linea[0], formato).weekday()

4) Resoluci贸n

Indique los d铆as de la semana que m谩s registros hubo:

5) Resoluci贸n

Calcule cu谩ntos dias pasaron entre el primer registro y el 煤ltimo

Ejercicio_1

import csv
import os
import json

def Paises(csv_reader:list[list[str]]):
    for linea in csv_reader:
        if linea[1] == "TV Show" and linea[5] == "Argentina": 
            print(f"{linea[2]:<40} {linea[3]}")

ruta = os.path.dirname(os.path.realpath("."))
ruta_archivo = os.path.join(ruta, "Practica3", "BBB_nuevo.csv")

archivo = open(ruta_archivo, "r", encoding="utf-8")
csv_reader = csv.reader(archivo, delimiter=',')

#encabezado = csv_reader.__next__()
encabezado = next(csv_reader)
datos = list(csv_reader)
print(encabezado)
Paises(datos)
archivo.close()

Ejercicio_2

import csv
import os

def Paises(csv_reader:list[list[str]]):
    orden = []
    for linea in csv_reader:
        orden.append(linea[5])
    orden = (set(orden))
    orden = sorted(orden)
    print(orden)
ruta = os.path.dirname(os.path.realpath("."))
ruta_archivo = os.path.join(ruta, "Practica3", "netflix_titles.csv")
archivo = open(ruta_archivo, "r", encoding="utf-8")
csv_reader = csv.reader(archivo, delimiter=',')
encabezado = next(csv_reader)
datos = list(csv_reader)
Paises(datos)
archivo.close()

Ejercicio_3

import csv
import os

def Paises(csv_reader:list[list[str]]):
    for linea in csv_reader:
        if linea[7] == "2021" : 
            print(linea[7])

ruta = os.path.dirname(os.path.realpath("."))
ruta_archivo = os.path.join(ruta, "Practica3", "netflix_titles.csv")
archivo = open(ruta_archivo, "r", encoding="utf-8")
csv_reader = csv.reader(archivo, delimiter=',')

encabezado = next(csv_reader)
datos = list(csv_reader)
print(encabezado)

Paises(datos)

archivo.close()

Ejercicio_4

import csv
import os
from datetime import date
import datetime 
import calendar
from collections import Counter

def findDay(fecha:str): 
    born = datetime.datetime.strptime(fecha,"%d/%m/%Y %H:%M").weekday() 
    return (calendar.day_name[born]) 

#3/03/2022 07:22

ruta = os.path.dirname(os.path.realpath("."))

path_arch = os.path.join(ruta, "Practica3")
ruta = os.path.join(path_arch, 'BBB_nuevo.csv')

with open(ruta,"r", encoding="utf-8") as logs_moodle:
    data_logs = csv.reader(logs_moodle, delimiter=',')
    header , logs_recurso = next(data_logs), list(data_logs )

dias_semanales:list[str]

dias_semanales = Counter([findDay(fecha[0]) for fecha in logs_recurso])
print(dias_semanales.most_common(7))

Ejercicio_5

import csv
from operator import length_hint
import os
from datetime import date
import datetime 
import calendar
from collections import Counter

def findDay(fecha:str): 
    born = datetime.datetime.strptime(fecha,"%d/%m/%Y %H:%M").weekday() 
    return (calendar.day_name[born]) 

#3/03/2022 07:22

ruta = os.path.dirname(os.path.realpath("."))

path_arch = os.path.join(ruta, "Practica3")
ruta = os.path.join(path_arch, 'BBB_nuevo.csv')

with open(ruta,"r", encoding="utf-8") as logs_moodle:
    data_logs = csv.reader(logs_moodle, delimiter=',')
    header , logs_recurso = next(data_logs), list(data_logs )

dias_semanales:list[str]

print(logs_recurso[0][0])
fechas = logs_recurso[0][0].split('/')
dia = int(fechas[0])
mes = int(fechas[1])
anio = int(fechas[2][0:4])



a = datetime.datetime(anio, mes, dia, 00, 00) 

fechas2 = logs_recurso[len(logs_recurso)-1][0].split('/')
dia2 = int(fechas2[0])
mes2 = int(fechas2[1])
anio2 = int(fechas2[2][0:4])

b = datetime.datetime(anio2, mes2, dia2, 00, 00) 
c = a-b  
print('Difference: ', c)