Un vector en R es la estructura básica que contiene elementos homogéneos (todos del mismo tipo: numeric, character, etc.); tiene indexación base-1, índices empiezan en 1.
v <- c(10, 20, 30)
v[1]
## [1] 10
Una lista en Python es una colección ordenada y mutable de objetos, que puede contener elementos heterogéneos (distintos tipos); índice base 0.
L = [10, "hola", 3.14]
print(L[0])
## 10
En R indexa desde 1 y solo tiene indexación posicional, mientras que Python (pandas) indexa desde 0 y además permite indexación dual: por posición (.iloc) y por etiqueta (.loc). En R
#Ejemplo de R solo indexacion posicional
df <- data.frame(
nombre = c("Ana", "Luis", "María"),
edad = c(20, 22, 21))
#Muestra la 1era columna y 1era fila
df[1, 1]
## [1] "Ana"
En Python
import pandas as pd
#Ejemplo de python indexacion dual
df = pd.DataFrame({
"nombre": ["Ana", "Luis", "María"],
"edad": [20, 22, 21]})
#Por posicion .iloc y empieza desde cero
print(df.iloc[0, 0])
## Ana
#Por etiqueta .loc
print(df.loc[0, "nombre"])
## Ana
# Datos dados
numeros <- c(10, 25, 30, 15, 40)
nombres <- c("Ana", "Bruno", "Carlos", "Diana", "Elena")
edades <- c(22, 25, 23, 24, 22)
class(numeros) #class para saber el tipo de estructura de un vector
## [1] "numeric"
estudiantes <- data.frame(nombre = nombres,edad = edades,notas = numeros)
estudiantes
## nombre edad notas
## 1 Ana 22 10
## 2 Bruno 25 25
## 3 Carlos 23 30
## 4 Diana 24 15
## 5 Elena 22 40
estudiantes$nombre[3] #diferentes formas de hallar el 3er estudiante
## [1] "Carlos"
nombres[3]
## [1] "Carlos"
datos = {
'PRODUCTO': ['Laptop', 'Mouse', 'Teclado', 'Monitor', 'Auriculares'],
'PRECIO': [1200, 25, 75, 300, 150],
'STOCK': [10, 50, 30, 15, 25]
}
import pandas as pd
df = pd.DataFrame(datos)
print(df)
## PRODUCTO PRECIO STOCK
## 0 Laptop 1200 10
## 1 Mouse 25 50
## 2 Teclado 75 30
## 3 Monitor 300 15
## 4 Auriculares 150 25
df_mayor_100 = df[df['PRECIO'] > 100] #>100 para los precios mayores a 100
print(df_mayor_100)
## PRODUCTO PRECIO STOCK
## 0 Laptop 1200 10
## 3 Monitor 300 15
## 4 Auriculares 150 25
precio_promedio = df['PRECIO'].mean()
#mean para calcular la media(promedio)
print("Precio promedio:", precio_promedio)
## Precio promedio: 350.0
df['CATEGORIA'] = ['Computadora', 'Accesorio', 'Accesorio', 'Computadora', 'Accesorio']
print(df)
## PRODUCTO PRECIO STOCK CATEGORIA
## 0 Laptop 1200 10 Computadora
## 1 Mouse 25 50 Accesorio
## 2 Teclado 75 30 Accesorio
## 3 Monitor 300 15 Computadora
## 4 Auriculares 150 25 Accesorio
categorizar_notas <- function(notas) {
categorias <- c() # vector vacío para guardar las categorías
for (nota in notas) {
if (nota >= 18 && nota <= 20) {
categorias <- c(categorias, "Excelente") #para notas 18-20
} else if (nota >= 15 && nota < 18) {
categorias <- c(categorias, "Bueno") #notas de 15-18
} else if (nota >= 11 && nota < 15) {
categorias <- c(categorias, "Regular") #notas de 11-15
} else if (nota >= 0 && nota < 11) {
categorias <- c(categorias, "Deficiente") #notas de 0-11
}}
return(categorias)
}
# Prueba que dio el problema
notas_prueba <- c(19, 12, 16, 8, 20, 14)
data.frame(Nota = notas_prueba, Categoria = categorizar_notas(notas_prueba)) #para que aparezca en una tabla
## Nota Categoria
## 1 19 Excelente
## 2 12 Regular
## 3 16 Bueno
## 4 8 Deficiente
## 5 20 Excelente
## 6 14 Regular
#Crea un programa en Python que simule un sistema de inventario simple.
inventario = {
'manzanas': 50,
'naranjas': 30,
'plátanos': 0,
'uvas': 20}
for producto, cantidad in inventario.items():
print(f"{producto}: {cantidad}")
## manzanas: 50
## naranjas: 30
## plátanos: 0
## uvas: 20
for producto, cantidad in inventario.items():
if cantidad == 0:
print(f"{producto} está agotado.") #para cantidad = 0
elif cantidad < 25:
print(f"{producto} tiene bajo stock ({cantidad}).") #cantidad<25
## plátanos está agotado.
## uvas tiene bajo stock (20).
reabastecer = [producto for producto, cantidad in inventario.items() if cantidad <= 25]
print("Necesitan reabastecimiento:", reabastecer)
## Necesitan reabastecimiento: ['plátanos', 'uvas']
estadisticas_basicas <- function(vector_numerico) {
lista_resultados <- list(
media = mean(vector_numerico), #mean para la media
mediana = median(vector_numerico), #median para la mediana
minimo = min(vector_numerico), #min = minimo
maximo = max(vector_numerico)) #max = maximo
return(lista_resultados)}
# Ejemplo para prueba
valores <- c(5, 8, 12, 3, 7, 10)
estadisticas_basicas(valores)
## $media
## [1] 7.5
##
## $mediana
## [1] 7.5
##
## $minimo
## [1] 3
##
## $maximo
## [1] 12
import statistics #statistics importar para la mediana
def estadisticas_basicas(lista_numeros):
resultados = {
"media": sum(lista_numeros) / len(lista_numeros),
#promedio, dividido en len que es los valores que tiene la lista
"mediana": statistics.median(lista_numeros), #mediana
"minimo": min(lista_numeros), #mínimo
"maximo": max(lista_numeros)} #máximo
return resultados
# Ejemplo de prueba
valores = [5, 8, 12, 3, 7, 10]
print(estadisticas_basicas(valores))
## {'media': 7.5, 'mediana': 7.5, 'minimo': 3, 'maximo': 12}
install.packages(“nombre del paquete”):
Sirve para descargar e instalar el paquete desde CRAN (se hace solo una vez).
library(“nombre del paquete”):
Sirve para cargar el paquete ya instalado en la sesión actual de R. Esto se debe hacer cada vez que se qiera usar el paquete en un script.
pip install “nombre de la libreria” Sirve para descargar e instalar la librería desde PyPI. Se hace en la terminal/console (solo una vez).
import “nombre_libreria” Sirve para importar la librería ya instalada en tu script y usar sus funciones.
install.packages(“dplyr”): Instala una sola vez
library(dplyr): Carga en la sesión
En la terminal instalar pandas con: pip install pandas
import pandas as pd #para importar pandas
#Cargar paquete
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
#Crear un data frame de ejemplo
df <- data.frame(
nombre = c("Ana", "Luis", "Marta", "Juan"),
edad = c(23, 30, 19, 25))
#Filter() para seleccionar mayores de 20
df_filtrado <- filter(df, edad > 20)
print(df_filtrado)
## nombre edad
## 1 Ana 23
## 2 Luis 30
## 3 Juan 25
import pandas as pd
#Crear un DataFrame desde un diccionario
df = pd.DataFrame({
"nombre": ["Ana", "Luis", "Marta", "Juan"],
"edad": [23, 30, 19, 25]})
#Guardo a CSV (simulación de un archivo)
df.to_csv("personas.csv", index=False)
#Uso read_csv() para leer el archivo
df_leido = pd.read_csv("personas.csv")
#Filtrar mayores de 20
df_filtrado = df_leido[df_leido["edad"] > 20]
print(df_filtrado)
## nombre edad
## 0 Ana 23
## 1 Luis 30
## 3 Juan 25
#Ejemplo del escenario que pide
estudiantes <- data.frame(
nombre = c("Carla", "Diego", "Valeria", "Andrés", "Sofía"),
edad = c(20, 22, 19, 23, 21),
carrera = c("Arquitectura", "Psicología", "Arquitectura", "Economía", "Psicología"),
promedio = c(16.5, 14.0, 18.0, 12.5, 15.5))
#Guardo como csv
write.csv(estudiantes, "estudiantes.csv", row.names = FALSE)
estudiantes <- read.csv("estudiantes.csv", header = TRUE, sep = ",")
#header = true para que aparezca la columna con su categoria
#sep = "," indica que el archico esta separado por comas
print(estudiantes)
## nombre edad carrera promedio
## 1 Carla 20 Arquitectura 16.5
## 2 Diego 22 Psicología 14.0
## 3 Valeria 19 Arquitectura 18.0
## 4 Andrés 23 Economía 12.5
## 5 Sofía 21 Psicología 15.5
estudiantes = pd.read_csv("estudiantes.csv")
print(estudiantes)
## nombre edad carrera promedio
## 0 Carla 20 Arquitectura 16.5
## 1 Diego 22 Psicología 14.0
## 2 Valeria 19 Arquitectura 18.0
## 3 Andrés 23 Economía 12.5
## 4 Sofía 21 Psicología 15.5
library(dplyr)
estudiantes %>% filter(promedio > 15)
## nombre edad carrera promedio
## 1 Carla 20 Arquitectura 16.5
## 2 Valeria 19 Arquitectura 18.0
## 3 Sofía 21 Psicología 15.5
#muestra solo estudiantes con promedio mayor a 15
promedio_carrera = estudiantes.groupby("carrera")[["promedio"]].mean()
print(promedio_carrera)
## promedio
## carrera
## Arquitectura 17.25
## Economía 12.50
## Psicología 14.75
#mean para la media(promedio)
EN R
estudiantes <- read.csv("estudiantes.csv", fileEncoding = "UTF-8")
EN PYTHON
estudiantes = pd.read_csv("estudiantes.csv", encoding="utf-8")
EN PYTHON
import pandas as pd
datos_peru = {
'departamento': ["Lima", "Arequipa", "La Libertad", "Piura", "Junín"],
'poblacion_2020': [10628470, 1382730, 1905301, 2047954, 1246038]
}
df = pd.DataFrame(datos_peru)
total = df["poblacion_2020"].sum()
df["porcentaje"] = (df["poblacion_2020"] / total * 100).round(2).astype(str) + "%"
#round(2) redondea a 2 decimales
#.astype(str) convierte a texto
#% para que aparezca con signo
print(df[["departamento", "poblacion_2020", "porcentaje"]])
## departamento poblacion_2020 porcentaje
## 0 Lima 10628470 61.76%
## 1 Arequipa 1382730 8.03%
## 2 La Libertad 1905301 11.07%
## 3 Piura 2047954 11.9%
## 4 Junín 1246038 7.24%
mas_poblado = df.loc[df["poblacion_2020"].idxmax(), "departamento"]
#idxmax() devuelve el índice donde se encuentra el valor máximo
menos_poblado = df.loc[df["poblacion_2020"].idxmin(), "departamento"]
#idxmin() devuelve el índice donde se encuentra el valor máximo
print("Más poblado:", mas_poblado)
## Más poblado: Lima
print("Menos poblado:", menos_poblado)
## Menos poblado: Junín
#Categorizo por densidad
def categorizar(p): #p=poblacion
if p > 2000000:
return "Alta densidad"
elif p >= 1000000:
return "Media densidad"
else: #si no cumple los anteriores sale baja densidad
return "Baja densidad"
df["densidad"] = df["poblacion_2020"].apply(categorizar)
print(df[["departamento", "poblacion_2020", "densidad"]])
## departamento poblacion_2020 densidad
## 0 Lima 10628470 Alta densidad
## 1 Arequipa 1382730 Media densidad
## 2 La Libertad 1905301 Media densidad
## 3 Piura 2047954 Alta densidad
## 4 Junín 1246038 Media densidad
#.apply aplica la funcion creada "categorizar" a cada uno
Especializado para estadistica: R esta mas enfocado a estadistica y en eso es mejor que python, porque tiene librerías nativas y muy maduras como stats, lme4, survival
Visualizacion integrada a estadistica: Con librerías como ggplot2 o lattice, R permite crear gráficos estadísticos muy específicos mejor que Python
Mayor versatilidad: Python no solo se usa para análisis de datos, sino también para desarrollo web, automatización, inteligencia artificial, machine learning, etc. Esto lo hace mas versatil a comparacion con R que es mas centralizado para estadistica.
Manejo de grandes volumenes de datos: Python, junto con librerías como Dask, PySpark o su integración con bases de datos SQL y entornos en la nube , permite trabajar con Big Data y conjuntos de datos que exceden la memoria RAM de un computador personal; en cambio R tiene limitaciones en eficiencia y escalabilidad al trabajar con volúmenes muy grandes.