Si bien Excel es omnipresente, prefiero Python para mi análisis de datos. Las hojas de cálculo son excelentes para formatear datos, pero fue Python el que me permitió crear mi propia súper calculadora a partir de bibliotecas normales de Python. Aquí están mis herramientas de Python preferidas
NumPy
La columna vertebral de las estadísticas de Python
NumPy es la columna vertebral del análisis de datos en Python. La razón principal es que facilita el trabajo con construcciones de álgebra lineal en estadística sin tener que recorrer manualmente matrices multidimensionales. También ofrece muchos cálculos numéricos rápidos porque utiliza bibliotecas como LAPACK.
NumPy es útil para el análisis de datos porque incluye muchas funciones integradas, incluidas las funciones estadísticas descriptivas clásicas como la media, la mediana y la desviación estándar.
Puedo demostrarlo usando la función para crear un generador de números aleatorios y extraer 50 muestras de la distribución normal.
import numpy as np
rng = np.random.default_rng()
a = rng.standard_normal(50)
Primero tomaré el promedio:
a.mean()
Y la mediana:
np.median(a)
Y la desviación estándar muestral (la ddof reduce el número de elementos de la matriz considerados en uno):
np.std(a,ddof=1)
pandas
Encontrar el marco adecuado para los datos
NumPy es útil por sí solo, pero es adecuado para trabajar con arreglos y matrices. pandas es una biblioteca que funciona con «DataFrames», que son estructuras de datos rectangulares similares a hojas de cálculo y bases de datos relacionales. Incluso puede importar muchos de estos formatos, como archivos SQL, Excel y CSV.
Demostraré esto último importando un conjunto de datos de propinas que un camarero de la ciudad de Nueva York recopiló durante un fin de semana. Un conjunto de datos de propinas que un camarero de la ciudad de Nueva York recopiló durante un fin de semana:
import pandas as pd
tips = pd.read_csv('stats/data/tips.csv')
Puedo examinar el conjunto de datos con el head() método:
También puedo obtener rápidamente las estadísticas descriptivas que recopilé anteriormente en todo el conjunto de datos para cada columna con el describe() método:
tips.describe()
ciencia ficción
Aún más funciones estadísticas
Si bien NumPy y pandas tienen algunas funciones estadísticas útiles, a menudo no son suficientes. SciPy tiene muchas funciones numéricas útiles para el trabajo científico, pero son las funciones estadísticas las más útiles. Están contenidos en el stats submódulo.
Si prestaste atención durante la mención de las estadísticas descriptivas, es posible que hayas notado que en Numpy y pandas faltaba la mención del modo. Estas bibliotecas no tienen una función para el modo, pero SciPy sí. Lo usaré en la matriz de la distribución normal mencionada anteriormente:
from scipy import stats
stats.mode(a)
También existen varias pruebas estadísticas, incluida la prueba T de significación estadística. Esto se usaría para determinar si las medias de dos muestras independientes eran suficientemente diferentes. Esto se utiliza en cosas como pruebas A/B o investigaciones clínicas. Simularé dos muestras con el generador de números aleatorios NumPy y usaré el ttest_ind() método:
sample_a = 2 + 3 * rng.standard_normal(15)
sample_b = 2 + 5 * rng.standard_normal(15)
stats.ttest_ind(sample_a,sample_b)
El código establece una media para ambos en dos y una desviación estándar de 3 para la primera muestra y una desviación estándar de 5 para la segunda.
El valor P, indicado como pvalue determina el significado. Si es inferior a cierto umbral, como 0,05 para un nivel de confianza del 95%, rechazaremos la hipótesis nula de que no existe relación entre los dos. En este caso, dado que las medias son las mismas, el valor p es mayor que 0,05, por lo que no podemos rechazar la hipótesis nula en este caso.
nacido en el mar
Visualizaciones de gran apariencia
Gran parte de la computación estadística moderna se basa en la visualización. Es fácil ver relaciones estadísticas fácilmente cuando se trazan. Si bien Matplotlib ha sido la biblioteca de visualización estándar en Python, puede resultar difícil comenzar con ella. Seaborn es una biblioteca de visualización estadística que actúa como interfaz para Matplotlib y permite muchas visualizaciones estadísticas comunes, incluidos los histogramas clásicos, diagramas de caja, diagramas de dispersión y diagramas de regresión.
Statsmodels permite algunos gráficos sofisticados. Lo demostraré haciendo un gráfico de regresión de la propina utilizando la factura total y la propina, además de si eran fumadores. Indicaré quién es fumador y no fumador por color y usando marcadores de formas diferentes, lo que haría el gráfico más accesible para las personas daltónicas.
import seaborn as sns
sns.set_theme()
sns.lmplot(x='total_bill',y='tip',hue='smoker',markers=['o','^'],data=tips)
Es interesante que los no fumadores parezcan más generosos que los fumadores, excepto por un valor atípico en la parte superior derecha. Parece haber una relación lineal entre las propinas y la factura total. Cuanto mayor sea la factura, mayor será la propina.
modelos de estadísticas
Potentes modelos estadísticos a mi alcance
Si bien puedes hacer un gráfico de regresión en Seaborn, no puedes obtener los valores de la recta de la ecuación. Para eso, tienes que ir a otra biblioteca. statsmodels es una de las bibliotecas preferidas. Uno de los usos más importantes es la regresión lineal como la que mostré arriba:
import statsmodels.formula.api as smf
results = smf.ols('tip ~ total_bill',data=tips).fit()
results.summary()
Utiliza un sistema de fórmulas popularizado por R para crear un objeto de regresión y mostrar un resumen. Los resultados en el coef La columna es lo que queremos para la ecuación de regresión de propinas versus factura.
Los números en esta columna serían la intersección y y la pendiente de la ecuación clásica y = mx + b de una línea recta que quizás recuerdes del álgebra de la escuela secundaria.
Hay mucho más en los modelos estadísticos, incluido el análisis de varianza o ANOVA.
IPython y Jupyter
Fácil uso interactivo de Python
Si bien estas no son «bibliotecas» tradicionales, IPython y Jupyter están íntimamente conectadas con el análisis de datos.
IPython es una actualización importante del intérprete interactivo de Python y Jupyter es una atractiva interfaz para portátiles. Tiendo a usar el primero para experimentar, mientras que uso el segundo cuando quiero guardar mis resultados para más adelante y compartirlos con otras personas.
Python me brinda potencia y facilidad incomparables con los datos
No tengo nada en contra de las hojas de cálculo como Excel. Los uso a menudo para formatear e ingresar datos, pero cuando llega el momento de realizar cálculos serios, utilizo Python. El poder de las bibliotecas de Python es casi imposible de igualar, mientras que Python sigue siendo un lenguaje fácil de escribir y, quizás lo más importante, de leer. Estas bibliotecas probablemente serán las principales herramientas estadísticas de mi caja de herramientas.
- Sistema operativo
-
Ubuntu Linux 22.04 LTS
- UPC
-
Intel Core i7-1360P de 13.ª generación
- GPU
-
Gráficos Intel Iris Xe
- RAM
-
16 GB DDR5
- Almacenamiento
-
SSD de 512 GB
- Peso
-
2,71 libras
La Dell XPS 13 Plus con Linux combina hardware potente y una gran pantalla en un chasis liviano y de excelente apariencia para crear una fantástica computadora portátil con Linux.
