pandas

Pandas

Tutorial Pandas: Introducción e instalación de pandas

Pandas: Introducción e instalación. Aprende a usar esta biblioteca esencial para el análisis de datos en Python. Métodos de instalación y estructuras de datos principales.

¿Qué es Pandas?

Pandas es una biblioteca de software escrita para el lenguaje de programación Python, que proporciona estructuras de datos y herramientas de análisis de datos de alto rendimiento y fáciles de usar. Es especialmente útil para trabajar con datos estructurados (tablas de datos) y semiestructurados, proporcionando herramientas que permiten la manipulación, agregación y visualización eficiente de datos.

Para utilizar Pandas en nuestros proyectos, típicamente lo importamos al inicio de nuestro script con la línea import pandas as pd. Esta convención crea un alias 'pd' para Pandas, permitiéndonos acceder a sus funcionalidades de manera concisa, como pd.DataFrame() en lugar de pandas.DataFrame().

El núcleo de Pandas se basa en dos estructuras de datos principales:

1.- Series: Es una matriz unidimensional que puede contener cualquier tipo de datos (enteros, cadenas, números de punto flotante, objetos de Python, etc.). Las Series tienen etiquetas en los ejes (índices), que permiten acceder a los datos de manera eficiente.

import pandas as pd

# Crear una Serie
serie = pd.Series([1, 3, 5, 7, 9])
print(serie)

2.- DataFrame: Es una estructura de datos bidimensional, similar a una tabla en una base de datos, en la que cada columna puede contener diferentes tipos de datos (números, cadenas, booleanos, etc.). Los DataFrames tienen tanto etiquetas de fila como de columna, lo que facilita la manipulación y análisis de los datos.

import pandas as pd

# Crear un DataFrame
datos = {
    'Nombre': ['Ana', 'Luis', 'Carlos', 'Marta'],
    'Edad': [23, 25, 30, 22],
    'Ciudad': ['Madrid', 'Barcelona', 'Valencia', 'Sevilla']
}
df = pd.DataFrame(datos)
print(df)

Pandas ha sido diseñado para integrarse perfectamente con otras bibliotecas de Python, como NumPy y Matplotlib, lo que facilita la realización de cálculos numéricos y la visualización de datos, respectivamente. Esta biblioteca es fundamental para cualquier analista de datos o científico de datos que trabaje con Python debido a su eficiencia y facilidad de uso.

¿Cómo se instala Pandas? Diferentes métodos de instalación y comprobar la versión de Pandas

Para instalar Pandas en tu entorno de desarrollo, existen varios métodos que puedes utilizar dependiendo de tus preferencias y del entorno en el que estés trabajando. A continuación, se describen los métodos más comunes para instalar Pandas y cómo verificar la versión instalada.

Instalación usando pip

El método más común y recomendado para instalar Pandas es mediante pip, el gestor de paquetes de Python. 

Para instalar Pandas, simplemente ejecuta el siguiente comando en tu terminal o línea de comandos:

pip install pandas

Este comando descargará e instalará la última versión disponible de Pandas desde el repositorio de PyPI (Python Package Index). Si necesitas instalar una versión específica de Pandas, puedes especificar la versión deseada de la siguiente manera:

pip install pandas==2.2.2

Instalación usando conda

Si estás utilizando Anaconda o Miniconda como tu entorno de Python, puedes instalar Pandas utilizando conda, el gestor de paquetes de Anaconda. Para instalar Pandas con conda, ejecuta el siguiente comando en tu terminal o línea de comandos:

conda install pandas

Este comando instalará Pandas desde el repositorio de Anaconda, que a menudo incluye versiones optimizadas y mejor integradas con otras bibliotecas populares de ciencia de datos.

Instalación desde el código fuente

En situaciones donde necesites características específicas o desees contribuir al desarrollo de Pandas, puedes optar por instalarlo desde el código fuente. Para hacer esto, primero clona el repositorio de Pandas desde GitHub:

git clone https://github.com/pandas-dev/pandas.git

Luego, navega al directorio del proyecto clonado e instala Pandas utilizando pip:

cd pandas
pip install .

Este método es útil para desarrolladores que necesitan la última versión del código o que desean hacer cambios en la biblioteca.

Comprobar la versión de Pandas

Una vez que hayas instalado Pandas, es importante verificar que la instalación se haya realizado correctamente y que estás utilizando la versión deseada. Para comprobar la versión de Pandas instalada, puedes ejecutar el siguiente comando en un entorno interactivo de Python o en un script:

import pandas as pd
print(pd.__version__)

Este comando imprimirá la versión de Pandas que está actualmente instalada en tu entorno de Python.

Utilizando estos métodos, puedes instalar Pandas de manera efectiva y asegurarte de que estás trabajando con la versión correcta para tus necesidades de desarrollo.

Para qué sirve Pandas

Pandas es una biblioteca de Python que se utiliza principalmente para el análisis y manipulación de datos. Su uso es fundamental en diversas áreas debido a su capacidad para trabajar con datos estructurados y semiestructurados. 

Pandas facilita la limpieza y preparación de datos, lo cual es esencial antes de realizar análisis o aplicar algoritmos de aprendizaje automático. 

A continuación, se describen algunas de las principales aplicaciones de Pandas:

  • Análisis de datos: Pandas permite realizar análisis exploratorios de datos (EDA) de manera eficiente. Puedes calcular estadísticas descriptivas, como medias, medianas, desviaciones estándar y percentiles, utilizando métodos integrados.
import pandas as pd

data = {'A': [1, 2, 3, 4], 'B': [5, 6, 7, 8]}
df = pd.DataFrame(data)
print(df.describe())
  • Manipulación de datos: Pandas facilita la limpieza y transformación de datos. Ofrece métodos para agregar, eliminar y modificar columnas y filas, así como para realizar operaciones de agrupación y agregación. Puedes filtrar, agrupar, unir y pivotar datos con facilidad. Estas operaciones son esenciales para preparar datos antes de cualquier análisis o modelado.
# Ejemplo de DataFrame
df = pd.DataFrame({
    'Nombre': ['Ana', 'Juan', 'Pedro', 'Laura'],
    'Edad': [23, 25, 30, 28]
})

# Agregar una nueva columna
df['Edad+5'] = df['Edad'] + 5

# Mostrar el DataFrame antes de eliminar la columna
print("Antes de eliminar la columna:")
print(df)

# Eliminar una columna
df = df.drop(columns=['Edad+5'])

# Mostrar el DataFrame después de eliminar la columna
print("\nDespués de eliminar la columna:")
print(df)
  • Selección y filtrado: Permite seleccionar y filtrar datos de manera eficiente utilizando etiquetas, condiciones y expresiones regulares.
# Seleccionar una columna
edades = df['Edad']

# Filtrar filas basado en una condición
mayores_de_25 = df[df['Edad'] > 25]
  • Manejo de datos faltantes: Pandas proporciona herramientas para detectar, eliminar o imputar valores faltantes en los datos, lo cual es crucial para mantener la integridad de los análisis.
# Ejemplo de DataFrame con valores faltantes
df = pd.DataFrame({
    'Nombre': ['Ana', 'Juan', 'Pedro', 'Laura', 'Carlos'],
    'Edad': [23, 25, np.nan, 28, np.nan]
})

# Detectar valores faltantes
print("Valores faltantes en el DataFrame:")
print(df.isnull())

# Eliminar filas con valores faltantes
df = df.dropna()

# Mostrar el DataFrame después de eliminar filas con valores faltantes
print("\nDataFrame después de eliminar filas con valores faltantes:")
print(df)

# Imputar valores faltantes
# Para este ejemplo, se crea un nuevo DataFrame con valores faltantes
df = pd.DataFrame({
    'Nombre': ['Ana', 'Juan', 'Pedro', 'Laura', 'Carlos'],
    'Edad': [23, 25, np.nan, 28, np.nan]
})

# Imputar los valores faltantes con la media de la columna 'Edad'
df = df.fillna(value={'Edad': df['Edad'].mean()})

# Mostrar el DataFrame después de la imputación
print("\nDataFrame después de imputar valores faltantes:")
print(df)
  • Integración con otras bibliotecas: Pandas se integra fácilmente con bibliotecas como NumPy, Matplotlib y SciPy, lo que permite realizar análisis numéricos y visualizaciones de datos sin problemas.
import matplotlib.pyplot as plt
import pandas as pd

data = {'A': [1, 2, 3, 4], 'B': [5, 6, 7, 8]}
df = pd.DataFrame(data)

# Crear un gráfico de línea
df.plot(kind='line')
plt.show()

El gráfico se vería de la siguiente manera:

  • Lectura y escritura de datos: Pandas soporta múltiples formatos de entrada y salida, como CSV, Excel, SQL, y JSON, lo que facilita trabajar con diferentes fuentes de datos.
# Leer un archivo CSV
df = pd.read_csv('archivo.csv')

# Escribir un DataFrame a un archivo CSV
df.to_csv('archivo_salida.csv', index=False)
  • Series temporales: Pandas incluye funcionalidades específicas para trabajar con series temporales, como la re-sampling, el desplazamiento y la interpolación de datos temporales.
date_rng = pd.date_range(start='2023-01-01', end='2023-01-10', freq='D')
df = pd.DataFrame(date_rng, columns=['date'])
df['data'] = pd.Series(range(10))

# Re-sampling a frecuencia mensual
df.set_index('date').resample('ME').sum()
  • Operaciones de ventana: Permite realizar cálculos sobre ventanas deslizantes, lo cual es útil para análisis de series temporales y cálculos estadísticos.
# Calcular media móvil con una ventana de 3 periodos
df['rolling_mean'] = df['data'].rolling(window=3).mean()

Pandas es una herramienta esencial para la ciencia de datos y el análisis de datos en Python debido a su versatilidad y eficiencia. Su capacidad para manejar grandes volúmenes de datos y realizar operaciones complejas de manera sencilla la convierte en una elección preferida para analistas de datos, científicos de datos y desarrolladores.

¿Cuándo usar Numpy y cuándo usar Pandas?

NumPy y Pandas son dos bibliotecas fundamentales en el ecosistema de Python para el manejo y análisis de datos, pero cada una tiene sus fortalezas y se adapta mejor a ciertos tipos de tareas. A continuación, se detallan las situaciones específicas en las que es más apropiado usar una u otra:

Estructuras de datos:

  • NumPy: Ofrece arrays multidimensionales (ndarrays) que son homogéneos, es decir, todos los elementos deben ser del mismo tipo de datos. Es ideal para realizar cálculos numéricos intensivos y operaciones matemáticas vectorizadas.
  • Pandas: Proporciona estructuras de datos más flexibles como Series (unidimensional) y DataFrames (bidimensional), que pueden contener diferentes tipos de datos en cada columna. Es más adecuado para manipular y analizar datos estructurados y etiquetados.

Manipulación de datos:

  • NumPy: Es excelente para operaciones matemáticas y algebraicas de bajo nivel, como multiplicación de matrices, transformaciones lineales y operaciones estadísticas básicas.
  • Pandas: Ofrece herramientas avanzadas para la manipulación de datos, como la fusión (merge), agrupación (groupby), pivoteo (pivot), y manejo de datos faltantes. Estas funcionalidades son esenciales para análisis de datos más complejos y preparación de datos.

Rendimiento:

  • NumPy: Generalmente tiene un mejor rendimiento para operaciones numéricas debido a su implementación en C y su capacidad para operar directamente sobre arrays sin la sobrecarga de estructuras adicionales.
  • Pandas: Aunque puede ser más lento en operaciones numéricas puras, la facilidad para manipular y transformar datos estructurados compensa esta diferencia en muchos casos de uso.

Facilidad de uso:

  • NumPy: Requiere una comprensión más profunda de las matemáticas y la manipulación de arrays. Es más adecuado para científicos e ingenieros que necesitan realizar cálculos numéricos intensivos.
  • Pandas: Es más intuitivo y fácil de usar para tareas de análisis de datos, con una API que permite realizar operaciones complejas de manera sencilla.

Ejemplos prácticos:

  • Operaciones numéricas con NumPy:
import numpy as np

# Crear un array de NumPy
array = np.array([[1, 2, 3], [4, 5, 6]])

# Calcular la suma de todos los elementos
suma_total = np.sum(array)

# Multiplicar dos matrices
matriz_a = np.array([[1, 2], [3, 4]])
matriz_b = np.array([[5, 6], [7, 8]])
producto = np.dot(matriz_a, matriz_b)

print(suma_total)
print(producto)
  • Manipulación de datos con Pandas:
import pandas as pd

# Crear un DataFrame
datos = {'Nombre': ['Ana', 'Luis', 'Carlos', 'Marta'],
         'Edad': [23, 25, 30, 22],
         'Ciudad': ['Madrid', 'Barcelona', 'Valencia', 'Sevilla']}
df = pd.DataFrame(datos)

# Filtrar filas donde la edad es mayor que 24
mayores_de_24 = df[df['Edad'] > 24]

# Agrupar por ciudad y calcular la media de edad
media_edad_por_ciudad = df.groupby('Ciudad')['Edad'].mean()

print(mayores_de_24)
print(media_edad_por_ciudad)

En resumen, NumPy es la elección preferida para cálculos numéricos intensivos y manipulación de arrays homogéneos, mientras que Pandas es más adecuado para el análisis y manipulación de datos estructurados y semiestructurados. La elección entre NumPy y Pandas depende del tipo de tarea que se desea realizar y de la estructura de los datos con los que se está trabajando.

Resumen de los principales métodos de Pandas

Pandas proporciona una amplia gama de métodos para la manipulación y análisis de datos. 

A continuación, se presentan algunos de los métodos más importantes y frecuentemente utilizados en Pandas, con ejemplos prácticos de su uso:

Lectura y escritura de datos:

  • read_csv(): Lee un archivo CSV y lo convierte en un DataFrame.
  • to_csv(): Escribe un DataFrame en un archivo CSV.
  • read_excel(): Lee un archivo Excel y lo convierte en un DataFrame.
  • to_excel(): Escribe un DataFrame en un archivo Excel.
import pandas as pd

# Leer un archivo CSV
df = pd.read_csv('archivo.csv')

# Escribir un DataFrame a un archivo CSV
df.to_csv('archivo_salida.csv', index=False)

# Leer un archivo Excel
df = pd.read_excel('archivo.xlsx')

# Escribir un DataFrame a un archivo Excel
df.to_excel('archivo_salida.xlsx', index=False)

Selección y filtrado de datos:

  • loc[]: Selecciona datos por etiquetas.
  • iloc[]: Selecciona datos por posición.
  • query(): Filtra datos utilizando una expresión de cadena.
# Seleccionar una columna
edades = df['Edad']

# Filtrar filas basado en una condición
mayores_de_25 = df[df['Edad'] > 25]

# Seleccionar una fila por etiqueta
fila_1 = df.loc[1]

# Seleccionar una fila por posición
fila_1 = df.iloc[1]

# Filtrar usando query
mayores_de_25 = df.query('Edad > 25')

Manipulación de datos:

  • assign(): Añade nuevas columnas a un DataFrame.
  • drop(): Elimina filas o columnas.
  • rename(): Cambia el nombre de las filas o columnas.
  • sort_values(): Ordena los datos por valores.
# Agregar una nueva columna
df = df.assign(Edad_mas_5=df['Edad'] + 5)

# Eliminar una columna
df = df.drop(columns=['Edad_mas_5'])

# Cambiar el nombre de una columna
df = df.rename(columns={'Edad': 'Años'})

# Ordenar los datos por una columna
df = df.sort_values(by='Años')

Agrupación y agregación de datos:

  • groupby(): Agrupa los datos por una o más columnas.
  • agg(): Aplica funciones de agregación a los grupos.
  • pivot_table(): Crea una tabla pivote.
# Agrupar por una columna y calcular la media
media_edad = df.groupby('Ciudad')['Años'].mean()

# Aplicar múltiples funciones de agregación
agg_funcs = df.groupby('Ciudad')['Años'].agg(['mean', 'sum', 'count'])

# Crear una tabla pivote
tabla_pivote = df.pivot_table(values='Años', index='Ciudad', columns='Nombre', aggfunc='mean')

Manejo de datos faltantes:

  • isnull(): Detecta valores faltantes.
  • dropna(): Elimina filas o columnas con valores faltantes.
  • fillna(): Rellena valores faltantes.
# Detectar valores faltantes
faltantes = df.isnull()

# Eliminar filas con valores faltantes
df_sin_na = df.dropna()

# Rellenar valores faltantes
df_relleno = df.fillna(value={'Años': df['Años'].mean()})

Operaciones de ventana:

  • rolling(): Calcula operaciones sobre ventanas deslizantes.
  • expanding(): Calcula operaciones sobre ventanas acumulativas.
  • ewm(): Calcula operaciones sobre ventanas exponencialmente ponderadas.
# Calcular media móvil con una ventana de 3 periodos
df['media_movil'] = df['Años'].rolling(window=3).mean()

# Calcular suma acumulativa
df['suma_acumulativa'] = df['Años'].expanding().sum()

# Calcular media exponencialmente ponderada
df['media_ewm'] = df['Años'].ewm(span=3).mean()

Operaciones con fechas:

  • to_datetime(): Convierte una columna a tipo datetime.
  • resample(): Re-muestrea datos temporales.
# Crear un DataFrame de ejemplo
data = {
    'Fecha': ['2023-01-01', '2023-01-05', '2023-02-10', '2023-02-15', '2023-03-01'],
    'Valor': [10, 20, 15, 25, 30]
}

df = pd.DataFrame(data)

# Convertir la columna 'Fecha' a tipo datetime
df['Fecha'] = pd.to_datetime(df['Fecha'])

# Re-muestrear los datos a frecuencia mensual y calcular el promedio
df_mensual = df.set_index('Fecha').resample('M').mean()

Estos métodos y funcionalidades permiten realizar una amplia variedad de operaciones de manipulación y análisis de datos con Pandas, facilitando el trabajo con conjuntos de datos complejos y heterogéneos.

Certifícate en Pandas con CertiDevs PLUS

Ejercicios de esta lección Introducción e instalación de pandas

Evalúa tus conocimientos de esta lección Introducción e instalación de pandas con nuestros retos de programación de tipo Test, Puzzle, Código y Proyecto con VSCode, guiados por IA.

Todas las lecciones de Pandas

Accede a todas las lecciones de Pandas y aprende con ejemplos prácticos de código y ejercicios de programación con IDE web sin instalar nada.

Certificados de superación de Pandas

Supera todos los ejercicios de programación del curso de Pandas y obtén certificados de superación para mejorar tu currículum y tu empleabilidad.

En esta lección

Objetivos de aprendizaje de esta lección

  • Entender qué es Pandas y su importancia en el análisis de datos.
  • Conocer las estructuras de datos principales de Pandas: Series y DataFrame.
  • Aprender a instalar Pandas usando diferentes métodos (pip, conda, código fuente).
  • Verificar la versión instalada de Pandas.
  • Obtener una visión general de las funcionalidades avanzadas de Pandas para la manipulación, agregación y visualización de datos.