Desbloqueando el poder del análisis de datos con las 14 mejores bibliotecas de Python para la ciencia de datos
Python es un lenguaje de programación potente y versátil que se utiliza ampliamente en el análisis de datos y la computación científica. Una de las principales razones de su popularidad es la vasta colección de bibliotecas y marcos que están disponibles para el análisis y visualización de datos. En este artículo, exploraremos 14 de las bibliotecas más útiles para el análisis de datos en Python.
NumPy
NumPy es la base del ecosistema de computación científica de Python. Proporciona herramientas poderosas para trabajar con matrices y matrices de datos numéricos, incluidas funciones para álgebra lineal, transformadas de Fourier y generación de números aleatorios. NumPy es también la base de otras bibliotecas como SciPy, pandas y scikit-learn.
import numpy as np
# Crear una matriz
a = np.array([1, 2, 3, 4])
# Realiza operaciones matemáticas con la matriz
b = a + 2
c = a * 3
# Imprime los resultados
print(b)
print(c)
Este ejemplo de código utiliza la biblioteca NumPy para crear una matriz y realizar operaciones matemáticas sobre ella.
La primera línea importa la biblioteca NumPy y se utiliza para crear una matriz llamada “a” utilizando la función numpy.array()
y pasando una lista de números como argumento.
Luego, se realizan operaciones matemáticas sobre la matriz “a” utilizando la notación de matrices de NumPy. La variable “b” se crea sumando 2 a cada elemento de la matriz “a”, y la variable “c” se crea multiplicando cada elemento de la matriz “a” por 3.
Finalmente, se imprimen los resultados de las operaciones utilizando la función print()
. El resultado de imprimir “b” sería una matriz con los elementos [3, 4, 5, 6] y el resultado de imprimir “c” sería una matriz con los elementos [3, 6, 9, 12].
Pandas
Pandas es una biblioteca para trabajar con datos en el ecosistema de Python. Proporciona estructuras de datos para trabajar con datos estructurados, incluidos marcos de datos y series. pandas es particularmente útil para trabajar con datos tabulares, como datos de un archivo CSV o una base de datos SQL.
import pandas as pd
# Leer un archivo CSV
data = pd.read_csv("data.csv")
# Realiza operaciones con los datos
mean = data["column"].mean()
# Imprime los resultados
print(mean)
Este ejemplo de código utiliza la biblioteca pandas para leer un archivo CSV y realizar operaciones con los datos.
La primera línea importa la biblioteca pandas y se utiliza para leer un archivo CSV llamado “data.csv” utilizando la función pandas.read_csv()
. Esta función devuelve un objeto DataFrame, que es una estructura de datos bidimensional similar a una hoja de cálculo o una tabla en una base de datos relacional.
Luego, se realiza una operación sobre los datos utilizando la notación de DataFrame de pandas. En este caso, se calcula la media de una columna específica llamada “column” utilizando el método mean()
.
Finalmente, se imprime el resultado de la operación utilizando la función print()
. El resultado sería un número representando la media de los valores contenidos en la columna “column” del DataFrame.
SciPy
SciPy es una biblioteca para computación científica en Python. Proporciona algoritmos para optimización, procesamiento de señales e imágenes, interpolación, integración y más. SciPy está construido sobre NumPy y proporciona muchas de las mismas funciones pero con funcionalidad adicional.
import scipy
from scipy.integrate import quad
# Define la función a integrar
def f(x):
return x**2
# Realiza la integración
result, _ = quad(f, 0, 1)
# Imprime los resultados
print(result)
Este ejemplo de código utiliza la biblioteca SciPy para integrar una función matemática específica.
La primera línea importa la biblioteca Scipy. La segunda línea importa la función quad de la sub-biblioteca scipy.integrate.
Luego, se define una función matemática llamada “f” que toma un argumento x y devuelve el cuadrado de ese argumento (x^2).
A continuación, se utiliza la función quad para integrar la función “f” desde 0 hasta 1. El primer argumento de la función es la función a integrar, el segundo argumento es el límite inferior de la integral y el tercer argumento es el límite superior. La función quad devuelve el resultado de la integral y una estimación del error.
Finalmente, se utiliza la función print para imprimir el resultado de la integración. El resultado sería el valor de la integral de la función f(x)=x^2 desde 0 hasta 1.
Matplotlib
Matplotlib es una biblioteca de trazado para Python. Proporciona una amplia API para crear visualizaciones estáticas, animadas e interactivas. Matplotlib es ampliamente utilizado en computación científica y análisis de datos, y es la base de otras bibliotecas como Seaborn y Plotly.
import matplotlib.pyplot as plt
# Crea una trama sencilla
x = [1, 2, 3, 4]
y = [2, 4, 6, 8]
plt.plot(x, y)
plt.show()
Este ejemplo de código utiliza la biblioteca Matplotlib para crear y mostrar una trama sencilla.
La primera línea importa la biblioteca Matplotlib y utiliza el alias “plt” para referirse a ella.
Luego, se definen dos listas, “x” e “y”, que contienen los valores para los ejes x e y de la trama, respectivamente.
A continuación, se utiliza la función plot()
de Matplotlib para crear una trama con los valores de las listas x e y.
Finalmente, se utiliza la función show()
para mostrar la trama en una ventana separada. Esto abrirá una ventana con una trama que contiene una línea que conecta los puntos (1,2), (2,4), (3,6) y (4,8).
Seaborn
Seaborn es una biblioteca de visualización de datos para Python. Está construido sobre Matplotlib y proporciona funcionalidad adicional para crear gráficos estadísticos, como diagramas de caja, gráficos de violín y mapas de calor.
import seaborn as sns
# Cargar un conjunto de datos
data = sns.load_dataset("tips")
# Crear un diagrama de cajas
sns.boxplot(x="day", y="total_bill", data=data)
plt.show()
Este ejemplo de código utiliza la biblioteca Seaborn para crear un diagrama de caja a partir de un conjunto de datos y mostrarlo.
La primera línea importa la biblioteca Seaborn y utiliza el alias “sns” para referirse a ella.
Luego, se utiliza la función load_dataset()
de Seaborn para cargar un conjunto de datos llamado “tips” y se almacena en la variable “data”. Este conjunto de datos contiene información sobre las facturas de un restaurante, incluyendo el día de la semana, el precio total de la factura y otros detalles.
A continuación, se utiliza la función boxplot()
de Seaborn para crear un diagrama de caja. Se especifica que la variable x es “day” (día de la semana) y la variable y es “total_bill” (precio total de la factura). Se pasa el conjunto de datos “data” como argumento.
Finalmente, se utiliza la función show()
de Matplotlib para mostrar el diagrama de
cajas en una ventana separada. El diagrama de cajas representa la distribución de los precios totales de las facturas según el día de la semana. La caja representa el rango intercuartílico (de la primera a la tercera cuartil) y la línea central dentro de la caja representa la mediana. Los bigotes representan los valores mínimo y máximo que no son outliers. Los puntos fuera de los bigotes representan los outliers.
Scikit-learn
Scikit-learn es una biblioteca de aprendizaje automático para Python. Proporciona una amplia variedad de algoritmos para clasificación, regresión, agrupación en clústeres y más. scikit-learn se basa en NumPy y SciPy, y es una de las bibliotecas de aprendizaje automático más utilizadas en el ecosistema de Python.
import sklearn
from sklearn.linear_model import LinearRegression
# Definir los datos
x = [[1], [2], [3], [4]]
y = [2, 4, 6, 8]
# Crear y ajustar el modelo
model = LinearRegression()
model.fit(x, y)
# Imprime los coeficientes
print(model.coef_)
Este ejemplo de código utiliza la biblioteca scikit-learn (sklearn) para crear y ajustar un modelo de regresión lineal y para imprimir los coeficientes del modelo.
La primera línea importa la biblioteca scikit-learn. La segunda línea importa la clase LinearRegression de la sub-biblioteca sklearn.linear_model.
Luego, se definen dos conjuntos de datos, “x” e “y”. X es una lista de listas que contiene los valores para el eje x, y es una lista que contiene los valores para el eje y.
A continuación, se crea una instancia del modelo de regresión lineal y se utiliza el método fit() para ajustar el modelo a los datos. El primer argumento de fit() es el conjunto de datos x, y el segundo argumento es el conjunto de datos y.
Finalmente, se utiliza el atributo coef_ del modelo para imprimir los coeficientes del modelo. El coeficiente es el valor que se multiplica por la variable independiente en la ecuación de la recta de regresión. En este caso, el coeficiente es 1, ya que la relación entre x e y es lineal y es y=x*1+0.
Statsmodels
Statsmodels es una biblioteca para modelado estadístico y econometría en Python. Proporciona una amplia variedad de modelos estadísticos, incluyendo regresión lineal, ANOVA y análisis de series temporales. Statsmodels se basa en NumPy y SciPy, y es una herramienta poderosa para explorar y comprender datos.
import statsmodels.api as sm
# Definir los datos
x = [[1], [2], [3], [4]]
y = [2, 4, 6, 8]
# Crear y ajustar el modelo
model = sm.OLS(y, x)
result = model.fit()
# Imprimir el resumen
print(result.summary())
Este ejemplo de código utiliza la biblioteca statsmodels para crear y ajustar un modelo de regresión lineal, y para imprimir un resumen de los resultados del ajuste del modelo.
La primera línea importa el paquete api de la biblioteca statsmodels.
Luego, se definen dos conjuntos de datos, “x” e “y”. X es una lista de listas que contiene los valores para el eje x, y es una lista que contiene los valores para el eje y.
A continuación, se crea una instancia del modelo OLS (Ordinary Least Squares) de statsmodels, y se utiliza el método fit() para ajustar el modelo a los datos. El primer argumento del modelo OLS es el conjunto de datos y, el segundo argumento es el conjunto de datos x. El objeto resultado es una instancia de la clase RegressionResultsWrapper.
Finalmente, se utiliza el método summary() del objeto resultado para imprimir un resumen de los resultados del ajuste del modelo. El resumen incluye información como los coeficientes del modelo, los estadísticos de ajuste, los valores p, entre otros.
NetworkX
NetworkX es una biblioteca para trabajar con gráficos y redes en Python. Proporciona una variedad de herramientas para crear, manipular y analizar gráficos y redes, incluidas funciones para el diseño de gráficos, medidas de centralidad y detección de comunidades. NetworkX es una herramienta poderosa para comprender la estructura y la dinámica de sistemas complejos.
import networkx as nx
# Crea un gráfico
G = nx.Graph()
# Añade aristas al grafo
G.add_edge(1, 2)
G.add_edge(2, 3)
G.add_edge(3, 1)
# Imprime el grado de los nodos
for node in G:
print(node, G.degree[node])
Este ejemplo de código utiliza la biblioteca NetworkX para crear un gráfico y para imprimir el grado de los nodos del gráfico.
La primera línea importa la biblioteca NetworkX y utiliza el alias “nx” para referirse a ella.
Luego, se crea una instancia de un gráfico vacío utilizando la clase Graph de NetworkX.
A continuación, se utiliza el método add_edge()
para añadir tres aristas al gráfico conectando los nodos 1, 2 y 3.
Finalmente, se utiliza un bucle “for” para recorrer cada nodo en el gráfico y se utiliza el atributo degree de NetworkX para imprimir el grado de cada nodo. El grado de un nodo es el número de aristas que están conectadas a ese nodo. En este caso, el grado de cada nodo será 2, ya que todos los nodos están conectados a dos nodos.
PyMC3
PyMC3 es una biblioteca para programación probabilística en Python. Proporciona un marco poderoso para crear y ajustar modelos estadísticos, incluida la regresión lineal bayesiana, los modelos de mezcla gaussiana y los modelos ocultos de Markov. PyMC3 está construido sobre Theano y proporciona una interfaz de alto nivel para trabajar con modelos probabilísticos.
import pymc3 as pm
# Definir el modelo
with pm.Model() as model:
# Create a variable
x = pm.Normal("x", mu=0, sd=1)
# Realiza la simulación
trace = pm.sample(1000, tune=500)
# Imprime los resultados
pm.summary(trace)
Este ejemplo de código utiliza la biblioteca PyMC3 para crear un modelo bayesiano y para realizar una simulación de Monte Carlo utilizando el algoritmo de cadena de Markov (MCMC) para generar una muestra de la distribución posterior del modelo. También se utiliza para imprimir un resumen de los resultados de la simulación.
La primera línea importa la biblioteca PyMC3 y utiliza el alias “pm” para referirse a ella.
Luego, se define un modelo bayesiano utilizando el bloque with pm.Model()
y se crea una variable aleatoria llamada “x” con una distribución normal con una media de 0 y una desviación estándar de 1.
A continuación, se utiliza el método pm.sample()
para realizar una simulación de Monte Carlo utilizando el algoritmo de cadena de Markov (MCMC). El primer argumento específica el número de puntos que se deben generar en la simulación, y el segundo argumento especifica el número de puntos que se deben utilizar para calentar el algoritmo antes de comenzar la simulación.
Finalmente, se utiliza el método pm.summary()
para imprimir un resumen de los resultados de la simulación, incluyendo información como la media, la desviación estándar, el valor mínimo y el valor máximo de la distribución posterior.
Dask
Dask es un marco de programación de alto nivel para trabajar con grandes conjuntos de datos en paralelo. Se utiliza para dividir grandes operaciones en pequeñas tareas que se ejecutan en paralelo en varios procesadores o máquinas. Es una alternativa escalable a pandas para trabajar con grandes conjuntos de datos.
import dask.dataframe as dd
# Lee un archivo CSV grande utilizando Dask
df = dd.read_csv('large_data.csv')
# Realiza operaciones con los datos
mean = df.column.mean().compute()
print(mean)
Este ejemplo de código utiliza la biblioteca Dask para leer un archivo CSV grande y realizar operaciones con los datos.
La primera línea importa la biblioteca Dask y utiliza el alias “dd” para referirse a ella.
Luego, se utiliza el método dd.read_csv()
para leer un archivo CSV grande. En este caso, el nombre del archivo es “large_data.csv”. El método regresa un objeto de tipo Dask DataFrame, que es similar a un objeto de tipo Pandas DataFrame pero con algunas diferencias en su comportamiento.
A continuación, se realiza una operación para calcular el valor medio de una columna específica del DataFrame, en este caso “column”. El método mean()
se utiliza para calcular el valor medio y el método compute()
se utiliza para ejecutar la operación y devolver el resultado.
Finalmente, se utiliza la función print()
para imprimir el resultado de la operación, es decir, el valor medio de la columna especificada.
Dask es una librería de computación distribuida que permite trabajar con grandes cantidades de datos en una sola máquina o en un cluster de máquinas. Utiliza una estrategia “divide y vencerás” para dividir los datos en pequeños trozos, llamados bloques, y procesarlos de manera independiente. Esto permite aprovechar mejor la paralelización y escalar el análisis de datos a niveles de terabytes y petabytes.
PySpark
PySpark es el módulo de Python para Apache Spark, un marco de procesamiento de datos distribuido que permite el procesamiento de grandes conjuntos de datos en paralelo. PySpark proporciona una interfaz para trabajar con datos en Spark utilizando Python.
Este ejemplo de código utiliza PySpark para leer un archivo CSV grande y calcular el promedio de una columna específica.
from pyspark import SparkContext
from pyspark.sql import SparkSession
# Crear una SparkSession
spark = SparkSession.builder.appName("Python Spark SQL basic example").config("spark.some.config.option", "some-value").getOrCreate()
# Lee un archivo CSV grande utilizando Spark
df = spark.read.csv('large_data.csv', header=True, inferSchema=True)
# Realiza operaciones con los datos
mean = df.agg({'column': 'mean'}).collect()
print(mean)
- La primera línea importa el módulo
SparkContext
de PySpark. Este es el contexto principal de Spark, que es el punto de entrada para todas las funciones de Spark. - La segunda línea importa
SparkSession
de PySpark. Esta es la clase principal para interactuar con un cluster Spark. Es la entrada para todas las funciones de SQL y DataFrame. - En la siguiente línea se crea una
SparkSession
con el nombre “Python Spark SQL basic example” y se establece una configuración opcional “spark.some.config.option” con un valor “some-value”. - En la siguiente línea se utiliza la
SparkSession
para leer un archivo CSV grande llamado “large_data.csv” utilizando el métodoread.csv()
. Se establece el valorheader=True
para indicar que el archivo tiene una fila de encabezado yinferSchema=True
para que PySpark intente inferir el esquema de los datos a partir de los datos del archivo. - Luego se utiliza el método
agg()
para calcular el promedio de una columna específica en el DataFrame. El métodoagg()
toma una expresión de agregación, en este caso especificando un diccionario con la columna y la operación de agregación a realizar. El métodocollect()
se utiliza para recopilar los resultados en la memoria local. - Finalmente, se imprime el promedio calculado.
Ten en cuenta que PySpark es un marco de procesamiento de datos distribuido que permite el procesamiento de grandes conjuntos de datos en paralelo. PySpark proporciona una interfaz para trabajar con datos en Spark utilizando Python, es utilizado para procesar grandes volúmenes de datos y escalar a través de varios nodos en un cluster.
Altair
Altair es una biblioteca de visualización de datos basada en Vega-Lite. Proporciona una interfaz simple y fácil de usar para crear visualizaciones interactivas y de alta calidad.
En este ejemplo, primero importamos Altair y pandas. Luego creamos un conjunto de datos de muestra utilizando pandas, en este caso una serie de x e y. Utilizamos Altair para crear un gráfico de línea simple especificando los datos y las variables x e y. Finalmente, utilizamos el método “show()” para mostrar el gráfico.
import altair as alt
import pandas as pd
# Crea un conjunto de datos de muestra
data = pd.DataFrame({'x': [1, 2, 3, 4], 'y': [2, 4, 6, 8]})
# Utiliza Altair para crear un gráfico lineal sencillo
chart = alt.Chart(data).mark_line().encode(x='x', y='y')
# Mostrar el gráfico
chart.show()
Ten en cuenta que Altair es una biblioteca que se basa en Vega-Lite para crear visualizaciones interactivas y de alta calidad. Los gráficos de Altair se generan en un formato JSON que luego se pueden mostrar en un navegador web. Por lo tanto, si ejecutas este código, se abrirá una ventana del navegador mostrando el gráfico de línea.
LightGBM
LightGBM es una implementación eficiente del gradient boosting framework para aprendizaje automático. Es una biblioteca popular para modelos de clasificación y regresión en grandes conjuntos de datos.
import lightgbm as lgb
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
# Carga el conjunto de datos del iris
iris = load_iris()
X = iris.data
y = iris.target
# Divide los datos en conjuntos de entrenamiento y de prueba
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
# Crea un conjunto de datos LightGBM
lgb_train = lgb.Dataset(X_train, y_train)
# Define los parámetros del modelo
params = {'objective': 'multiclass', 'metric': 'multi_logloss', 'num_class': 3}
# Entrenar el modelo
model = lgb.train(params, lgb_train)
# Haz predicciones
y_pred = model.predict(X_test)
En este ejemplo, primero importamos LightGBM y sklearn.datasets.load_iris. Luego cargamos los datos del dataset iris que vienen en sklearn.datasets.load_iris. Utilizamos train_test_split de sklearn para dividir el dataset en conjunto de entrenamiento y de prueba. Utilizamos LightGBM para crear un dataset a partir de los datos de entrenamiento y definimos los parámetros del modelo, en este caso para clasificación multiclase con metrica multi_logloss y 3 clases. Entrenamos el modelo con los parámetros y los datos de entrenamiento. Finalmente, utilizamos el modelo entrenado para hacer predicciones en el conjunto de prueba.
Ten en cuenta que LightGBM es una implementación eficiente de gradient boosting, es una biblioteca popular para el entrenamiento de modelos de aprendizaje automático en grandes conjuntos de datos. Es conocida por su velocidad y capacidad de manejar datos de gran tamaño. Es especialmente útil para tareas de clasificación y regresión.
PyMC3
PyMC3 es una biblioteca de modelado bayesiano para Python. Proporciona herramientas para el diseño y ajuste de modelos bayesianos, así como la inferencia de parámetros.
import pymc3 as pm
import numpy as np
# Generar algunos datos
n = 100
p = 0.5
data = np.random.binomial(n, p, size=100)
# Define el modelo
with pm.Model() as model:
# Priores para los parámetros desconocidos del modelo
alpha = pm.Flat('alpha')
beta = pm.Flat('beta')
# Define la probabilidad
p = pm.Beta('p', alpha=alpha, beta=beta)
y = pm.Binomial('y', n=n, p=p, observed=data)
# Inference
trace = pm.sample(1000, tune=1000)
En este ejemplo, primero importamos PyMC3 y numpy. Luego generamos un conjunto de datos sintéticos utilizando la función numpy.random.binomial()
con un tamaño de 100 y una probabilidad p de 0.5.
Luego, definimos el modelo utilizando el contexto pm.Model()
. Dentro de este contexto, especificamos los prioris para los parámetros del modelo utilizando las distribuciones pm.Flat()
, en este caso para alpha y beta. Luego definimos la likelihood utilizando la distribución pm.Beta()
para la
probabilidad p del modelo binomial y la distribución pm.Binomial()
para los datos observados y el número de ensayos.
Finalmente, realizamos el proceso de inferencia utilizando el método pm.sample()
de PyMC3. Este método toma el número de pasos de muestreo deseados y opcionalmente un número de pasos de ajuste, y devuelve un objeto de trazado con las muestras de los parámetros del modelo.
Ten en cuenta que PyMC3 es una biblioteca de Python para el modelado bayesiano de probabilidad, es utilizada para definir, ajustar y analizar modelos estadísticos probabilísticos. PyMC3 proporciona una interfaz de alto nivel para construir modelos complejos y realizar inferencia bayesiana sobre ellos. Es una herramienta popular en el campo de la estadística y la ciencia de datos.
Deseamos que este listado haya sido de útil para abrir nuevos horizontes para el análisis de datos con Python.