Saltar al contenido
Manejo de datos con Pandas

Introducción a Pandas y manipulación básica de datos

Introducción

Pandas es una biblioteca de Python que se utiliza para la manipulación y análisis de datos. Con Pandas, se pueden realizar operaciones de series temporales, operaciones de álgebra relacional y manipular datos faltantes. Pandas ofrece una serie de herramientas de alta potencia para la lectura y escritura de datos, manejo de datos, filtrado y manipulación.

Los dos principales objetos de Pandas son las Series y DataFrames. Las Series son conjuntos de datos unidimensionales, mientras que los DataFrames son conjuntos de datos bidimensionales, parecidos a una hoja de cálculo. Las DataFrames permiten la manipulación de datos en una línea y columna, con funciones de índice y etiquetado para acceder a los datos.

Para manipular los datos en Pandas, se pueden realizar operaciones básicas como la selección de datos, el filtrado y la ordenación. Además, Pandas permite la agrupación y agregación de datos, y la combinación y unión de múltiples conjuntos de datos.

En resumen, Pandas es una herramienta esencial para el análisis y manipulación de datos en Python. Sus funciones avanzadas para la gestión de datos permiten una exploración y procesamiento más intuitivo de los datos.

Resumen

Pandas es una biblioteca de Python utilizada para el análisis de datos. Pandas es una abreviatura de "Panel Data", que es un término de econometría para datos multidimensionales. Los datos en Pandas se dividen en dos tipos: Series y DataFrames.

La Serie de Pandas es un objeto unidimensional que se utiliza para almacenar datos de un solo tipo (por ejemplo, todos los elementos son enteros). Cada elemento en una Serie de Pandas tiene una etiqueta asociada o un conjunto de etiquetas, que se llama índice de la serie.

Un DataFrame es un objeto tabular bidimensional que se utiliza para almacenar datos de diferentes tipos. Un DataFrame se parece a una tabla en una base de datos relacional, con filas y columnas. Cada columna en un DataFrame se llama Serie. Los DataFrames también tienen un índice, que se utiliza para identificar las filas.

La manipulación de datos con Pandas incluye una variedad de comandos que se utilizan para explorar, filtrar y transformar los datos. Algunos de los comandos más comúnmente utilizados en la manipulación de datos de Pandas incluyen:

  1. read_csv() - se utiliza para leer archivos CSV y cargar los datos en Pandas DataFrames.
  2. head() - muestra las primeras filas del DataFrame.
  3. tail() - muestra las últimas filas del DataFrame.
  4. describe() - proporciona estadísticas resumidas del DataFrame.
  5. loc[] y iloc[] - se utilizan para acceder a las filas y columnas de un DataFrame.
  6. drop() - se utiliza para eliminar filas o columnas de un DataFrame.
  7. groupby() - se utiliza para agrupar datos y aplicar funciones a grupos específicos.
  8. merge() - se utiliza para combinar dos o más DataFrames en función de una o más claves.
  9. pivot_table() - se utiliza para crear una tabla dinámica a partir de un DataFrame.

Estos son solo algunos de los comandos que se utilizan en la manipulación de datos con Pandas, pero hay muchos más. Al dominar los fundamentos de la introducción a Pandas y manipulación básica de datos de Pandas, se puede trabajar con confianza en la exploración y el análisis de datos más complejos en Python.

Aplicación teórica

Operaciones Matemáticas Básicas con DataFrames

Suma y Resta

Suma de Columnas: La suma de dos columnas en un DataFrame se realiza elemento a elemento. Si tenemos un DataFrame con columnas `columna1` y `columna2`, la suma de estas dos columnas se puede calcular directamente.

\[
\text{df['suma']} = \text{df['columna1']} + \text{df['columna2']}
\]

Ejemplo: Supongamos que `df` tiene dos columnas de datos de ventas en dos regiones diferentes. La suma de estas columnas puede representar las ventas totales combinadas.

Resta de Columnas: Similar a la suma, la resta se realiza elemento a elemento entre las dos columnas.

\[
\text{df['diferencia']} = \text{df['columna1']} - \text{df['columna2']}
\]

Ejemplo: Si `columna1` representa las ventas en un trimestre y `columna2` las ventas en el trimestre anterior, la diferencia puede indicar el cambio en ventas.

Multiplicación y División

Multiplicación de Columnas: La multiplicación de dos columnas también se realiza elemento a elemento.

\[
\text{df['producto']} = \text{df['columna1']} \times \text{df['columna2']}
\]

Ejemplo: En un DataFrame que contiene `precio` y `cantidad`, la multiplicación puede calcular el valor total de las ventas.

División de Columnas: La división entre columnas se realiza elemento a elemento, y es útil para calcular proporciones o tasas.

\[
\text{df['cociente']} = \text{df['columna1']} \div \text{df['columna2']}
\]

Ejemplo: Si `columna1` es el total de ventas y `columna2` es el número de unidades vendidas, la división proporciona el precio promedio por unidad.

Operaciones Estadísticas

Media: La media de una columna proporciona un valor promedio que representa la tendencia central de los datos.

\[
\text{media} = \text{df['columna'].mean()}
\]

Ejemplo: La media de ventas mensuales puede ofrecer una visión general del rendimiento promedio.

Mediana: La mediana es el valor central en una serie de datos ordenados, que no se ve afectado por valores extremos.

\[
\text{mediana} = \text{df['columna'].median()}
\]

Ejemplo: La mediana de salarios en una empresa puede ser más representativa del salario típico que la media, especialmente si hay salarios extremos.

Desviación Estándar: La desviación estándar mide la dispersión de los datos con respecto a la media. Una desviación estándar alta indica una mayor variabilidad.

\[
\text{desviación\_estándar} = \text{df['columna'].std()}
\]

Ejemplo: En el análisis de rendimiento de estudiantes, una alta desviación estándar en las calificaciones indica una amplia gama de habilidades.

Varianza: La varianza es el cuadrado de la desviación estándar y también mide la dispersión de los datos.

\[
\text{varianza} = \text{df['columna'].var()}
\]

Ejemplo: La varianza en los costos de producción puede ayudar a entender la consistencia en los procesos de fabricación.

Normalización y Estandarización

Normalización: La normalización escala los datos a un rango específico, típicamente entre 0 y 1.

\[
\text{df\_norm} = \frac{\text{df} - \text{df.min()} }{\text{df.max()} - \text{df.min()}}
\]

Ejemplo: Normalizar datos de puntuaciones en diferentes exámenes permite compararlas en una escala uniforme.

Estandarización: La estandarización transforma los datos para que tengan una media de 0 y una desviación estándar de 1.

\[
\text{df\_std} = \frac{\text{df} - \text{df.mean()} }{\text{df.std()}}
\]

Ejemplo: Estandarizar los ingresos de los clientes facilita la comparación entre diferentes segmentos de mercado.

Operaciones Avanzadas

Suma Total: La suma total de todos los valores en una columna proporciona el valor agregado de esa columna.

\[
\text{suma\_total} = \text{df.sum()}
\]

Ejemplo: La suma total de ventas en un año proporciona la cifra de ventas anual.

Promedio: El promedio de los valores en una columna indica el valor medio.

\[
\text{promedio} = \text{df.mean()}
\]

Ejemplo: El promedio de temperaturas diarias durante un mes puede indicar el clima medio.

Mínimo y Máximo: Encontrar los valores mínimo y máximo en una columna ayuda a entender el rango de los datos.

\[
\text{mínimo} = \text{df.min()}
\]

\[
\text{máximo} = \text{df.max()}
\]

Ejemplo: El mínimo y máximo de ventas semanales pueden indicar la variabilidad en las ventas.

Cálculo de Correlaciones: La matriz de correlación muestra cómo se relacionan las diferentes columnas entre sí.

\[
\text{correlación} = \text{df.corr()}
\]

Ejemplo: La correlación entre el gasto en publicidad y las ventas puede ayudar a determinar el impacto del marketing en los ingresos.

Estas operaciones matemáticas básicas son esenciales para el análisis y la manipulación de datos, permitiendo a los analistas y científicos de datos realizar cálculos cruciales y extraer conclusiones significativas de conjuntos de datos complejos.

Análisis Estadístico Descriptivo

Análisis Estadístico Descriptivo

El análisis estadístico descriptivo se enfoca en resumir y describir las características principales de un conjunto de datos mediante métodos cuantitativos. Su objetivo es proporcionar una visión general del comportamiento de los datos y revelar patrones o tendencias significativas.

Medidas de Tendencia Central

La media aritmética es la suma de todos los valores en un conjunto de datos dividida por el número total de valores.

\[
\text{media} = \frac{1}{n} \sum_{i=1}^{n} x_i
\]

donde \( x_i \) representa cada valor del conjunto de datos y \( n \) es el número total de valores.

La mediana es el valor central en un conjunto de datos ordenado. Si el número de observaciones es impar, la mediana es el valor en la posición central. Si el número de observaciones es par, se calcula como el promedio de los dos valores centrales.

\[
\text{mediana} = \begin{cases} 
x_{(n+1)/2} & \text{si } n \text{ es impar} \\
\frac{x_{n/2} + x_{(n/2)+1}}{2} & \text{si } n \text{ es par}
\end{cases}
\]

La moda es el valor que aparece con mayor frecuencia en un conjunto de datos. Un conjunto de datos puede tener una moda, más de una moda (bimodal o multimodal), o ninguna moda si todos los valores aparecen con la misma frecuencia.

Medidas de Dispersión

La varianza mide la dispersión de los datos con respecto a la media, calculada como el promedio de las diferencias al cuadrado entre cada valor y la media.

\[
\text{varianza} = \frac{1}{n} \sum_{i=1}^{n} (x_i - \text{media})^2
\]

La desviación estándar es la raíz cuadrada de la varianza y proporciona una medida de dispersión en las mismas unidades que los datos originales.

\[
\text{desviación\_estándar} = \sqrt{\text{varianza}}
\]

El rango es la diferencia entre el valor máximo y el valor mínimo del conjunto de datos.

\[
\text{rango} = \text{máximo} - \text{mínimo}
\]

Medidas de Forma de la Distribución

La asimetría (skewness) mide la simetría de la distribución de los datos. Un valor de asimetría cercano a 0 indica una distribución simétrica. Valores positivos indican una cola larga a la derecha, mientras que valores negativos indican una cola larga a la izquierda.

\[
\text{asimetría} = \frac{n}{(n-1)(n-2)} \sum_{i=1}^{n} \left( \frac{x_i - \text{media}}{\text{desviación\_estándar}} \right)^3
\]

La curtosis mide la "altitud" y "ancho" de las colas de la distribución. La curtosis excesiva compara la distribución de los datos con una distribución normal.

\[
\text{curtosis} = \frac{n(n+1)}{(n-1)(n-2)(n-3)} \sum_{i=1}^{n} \left( \frac{x_i - \text{media}}{\text{desviación\_estándar}} \right)^4 - \frac{3(n-1)^2}{(n-2)(n-3)}
\]

Representación Gráfica

Los histogramas muestran la distribución de un conjunto de datos dividiendo el rango de datos en intervalos (bins) y contando el número de observaciones en cada intervalo.

Los diagramas de caja (box plots) visualizan la mediana, los cuartiles y los valores atípicos de un conjunto de datos. La caja representa el rango intercuartil (IQR), mientras que las líneas que se extienden desde la caja indican el rango de los datos.

Los gráficos de dispersión muestran la relación entre dos variables y ayudan a identificar patrones, correlaciones o tendencias en los datos.

El análisis estadístico descriptivo proporciona herramientas fundamentales para resumir y entender los datos, facilitando la interpretación de la información y la toma de decisiones basada en datos cuantitativos.

Manipulación y Transformación de Datos Numéricos

La manipulación y transformación de datos numéricos es fundamental para preparar y analizar datos en estadística, aprendizaje automático y análisis de datos. Estas operaciones permiten limpiar, reorganizar y ajustar los datos para obtener información útil y realizar análisis precisos.

Operaciones Básicas

Suma y Resta de Columnas: Para sumar o restar columnas en un DataFrame, se realizan operaciones elemento a elemento. Esto es útil para calcular totales o diferencias entre conjuntos de datos.

\[
\text{df['total']} = \text{df['ventas\_2022']} + \text{df['ventas\_2023']}
\]

\[
\text{df['diferencia']} = \text{df['ventas\_2022']} - \text{df['ventas\_2023']}
\]

Multiplicación y División de Columnas: Estas operaciones permiten ajustar y comparar datos. La multiplicación y división entre columnas se realiza de manera similar a la suma y resta.

\[
\text{df['ingresos\_totales']} = \text{df['cantidad\_vendida']} \times \text{df['precio\_unitario']}
\]

\[
\text{df['precio\_promedio']} = \text{df['ingresos\_totales']} \div \text{df['cantidad\_vendida']}
\]

Transformación de Datos

Normalización: La normalización ajusta los datos a un rango específico, generalmente entre 0 y 1, lo que facilita la comparación de datos en diferentes escalas.

\[
\text{df\_normalizado} = \frac{\text{df['ventas']} - \text{df['ventas'].min()} }{\text{df['ventas'].max()} - \text{df['ventas'].min()}}
\]

Estandarización: La estandarización convierte los datos para que tengan una media de 0 y una desviación estándar de 1. Esto es útil cuando los datos tienen diferentes unidades o escalas.

\[
\text{df\_estandarizado} = \frac{\text{df['ventas']} - \text{df['ventas'].mean()} }{\text{df['ventas'].std()}}
\]

Log-transformación: La transformación logarítmica se usa para estabilizar la varianza y reducir la asimetría en datos que siguen una distribución sesgada a la derecha.

\[
\text{df\_logarítmico} = \log(\text{df['ventas']} + 1)
\]

Escalado: El escalado se usa para ajustar los valores de datos a una escala específica. Por ejemplo, el escalado Min-Max transforma los datos para que estén en un rango de 0 a 1.

\[
\text{df\_escalado} = \text{scaler.fit\_transform}(\text{df[['ventas']])
\]

Aplicación de Funciones: Se pueden aplicar funciones matemáticas y estadísticas a columnas para crear nuevas variables o ajustar los datos.

\[
\text{df['ventas\_logarítmico']} = \text{np.log}(\text{df['ventas']} + 1)
\]

Operaciones Avanzadas

Agrupación y Agregación: La agrupación permite resumir datos mediante operaciones de agregación, como sumas, medias o conteos, basadas en categorías.

\[
\text{df\_agrupado} = \text{df.groupby('categoria').agg({'ventas': 'mean'})}
\]

Pivot Tables: Las tablas dinámicas reorganizan datos para mostrar resúmenes y estadísticas en un formato tabular.

\[
\text{tabla\_dinámica} = \text{df.pivot\_table(values='ventas', index='mes', columns='producto')}
\]

Filtrado y Selección: Filtrar datos con base en condiciones específicas permite centrarse en subconjuntos relevantes.

\[
\text{df\_filtrado} = \text{df[df['ventas'] > 1000]}
\]

Operaciones de Desplazamiento y Ventana: Operaciones como el desplazamiento de datos permiten analizar series temporales y calcular medias móviles.

\[
\text{df['media\_móvil']} = \text{df['ventas'].rolling(window=3).mean()}
\]

Aplicación de Funciones Personalizadas: Se pueden aplicar funciones personalizadas a los datos para realizar transformaciones específicas.

\[
\text{df['ventas\_al\_cuadrado']} = \text{df['ventas'].apply(lambda x: x^2)}
\]

La manipulación y transformación de datos numéricos es crucial para la preparación de datos antes del análisis, garantizando que la información sea precisa y relevante. Estas técnicas permiten a los analistas y científicos de datos adaptar los datos a las necesidades del análisis, extrayendo insights significativos y facilitando la toma de decisiones informadas.

Aplicación práctica

Para utilizar Pandas en Python, es necesario importar la librería utilizando el siguiente comando:

import pandas as pd

 

Una vez cargada la librería, podemos comenzar a trabajar con nuestros datos. Para este ejemplo, utilizaremos un conjunto de datos sobre las especies de plantas recopiladas durante un estudio de campo en las islas Galápagos.

Para cargar nuestros datos en un objeto de Pandas llamado "dataframe", utilizaremos el siguiente comando:

df = pd.read_csv('galapagos_plants.csv')

 

El archivo .csv debe estar en la misma carpeta donde se encuentra el archivo .py que estamos ejecutando.

A continuación, podemos explorar nuestro nuevo dataframe utilizando varias herramientas de Pandas. Por ejemplo, podemos ver los primeros cinco registros del dataframe utilizando el comando:

df.head()

 

Esto mostrará los primeros cinco registros de nuestro dataframe. También podemos utilizar el comando tail() para ver los últimos cinco registros.

Podemos consultar la forma del dataframe utilizando el atributo "shape". Este atributo devolverá una tupla con el número de filas y columnas del dataframe:

print(df.shape)

 

Podemos seleccionar solo aquellas columnas que nos interesen utilizando la siguiente sintaxis:

df[['columna1', 'columna2']]

 

También podemos seleccionar únicamente aquellas filas que cumplan con un cierto criterio. Por ejemplo, si queremos ver solo aquellas plantas pertenecientes a la familia de las Asteráceas:

df[df['taxa'] == 'Asteraceae']

 

O si queremos ver solamente aquellas plantas que tienen una altura mayor a 50 cm:

df[df['height'] > 50]

 

Existen muchas más herramientas para manipular y visualizar datos con Pandas. ¡Es una librería muy completa!