PREGUNTA 1

  1. Solo puede contener elementos del mismo tipo.

  2. Permite operaciones vectorizadas sobre todos sus elementos.

  1. Puede contener elementos de distintos tipos.

  2. Es mutable, se pueden agregar, eliminar o cambiar elementos.

PREGUNTA 2

  1. ¿Qué tipo de estructura de datos es numeros? El vector dado “numeros” es de tipo numérico. b)Escribe el código para crear un data.frame llamado estudiantes que combine nombres, edades y numeros (como columna “notas”).
###Con R
##Primera manera
nombres<-c("Jhovana", "Cynthia", "Flor", "Irene", "Jorge", "Andersson")
edades<-c(20, 20, 21, 19, 20, 15)
numeros<-c(20, 18, 17, 10, 8, 9)
estudiantes <- data.frame(Nombres = nombres, Edades = edades, Notas = numeros)
estudiantes
##     Nombres Edades Notas
## 1   Jhovana     20    20
## 2   Cynthia     20    18
## 3      Flor     21    17
## 4     Irene     19    10
## 5     Jorge     20     8
## 6 Andersson     15     9
##Segunda manera (directo)
Estudiantes <- data.frame(Nombres=c("Rodolfo", "Stefan", "Luis"), Edad=c(15, 16, 17), Notas=c(13,14,15))
Estudiantes
##   Nombres Edad Notas
## 1 Rodolfo   15    13
## 2  Stefan   16    14
## 3    Luis   17    15
  1. ¿Cómo accederías al nombre del tercer estudiante?
###Con R
#Primer data.frame
estudiantes[3, 1]
## [1] "Flor"
#Segundo data.frame
Estudiantes[3, 1]
## [1] "Luis"

PREGUNTA 3

  1. Importa pandas y crea el DataFrame
###Con python
import pandas as pd
Tienda = pd.DataFrame({'Productos':['Laptod', 'Mouse', 'Teclado', 'Monitor', 'Auriculares'], 'Precio':[1200, 25, 75, 300, 150], 'Stock':[10, 50, 30, 15, 25]})
print(Tienda)
##      Productos  Precio  Stock
## 0       Laptod    1200     10
## 1        Mouse      25     50
## 2      Teclado      75     30
## 3      Monitor     300     15
## 4  Auriculares     150     25
  1. Muestra solo los productos con precio mayor a 100
###Con python
A1 = Tienda[Tienda["Precio"]>100]
print(A1)
##      Productos  Precio  Stock
## 0       Laptod    1200     10
## 3      Monitor     300     15
## 4  Auriculares     150     25
##Para mostrar solo productos que cumplan la condición dada
A1['Productos']
## 0         Laptod
## 3        Monitor
## 4    Auriculares
## Name: Productos, dtype: object
  1. Calcula el precio promedio de todos los productos
###Con python
Tienda['Precio'].mean()
## np.float64(350.0)
  1. Agrega una nueva columna llamada ‘categoria’ con valores [‘Computadora’, ‘Accesorio’, ‘Accesorio’, ‘Computadora’, ‘Accesorio’]
###Con python
Tienda["Categoría"] = ["computadora", "Accesorio", "Accesorio", "Computadora", "Accesorio"]
print(Tienda)
##      Productos  Precio  Stock    Categoría
## 0       Laptod    1200     10  computadora
## 1        Mouse      25     50    Accesorio
## 2      Teclado      75     30    Accesorio
## 3      Monitor     300     15  Computadora
## 4  Auriculares     150     25    Accesorio

PREGUNTA 4

 Reciba un vector de calificaciones

 Use estructuras condicionales para categorizar cada calificación

 Retorne un vector con las categorías correspondientes

###Con R
categorizar_nota <- function(notas) {
  categorias <- c()
for (nota in notas) {
   if (nota >= 18 && nota <= 20){
    categorias <- c(categorias, "Excelente")
  } else if (nota >= 15 && nota < 18){
    categorias <- c(categorias, "Bueno")
  } else if (nota >= 11 && nota < 15){
    categorias <- c(categorias, "Regular")
  } else if (nota >= 0 && nota < 11){
      categorias <- c(categorias, "Deficiente")
  } else {
    categorias <- c(categorias, "Invalido")
  }
}
  return(categorias)
}
##Aplicando el código en notas_prueba
notas_prueba <- c(19, 12, 16, 8, 20, 14)
categorizar_nota(notas_prueba)
## [1] "Excelente"  "Regular"    "Bueno"      "Deficiente" "Excelente" 
## [6] "Regular"

PREGUNTA 5

Problema práctico: Crea un programa en Python que simule un sistema de inventario simple.

###Con python
# Inventario inicial
inventario = {
    'manzanas': 50,
    'naranjas': 30,
    'plátanos': 0,
    'uvas': 20
}

print("Inventario actual")
## Inventario actual
for producto, cantidad in inventario.items():
    print(f"{producto}: {cantidad}")
## manzanas: 50
## naranjas: 30
## plátanos: 0
## uvas: 20
  1. Use condicionales para identificar productos agotados (cantidad = 0) y productos con bajo stock (cantidad < 25)
###Con python
print("\nEstado de productos")
## 
## Estado de productos
for producto, cantidad in inventario.items():
    if cantidad == 0:
        print(f"{producto} AGOTADO")
    elif cantidad < 25:
        print(f"{producto} BAJO stock (cantidad: {cantidad})")
    else:
        print(f"{producto} Stock suficiente (cantidad: {cantidad})")
## manzanas Stock suficiente (cantidad: 50)
## naranjas Stock suficiente (cantidad: 30)
## plátanos AGOTADO
## uvas BAJO stock (cantidad: 20)
  1. Cree una lista con los nombres de productos que necesitan reabastecimiento (cantidad ≤25)
###Con python
reabastecer = [producto for producto, cantidad in inventario.items() if cantidad <= 25]
print("\n Productos que necesitan reabastecimiento ")
## 
##  Productos que necesitan reabastecimiento
print(reabastecer)
## ['plátanos', 'uvas']

PREGUNTA 6

  1. Escribe una función que calcule estadísticas básicas de un vector numérico:
###Con R
estadisticas_basicas <- function(vector_numerico) {
  media <- mean(vector_numerico)
  mediana <- median(vector_numerico)
  minimo <- min(vector_numerico)
  maximo <- max(vector_numerico)
  
  return(list(
    media = media,
    mediana = mediana,
    minimo = minimo,
    maximo = maximo
  ))
}

## Ejemplo de uso:
numeros <- c(14, 5, 68, 12, 10)
estadisticas_basicas(numeros)
## $media
## [1] 21.8
## 
## $mediana
## [1] 12
## 
## $minimo
## [1] 5
## 
## $maximo
## [1] 68
  1. Escribe la función equivalente en Python:
###Con python
import numpy as np

def estadisticas_basicas(lista_numeros):
    array = np.array(lista_numeros)
    
    media = np.mean(array)
    mediana = np.median(array)
    minimo = np.min(array)
    maximo = np.max(array)
    
    return {
        "media": media,
        "mediana": mediana,
        "minimo": minimo,
        "maximo": maximo
    }

# Ejemplo de uso
numeros = [10, 5, 8, 20, 15]
print(estadisticas_basicas(numeros))
## {'media': np.float64(11.6), 'mediana': np.float64(10.0), 'minimo': np.int64(5), 'maximo': np.int64(20)}

PREGUNTA 7

Parte A : Explica el proceso de instalación y carga de paquetes:  En R: ¿Cuál es la diferencia entre install.packages() y library()?

Cuando uno escribe install.packages(“ggplot2”)[o otro paquete], lo que hace es descargar e instalar el paquete en su computadora, directamente desde CRAN. Este procedimiento se realiza solo una vez. En cambio, cuando uno escribelibrary(ggplot2), lo que hace es cargar el paquete en su sesión actual de R para poder usar sus funciones. Esto sí se realiza cada vez que uno quiere usarlo en un nuevo script o proyecto.

En Python: ¿Cuáles la diferencia entre pip install y import?

En Python, la diferencia es parecida: se utiliza pip install pandas (o otro paquete) para instalar la librería en el entorno de Python,lo cual se realiza solo una vez, en cambio, cuando se escribe import pandas (o el nombre del paquete correspondiente), se carga la librería en la sesión actual para poder usar sus funciones; esto debe hacerse cada vez que se inicia un nuevo script o proyecto.

Parte B : Escribe el código para:

 Instalar y cargar el paquete dplyr en R

###Con R
##Instalamos el paquete: "install.packages("dplyr")"
library(dplyr)
## 
## Adjuntando el paquete: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union

 Instalar e importar la librería pandas en Python (con alias pd)

###Con python
import pandas as pd

 Usar una función básica de cada uno (ej: filter() en dplyr, read_csv() en pandas)

###Con R
library(dplyr)

# Creando data.frame
datos <- data.frame(
  nombre = c("Jhovana", "Cynthia", "Flor", "Irene", "Jorge", "Andersson"),
  edad = c(20, 20, 21, 19, 20, 15),
  notas = c(20, 18, 17, 10, 8, 9)
)
datos
##      nombre edad notas
## 1   Jhovana   20    20
## 2   Cynthia   20    18
## 3      Flor   21    17
## 4     Irene   19    10
## 5     Jorge   20     8
## 6 Andersson   15     9
# Filtrar filas con notas mayores a 16
datos_filt <- filter(datos, notas > 16)
datos_filt
##    nombre edad notas
## 1 Jhovana   20    20
## 2 Cynthia   20    18
## 3    Flor   21    17
###Con python
import pandas as pd
df = pd.read_csv("JHOVANA/clase de progrmación/tarea1/tarea1.csv") 
print(df)
##        Year  ...                             Industry_code_ANZSIC06
## 0      2024  ...  ANZSIC06 divisions A-S (excluding classes K633...
## 1      2024  ...  ANZSIC06 divisions A-S (excluding classes K633...
## 2      2024  ...  ANZSIC06 divisions A-S (excluding classes K633...
## 3      2024  ...  ANZSIC06 divisions A-S (excluding classes K633...
## 4      2024  ...  ANZSIC06 divisions A-S (excluding classes K633...
## ...     ...  ...                                                ...
## 55615  2013  ...  ANZSIC06 groups C111, C112, C113, C114, C115, ...
## 55616  2013  ...  ANZSIC06 groups C111, C112, C113, C114, C115, ...
## 55617  2013  ...  ANZSIC06 groups C111, C112, C113, C114, C115, ...
## 55618  2013  ...  ANZSIC06 groups C111, C112, C113, C114, C115, ...
## 55619  2013  ...  ANZSIC06 groups C111, C112, C113, C114, C115, ...
## 
## [55620 rows x 10 columns]

PREGUNTA 8

 a) Escribe el código en R para leer el archivo “estudiantes.csv”

###Con R
library(dplyr)
estudiantes <- read.csv("JHOVANA/Libro1.csv", stringsAsFactors = FALSE)
print(estudiantes)
##    nombre edad        carrera promedio
## 1 Jhovana   20 Estad\xedstica       18
## 2 Cynthia   19  Matem\xe1tica       16
## 3    Luis   21      F\xedsica       14
## 4     Ana   22  Ingenier\xeda       17
## 5  Carlos   20 Estad\xedstica       13

 b) Escribe el código en Python para leer el mismo archivo

###Con python
import pandas as pd
df = pd.read_csv("JHOVANA/Libro1.csv", encoding="latin1")
print(df)
##     nombre  edad      carrera  promedio
## 0  Jhovana    20  Estadística        18
## 1  Cynthia    19   Matemática        16
## 2     Luis    21       Física        14
## 3      Ana    22   Ingeniería        17
## 4   Carlos    20  Estadística        13

 c) En R, filtra estudiantes con promedio > 15 usando dplyr

###Con R
library(dplyr)

#Filtrar estudiantes con promedio mayor a 15 
estudiantes_sup <- estudiantes %>%
filter(promedio > 15)

# Mostrar el resultado
print(estudiantes_sup)
##    nombre edad        carrera promedio
## 1 Jhovana   20 Estad\xedstica       18
## 2 Cynthia   19  Matem\xe1tica       16
## 3     Ana   22  Ingenier\xeda       17

 d) En Python, calcula el promedio por carrera usando pandas

###Con python
import pandas as pd

# Supongamos que ya leíste el CSV
df = pd.read_csv("JHOVANA/Libro1.csv", encoding="latin1")

# Calcular promedio por carrera
promedio_por_carrera = df.groupby('carrera')['promedio'].mean()

# Mostrar resultado
print(promedio_por_carrera)
## carrera
## Estadística    15.5
## Física         14.0
## Ingeniería     17.0
## Matemática     16.0
## Name: promedio, dtype: float64

 e) ¿Qué parámetro usarías si el archivo tiene problemas de codificación (tildes, ñ)?

##En R
estudiantes <- read.csv("JHOVANA/Libro1.csv", stringsAsFactors = FALSE, fileEncoding = "Latin1")
estudiantes
##    nombre edad     carrera promedio
## 1 Jhovana   20 Estadística       18
## 2 Cynthia   19  Matemática       16
## 3    Luis   21      Física       14
## 4     Ana   22  Ingeniería       17
## 5  Carlos   20 Estadística       13
###Con python
##Ya se realizó antes, entonces, recordando:
df = pd.read_csv("JHOVANA/Libro1.csv", encoding="latin1")
df
##     nombre  edad      carrera  promedio
## 0  Jhovana    20  Estadística        18
## 1  Cynthia    19   Matemática        16
## 2     Luis    21       Física        14
## 3      Ana    22   Ingeniería        17
## 4   Carlos    20  Estadística        13

PREGUNTA 9

a. Caso práctico con datos del INEI: Supón que tienes datos de población por departamento del Perú.

###Con R
departamentos <- c("Lima", "Arequipa", "La Libertad", "Piura", "Junín")
poblacion_2020 <- c(10628470, 1382730, 1905301, 2047954, 1246038)
###Con R
# Crear data.frame
df <- data.frame(departamento = departamentos, poblacion_2020 = poblacion_2020)

# Calcular porcentaje
df$porcentaje <- round((df$poblacion_2020 / sum(df$poblacion_2020)) * 100, 2)

# Mostrar resultados
print(df[, c("departamento", "porcentaje")])
##   departamento porcentaje
## 1         Lima      61.76
## 2     Arequipa       8.03
## 3  La Libertad      11.07
## 4        Piura      11.90
## 5        Junín       7.24
  1. Identifica el departamento más y menos poblado
###Con R
# Departamento más poblado
departamento_max <- df$departamento[which.max(df$poblacion_2020)]

# Departamento menos poblado
departamento_min <- df$departamento[which.min(df$poblacion_2020)]

cat("Departamento más poblado:", departamento_max, "\n")
## Departamento más poblado: Lima
cat("Departamento menos poblado:", departamento_min, "\n")
## Departamento menos poblado: Junín
  1. Crea una categorización: “Alta densidad” (>;2M hab), “Media densidad” (1-2M hab), “Baja densidad” (<1M hab)
###Con R
# Datos
departamentos <- c("Lima", "Arequipa", "La Libertad", "Piura", "Junín")
poblacion_2020 <- c(10628470, 1382730, 1905301, 2047954, 1246038)

#Creando
densidad <- cut(poblacion_2020,
                breaks = c(-Inf, 1000000, 2000000, Inf),
                labels = c("Baja densidad", "Media densidad", "Alta densidad"))

# Mostrando resultados
paste(departamentos, ":", densidad)
## [1] "Lima : Alta densidad"         "Arequipa : Media densidad"   
## [3] "La Libertad : Media densidad" "Piura : Alta densidad"       
## [5] "Junín : Media densidad"

PREGUNTA 10

a) Menciona 2 ventajas de R sobre Python para análisis estadístico

1. Tiene muchos paquetes especializados para estadística.

2. Hace gráficos estadísticos muy fáciles con el paquete ggplot2

b) Menciona 2 ventajas de Python sobre R para ciencia de datos en general

1. Se puede usar para muchas cosas aparte de estadísticas, como machine learning y desarrollo web, en pocas palabras es muy variado su uso.

2. Tiene librerías potentes como pandas y scikit-learn para análisis de datos y modelos de machine learning.