Solo puede contener elementos del mismo tipo.
Permite operaciones vectorizadas sobre todos sus elementos.
Puede contener elementos de distintos tipos.
Es mutable, se pueden agregar, eliminar o cambiar elementos.
###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
###Con R
#Primer data.frame
estudiantes[3, 1]
## [1] "Flor"
#Segundo data.frame
Estudiantes[3, 1]
## [1] "Luis"
###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
###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
###Con python
Tienda['Precio'].mean()
## np.float64(350.0)
###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
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"
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
###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)
###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']
###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
###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)}
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]
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
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
###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
###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"
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.