Biblioteca Pandas para la visualización de datos en Python

B

En mi artículo anterior, expliqué cómo se puede usar la biblioteca Seaborn para la visualización avanzada de datos en Python. Seaborn es una biblioteca excelente y siempre prefiero trabajar con ella, sin embargo, es una biblioteca un poco avanzada y necesita un poco de tiempo y práctica para acostumbrarme.

En este artículo, veremos cómo Pandas, que es otra biblioteca de Python muy útil, se puede utilizar para la visualización de datos en Python. Pandas se usa principalmente para importar y administrar conjuntos de datos en una variedad de formatos, como se explica en el artículo Tutorial para principiantes en la biblioteca Python de Pandas. Las capacidades de visualización de datos de Pandas son menos conocidas. En este artículo, se centrará en las capacidades de visualización de datos de Pandas.

Es pertinente mencionar que, al igual que Seaborn, las capacidades de visualización de datos de Pandas también se basan en la biblioteca Matplotlib . Pero con Pandas, puede trazar directamente diferentes tipos de visualizaciones directamente desde el marco de datos de Pandas que veremos en este artículo.

Gráficos básicos

En esta sección, veremos cómo se pueden usar los marcos de datos de Pandas para trazar gráficos simples como histogramas, gráficos de conteo, gráficos de dispersión, etc.

El conjunto de datos

El conjunto de datos que vamos a utilizar para trazar estos gráficos es el famoso conjunto de datos del Titanic. El conjunto de datos se puede descargar de Kaggle. En este artículo, usaremos el train.csvarchivo.

Antes de importar el conjunto de datos a nuestra aplicación, debemos importar las bibliotecas necesarias. Ejecute el siguiente script

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd

El siguiente script importa el conjunto de datos;

titanic_data = pd.read_csv(r"E:Datasetstrain.csv")

Veamos cómo se ve realmente nuestro conjunto de datos. Ejecute el siguiente script:

titanic_data.head()

La salida se ve así:

Puede ver que el conjunto de datos contiene la información sobre los pasajeros del desafortunado barco titánico que se hundió en el Océano Atlántico Norte en 1912. El conjunto de datos incluye información como el nombre, la edad, la clase de pasajero, si el pasajero sobrevivió o no, etc.

Tracemos algunos gráficos básicos usando esta información.

Histograma

Para dibujar un histograma para cualquier columna, debe especificar el nombre de la columna seguido del método hist()método que se muestra a continuación:

titanic_data['Age'].hist()

Puede ver lo fácil que es trazar un histograma para la columna de edad usando el marco de datos de Pandas. La salida del script anterior se ve así:

Puede pasar parámetros basados ​​en Matplotlib al hist()método ya que, detrás de escena, Pandas usa la biblioteca Matplotlib. Entonces, por ejemplo, puede aumentar la cantidad de contenedores para su histograma usando el binatributo, de la siguiente manera:

titanic_data['Age'].hist(bins=20)

En el script anterior, establecemos el número de bins para nuestro histograma en 20. La salida se ve así:

Puede mejorar el estilo de los gráficos importando la biblioteca de Seaborn y estableciendo un valor para su set_styleatributo. Por ejemplo, establezcamos el estilo de la cuadrícula en gris oscuro. Ejecute el siguiente script:

import seaborn as sns
sns.set_style('darkgrid')

Ahora vuelva a trazar el histograma usando el siguiente script:

titanic_data['Age'].hist(bins=20)

En la salida, verá cuadrículas de color gris oscuro en el fondo de nuestro gráfico:

Hay dos formas de utilizar el marco de datos para trazar gráficos. Una de las formas es pasar el valor del kindparámetro de la plotfunción como se muestra a continuación:

titanic_data['Age'].plot(kind='hist', bins=20)

La salida se ve así:

La otra forma es llamar directamente al nombre del método para el gráfico utilizando la plotfunción sin pasar el nombre de la función al kindatributo. Usaremos el segundo método (llamando al nombre del método para la gráfica usando la plotfunción) de aquí en adelante.

Gráficos de línea

Para trazar gráficos de líneas con el marco de datos Pandas, debe llamar al line()método usando la plotfunción y pasar el valor para el índice xy el eje y, como se muestra a continuación:

titanic_data.plot.line(x='Age', y='Fare', figsize=(8,6))

La secuencia de comandos anterior traza un gráfico de línea donde el eje x contiene la edad de los pasajeros y el eje y contiene las tarifas pagadas por los pasajeros. Puede ver que podemos usar figsizeatributos para cambiar el tamaño de la parcela. La salida se ve así:

Gráfico de dispersión

Para trazar gráficos de líneas con el marco de datos de Pandas, debe llamar al scatter()método usando la plotfunción y pasar el valor para el índice xy el eje y como se muestra a continuación:

titanic_data.plot.scatter(x='Age', y='Fare', figsize=(8,6))

La salida del sript anterior se ve así:

Diagrama de caja

Los marcos de datos de Pandas también se pueden usar para trazar el diagrama de caja. Todo lo que tienes que hacer es llamar al box()método usando la plotfunción del marco de datos de pandas:

titanic_data.plot.box(figsize=(10,8))

En la salida, verá diagramas de caja para todas las columnas numéricas en el conjunto de datos Titanic:

Parcelas hexagonales

Las gráficas hexagonales trazan los hexágonos para los puntos de datos que se cruzan en los ejes xey. Cuantos más puntos se crucen, más oscuro es el hexágono. Para trazar gráficos hexagonales con el marco de datos de Pandas, debe llamar al hexbin()método usando la plotfunción y pasar el valor para el índice xy el eje y como se muestra a continuación:

titanic_data.plot.hexbin(x='Age', y='Fare', gridsize=30, figsize=(8,6))

En la salida, verá la gráfica hexagonal con la edad en el eje xy la tarifa en el eje y.

Gráficos de densidad de kernel

Al igual que Seaborn y Matplotlib, también podemos dibujar gráficos de densidad del kernel con la biblioteca Pandas. Para trazar gráficos de densidad del kernel con el marco de datos de Pandas, debe llamar al kde()método usando la plotfunción:

titanic_data['Age'].plot.kde()

La salida del script anterior se ve así:

En esta sección, vimos cómo se puede usar la biblioteca Pandas para dibujar algunos de los gráficos más básicos. Sin embargo, la aplicación de la biblioteca Pandas para la visualización de datos no se limita a estos gráficos básicos. Por el contrario, Pandas también se puede usar para visualizar datos de series de tiempo que veremos en la siguiente sección.

Pandas para visualizar series temporales

Los datos de series de tiempo son el tipo de datos donde los atributos o características dependen del índice de tiempo, que también es una característica del conjunto de datos. Algunos de los ejemplos más comunes de datos de series de tiempo incluyen el número de artículos vendidos por hora, la temperatura diaria y los precios diarios de las acciones. En todos estos ejemplos, los datos dependen de alguna unidad de tiempo y varían según esa unidad de tiempo. La unidad de tiempo puede ser una hora, día, semana, año y así sucesivamente.

La biblioteca de Pandas se puede utilizar para visualizar el día de la serie temporal. La biblioteca Pandas viene con funciones integradas que se pueden usar para realizar una variedad de tareas con datos de series de tiempo, como el cambio de tiempo y el muestreo de tiempo. En esta sección, veremos, con la ayuda de ejemplos, cómo se usa la biblioteca Pandas para la visualización de series de tiempo. Pero primero, necesitamos datos de series de tiempo.

El conjunto de datos

Como se dijo anteriormente, uno de los ejemplos de datos de series de tiempo son los precios de las acciones que varían con respecto al tiempo. En esta sección, usaremos los precios de las acciones de AAPL para los 5 años (del 12-11-2013 al 12-11-2018) para visualizar los datos de la serie temporal. El conjunto de datos se puede descargar desde este enlace de Yahoo Finance . Para otros datos de ticker de la empresa, simplemente vaya a su sitio web, escriba el nombre de la empresa y el período de tiempo para el que desea que se descarguen sus datos. El conjunto de datos se descargará en formato CSV.

Importemos las bibliotecas que vamos a utilizar para la visualización de datos de series temporales en Pandas. Ejecute el siguiente script:

import numpy as np
import pandas as pd

%matplotlib inline
import matplotlib.pyplot as plt

A continuación, para importar el conjunto de datos, usaremos el read_csv()método de la biblioteca Pandas de la siguiente manera:

apple_data = pd.read_csv(r'F:/AAPL.csv')

Para ver cómo se ve nuestro conjunto de datos, podemos usar la head()función. Ejecute el siguiente script:

apple_data.head()

En la salida, verá las primeras cinco filas del conjunto de datos.

Puede ver que el conjunto de datos contiene la fecha, el precio de apertura y cierre de la acción para el día, el precio más alto y más bajo de la acción para el día, el precio de cierre ajustado y el volumen de la acción. Puede ver que todas las columnas dependen de la fecha. El cambio en la columna Fecha provoca el cambio en todas las demás columnas. Por lo tanto, la fecha es la columna de índice en este caso. Sin embargo, en nuestro conjunto de datos, la fecha predeterminada se trata como una cadena. Primero, necesitamos cambiar el tipo de la columna de Fecha de cadena a DateTime y luego necesitamos establecer la columna de Fecha como columna de índice.

Ejecute el siguiente script para cambiar el tipo de la columna DateTime a cadena.

apple_data['Date'] = apple_data['Date'].apply(pd.to_datetime)

En el script anterior, aplicamos el to_datetimemétodo a la columna Fecha de nuestro conjunto de datos para cambiar su tipo.

A continuación, debemos establecer la columna Fecha como columna de índice. El siguiente script hace eso:

apple_data.set_index('Date', inplace=True)

En el script anterior, usamos el set_indexmétodo del marco de datos de Pandas y le pasamos la columna ‘Fecha’ como parámetro. El atributo inplace=Truesignifica que la conversión se llevará a cabo y no es necesario almacenar el resultado en otra variable.

Ahora, imprimamos las primeras cinco filas de nuestro conjunto de datos nuevamente usando la head()función:

apple_data.head()

La salida del script anterior se ve así:

En la salida, puede ver que ahora los valores en la columna Fecha están en negrita, lo que resalta el hecho de que la columna Fecha ahora se usa como columna de índice.

Antes de pasar a la sección de cambio de tiempo, tracemos el precio de cierre de las acciones de Apple. Ejecute el siguiente script:

plt.rcParams['figure.figsize'] = (8,6)   # Change the plot size
apple_data["Close"].plot(grid=True)

Observe que en el script anterior simplemente llamamos al plotmétodo en la columna ‘Cerrar’. No especificamos ninguna información sobre la fecha, pero como la columna Fecha es una columna de índice, el eje x contendrá los valores de la columna Fecha, mientras que el eje y mostrará el precio de cierre de las acciones. La salida del script anterior se ve así:

Los pandas pueden realizar una variedad de tareas de visualización en datos de series de tiempo, como cambio de tiempo, muestreo de tiempo, expansión continua, predicciones de series de tiempo. En este artículo, veremos dos aplicaciones de visualización de series de tiempo de Pandas: Time Shifting y Time sample.

Cambio de hora

El cambio de tiempo se refiere a mover los datos un cierto número de pasos hacia adelante o hacia atrás. El desplazamiento de series de tiempo es una de las tareas más importantes en el análisis de series de tiempo.

Trazamos la cabeza del conjunto de datos anteriormente, ahora primero trazaremos la cola de nuestro conjunto de datos. Más adelante usaremos estos marcos de datos de cabeza y cola para ver los efectos del cambio de tiempo.

Para trazar la cola del conjunto de datos, podemos usar la tail()función de la siguiente manera:

apple_data.tail()

En la salida, verá las últimas cinco filas del conjunto de datos como se muestra a continuación:

Primero avancemos los datos para ver cómo funciona el cambio de tiempo en una dirección positiva. Para mover datos un número específico de pasos hacia adelante, simplemente necesita llamar al shift()método en el conjunto de datos y pasarle un número entero positivo. Por ejemplo, la siguiente secuencia de comandos desplaza los datos dos pasos hacia adelante y luego imprime el encabezado de los datos:

apple_data.shift(2).head()

En la salida, verá que no se mostrarán datos para las dos primeras filas del encabezado, ya que los datos para estas filas se moverán dos pasos hacia adelante. En el resultado, verá que los datos que anteriormente pertenecían al primer índice, es decir, 2013-12-10, después de avanzar dos pasos, pertenecen al tercer índice, es decir, 2013-12-12 como se muestra a continuación:

Por otro lado, para desplazar los datos hacia atrás, puede volver a usar la shift()función pero debe especificar un valor negativo. Por ejemplo, para desplazar los datos 2 pasos hacia atrás, puede utilizar el siguiente script:

apple_data.shift(-2).tail()

En el script anterior, los datos se desplazan 2 pasos hacia atrás y luego se muestra la cola de los datos. En la salida, verá que las dos últimas filas no tienen registros ya que los datos se mueven dos pasos hacia atrás como se muestra a continuación:

Muestreo de tiempo

El muestreo de tiempo se refiere a agrupar características o atributos de datos basados ​​en el valor agregado de la columna de índice. Por ejemplo, si desea ver el precio de apertura máximo general de las acciones por año para todos los años en el conjunto de datos, puede usar el muestreo de tiempo.

Implementar el muestreo de tiempo con Pandas es bastante sencillo. resample()Debe llamar al método utilizando el marco de datos de Pandas. También debe pasar el valor del ruleatributo. El valor es básicamente la compensación de tiempo que especifica el marco de tiempo para el que queremos agrupar nuestros datos.

Por último, es necesario llamar a la función de agregación tales como mean, max, min, etc. Las siguientes pantallas de guión el valor máximo de las atributo para cada mes en el conjunto de datos:

apple_data.resample(rule="M").max()

La salida del script anterior se ve así:

La lista detallada de los valores de compensación para el ruleatributo es la siguiente:

B       business day frequency
C       custom business day frequency (experimental)
D       calendar day frequency
W       weekly frequency
M       month end frequency
SM      semi-month end frequency (15th and end of month)
BM      business month end frequency
CBM     custom business month end frequency
MS      month start frequency
SMS     semi-month start frequency (1st and 15th)
BMS     business month start frequency
CBMS    custom business month start frequency
Q       quarter end frequency
BQ      business quarter end frequency
QS      quarter start frequency
BQS     business quarter start frequency
A       year end frequency
BA      business year end frequency
AS      year start frequency
BAS     business year start frequency
BH      business hour frequency
H       hourly frequency
T       minutely frequency
S       secondly frequency
L       milliseonds
U       microseconds
N       nanoseconds

La lista anterior se ha extraído de la documentación oficial de Pandas .

Intentemos ahora imprimir los valores promedio trimestrales (cada tres meses) para el conjunto de datos. Puede ver en la lista de compensación que Qse utiliza para la frecuencia trimestral. Ejecute el siguiente script:

apple_data.resample(rule="Q").mean()

La salida del script anterior se ve así:

Además de encontrar los valores agregados de todas las columnas del conjunto de datos. También puede volver a muestrear datos para una columna en particular. Tracemos el diagrama de barras que muestra el valor medio anual para el atributo ‘Cerrar’ de nuestro conjunto de datos. Ejecute el siguiente script:

plt.rcParams['figure.figsize'] = (7, 5)
apple_data['Close'].resample('A').mean().plot(kind='bar')

Puede ver que para trazar el diagrama de barras simplemente tiene que llamar a la plotfunción después de la función agregada y pasarle el tipo de diagrama que desea trazar. La salida del script anterior se ve así:

De manera similar, para dibujar un gráfico de líneas que muestre el valor máximo mensual del precio de las acciones para el atributo ‘Cerrar’, puede usar el siguiente script:

plt.rcParams['figure.figsize'] = (7, 5)
apple_data['Close'].resample('M').max().plot(kind='line')

La salida del script anterior se ve así:

Conclusión

Pandas es una de las bibliotecas de Python más útiles para la ciencia de datos. Por lo general, Pandas se usa para importar, manipular y limpiar el conjunto de datos. Sin embargo, Pandas también se puede utilizar para la visualización de datos, como mostramos en este artículo.

En este artículo, vimos con la ayuda de diferentes ejemplos cómo se pueden usar los Pandas para trazar tramas básicas. También estudiamos cómo se pueden utilizar las funcionalidades de Pandas para la visualización de datos de series de tiempo. Como regla general, si realmente tiene que trazar una barra simple, una línea o gráficos de conteo, debe usar Pandas.

 

About the author

Ramiro de la Vega

Bienvenido a Pharos.sh

Soy Ramiro de la Vega, Estadounidense con raíces Españolas. Empecé a programar hace casi 20 años cuando era muy jovencito.

Espero que en mi web encuentres la inspiración y ayuda que necesitas para adentrarte en el fantástico mundo de la programación y conseguir tus objetivos por difíciles que sean.

Add comment

Sobre mi

Últimos Post

Etiquetas

Esta web utiliza cookies propias para su correcto funcionamiento. Al hacer clic en el botón Aceptar, aceptas el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Más información
Privacidad