Python

Pandas

¿Qué aprenderás en esta sección?

1. Qué es Pandas e instalación.

2. Series y DataFrames.

3. Filtros en DataFrames.

4. Ejercicios.

Descarga el archivo para seguir la clase en Jupyter:

Descargar Archivo

1. Qué es Pandas e instalación

¿Qué es Pandas?

Pandas es una de las librerías más importantes y utilizadas en Python para la manipulación y análisis de datos. Ofrece estructuras de datos y funciones de alto rendimiento diseñadas para facilitar el trabajo con datos etiquetados o de serie temporal.

Pandas proporciona dos estructuras de datos principales:

Series: Un array unidimensional que puede contener cualquier tipo de datos.

DataFrame: Una tabla bidimensional con filas y columnas etiquetadas. Es la estructura más utilizada y potente en Pandas.

Con las estructuras de datos Series y DataFrame, puedes realizar una amplia variedad de operaciones de manera eficiente. Este artículo cubre los conceptos básicos y proporciona algunos ejercicios prácticos para ayudarte a comenzar con Pandas. Con la práctica, podrás manejar datos más complejos y realizar análisis avanzados, incluyendo aplicaciones en finanzas.

Instalación

Para instalar Pandas, simplemente abre tu terminal o línea de comandos y ejecuta:

pip install pandas

Importar Pandas

Para comenzar a usar Pandas, primero debes importarlo en tu script de Python:

import pandas as pd

¡Espero que disfrutes aprendiendo y usando Pandas!


2. Series y DataFrames

Series

Una Series es similar a un array unidimensional, una lista o una columna en una tabla. Puedes crear una Series a partir de una lista:

import pandas as pd

data = [1, 2, 3, 4, 5]
series = pd.Series(data)
print(series)

DataFrames

Un DataFrame es una tabla bidimensional con filas y columnas etiquetadas. Puedes crear un DataFrame a partir de un diccionario de listas:

Ejercicio 1:

data = {
    'Nombre': ['Ana', 'Luis', 'Pedro', 'Juan'],
    'Edad': [28, 34, 29, 42],
    'Ciudad': ['Madrid', 'Barcelona', 
               'Valencia', 'Sevilla']
}

df = pd.DataFrame(data)
print(df)

Ejercicio 2:

data = {'id':[1,2,3,4,5],
        'name':['Cata','Lore','Juan','José','Fer'],
        'gastos':[23.4,23.7,43.3,34.4,34.2]}

print(data)
df = pd.DataFrame(data)

Utilidades básicas

Solicitar el DataFrame en función de las columnas:

pd.DataFrame(data, columns=['name','gastos','id'])

Ver solo una columna del DataFrame (1):

df.name

Ver solo una columna del DataFrame (2):

df['name']

Agregar una columna:

location = ['CDMX','Madrid','París','NYC','Londres']
df['ciudades'] = location
df

Es importante notar que para agregar una columna (o un vector) al DataFrame, este debe tener el mismo tamaño que el resto de las columnas de dicho DataFrame.

Transponer un DataFrame:

df.T

3. Filtros en DataFrames

Loc e iloc para filtrar

El método iloc se utiliza en los DataFrames para seleccionar los elementos en base a su ubicación. Su sintaxis es data.iloc[filas.columnas]

Ejemplo al buscar la posición 1 (horizontal) de la tabla:

df.loc[1]

Imprimir el valor que se encuentra en la posición 0,1 (renglón, fila) del DataFrame:

df.iloc[0,1]

Imprimir todos los renglones de la columna 1 del DataFrame:

df.iloc[:,1]

Imprimir las filas 0 y 1 del DataFrame:

df.iloc[0:2]

Imprimir todas las filas de las primeras dos columnas del DataFrame:

df.iloc[:,0:2]

Imprimir la fila cero y la fila 2 del DataFrame:

df.iloc[[0,2]]

Imprimir la columna cero y la columna 2 del DataFrame:

df.iloc[[0,2]]

Imprimir la columna 'name' del DataFrame:

df.loc[:,'name']

Diferencia entre loc e iloc

En Pandas, .loc e .iloc son dos métodos utilizados para acceder a los datos en un DataFrame, pero tienen diferencias importantes en cuanto a cómo seleccionan los datos.

Método 'loc'

Se usa para acceder a un grupo de filas y columnas por etiquetas o una condición booleana.

Selecciona por etiquetas: Usas los nombres de las filas y columnas.

Incluye el extremo superior: Cuando seleccionas un rango, ambos extremos están incluidos.

Acepta condiciones booleanas: Puedes pasar una serie de condiciones booleanas para filtrar filas.

Ejemplos con 'loc'

Seleccionar una fila por su etiqueta (nombre de la fila):

data = {'A': [1, 2, 3], 'B': [4, 5, 6]}
df = pd.DataFrame(data, index=['a', 'b', 'c'])

print(df)

print(df.loc['a'])

Seleccionar múltiples filas y columnas por etiquetas:

print(df.loc[['a', 'b'], ['A', 'B']])

Seleccionar utilizando una condición booleana:

print(df.loc[df['A'] > 1])

Método 'iloc'

Se usa para acceder a un grupo de filas y columnas por índices posicionales.

Selecciona por posición: Usas índices enteros para seleccionar filas y columnas.

No incluye el extremo superior: Cuando seleccionas un rango, el extremo superior no está incluido.

Solo acepta enteros: No puedes usar etiquetas o condiciones booleanas.

Ejemplos con 'iloc'

Seleccionar una fila por su posición:

print(df.iloc[0])

Seleccionar múltiples filas y columnas por posiciones:

print(df.iloc[0:2, 0:2])

Seleccionar utilizando una lista de posiciones:

print(df.iloc[[0, 2], [0, 1]])

'loc' e 'iloc' son herramientas poderosas para la manipulación de datos en Pandas, cada una adecuada para diferentes situaciones. Usar .loc cuando necesites seleccionar datos basados en etiquetas o condiciones, y .iloc cuando trabajes con índices posicionales.


4. Ejercicios

Ejercicio 1: Crear y manipular un DataFrame

Crea un DataFrame que contenga información sobre varios libros, como título, autor, año de publicación y precio.

Dancer

Luego realiza las siguientes operaciones:

→ Añade una nueva columna que indique si el precio del libro es mayor de 20 euros.

# 1. Añadir nueva columna
df['Precio_Mayor_20'] = df['Precio'] > 20

→ Filtra los libros publicados después del año 2000.

# 2. Filtrar libros publicados después del año 1950
filtro = df['Año'] > 1950
print(df[filtro])

→ Calcula el precio medio de los libros.

# 3. Calcular el precio medio de los libros
precio_medio = df['Precio'].mean()
print('Precio medio:', precio_medio)

Ejercicio 2: Análisis de datos financieros

Supongamos que tienes datos de precios históricos de acciones en un DataFrame.

Dancer

Realiza las siguientes operaciones:

→ Calcula la rentabilidad diaria de las acciones.

# 1. Rentabilidad diaria
df['Rentabilidad_Diaria'] = df['Precio'].pct_change()

→ Calcula la rentabilidad acumulada.

# 2. Rentabilidad acumulada
df['Rentabilidad_Acumulada'] = (
    1 + df['Rentabilidad_Diaria']).cumprod()

→ Encuentra el día con la mayor subida y la mayor bajada de precios.

# 3. Mayor subida y bajada de precios
mayor_subida = df['Rentabilidad_Diaria'].max()
mayor_bajada = df['Rentabilidad_Diaria'].min()

print('Mayor subida:', mayor_subida)
print('Mayor bajada:', mayor_bajada)