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 excelente biblioteca y siempre prefiero trabajar con ella, sin embargo, es una biblioteca avanzada y necesita un poco de tiempo y práctica para acostumbrarme.
En este artículo, veremos cómo Pandas, que es otra biblioteca muy útil de Python, se puede usar para la visualización de datos en Python. Pandas se usa principalmente para importar y administrar el conjunto de datos en una variedad de formatos, como se explica en el artículo Tutorial para principiantes en la Biblioteca de 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 de 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.

Parcelas básicas

En esta sección, veremos cómo se pueden usar los marcos de datos de Pandas para trazar diagramas simples como histogramas, gráficos de conteo, diagramas 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 Titanic. El conjunto de datos se puede descargar desde Kaggle. En este artículo, vamos a utilizar el train.csvarchivo.
Antes de importar el conjunto de datos a nuestra aplicación, necesitamos importar las bibliotecas requeridas. Ejecuta 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:\Datasets\train.csv")  
Veamos cómo se ve 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 del pasajero, si el pasajero sobrevivió o no, etc.
Vamos a trazar algunos gráficos básicos utilizando esta información.

Histograma

Para dibujar un histograma para cualquier columna, debe especificar el nombre de la columna seguido del método del 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 utilizando el marco de datos de Pandas. La salida de la secuencia de comandos anterior se ve así:
Puede pasar parámetros basados ​​en Matplotlib al hist()método, ya que detrás de la escena, Pandas usa la biblioteca Matplotlib. Así, por ejemplo, puede aumentar el número 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 Seaborn y estableciendo un valor para su set_styleatributo. Por ejemplo, vamos a configurar el estilo de la cuadrícula a gris oscuro. Ejecuta el siguiente script:
import seaborn as sns  
sns.set_style('darkgrid')  
Ahora vuelve a dibujar 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 nuestra trama:
Hay dos formas en que puedes usar dataframe para trazar gráficos. Una de las formas es pasar el valor para el 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 diagrama usando 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 trama usando la plotfunción) de aquí en adelante.

Líneas de parcelas

Para trazar diagramas de líneas con el marco de datos de Pandas, debe llamar al line()método utilizando la plotfunción y pasar el valor para el índice x y el eje y, como se muestra a continuación:
titanic_data.plot.line(x='Age', y='Fare', figsize=(8,6))  
El guión de arriba traza un trazado de línea donde el eje x contiene la edad de los pasajeros y el y-axix contiene las tarifas pagadas por los pasajeros. Puedes ver que podemos usar el figsizeatributo para cambiar el tamaño de la parcela. La salida se ve así:

Gráfico de dispersión

Para trazar diagramas de líneas con el marco de datos de Pandas, debe llamar al scatter()método utilizando la plotfunción y pasar el valor para el índice x y 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 utilizando la plotfunción del marco de datos de pandas:
titanic_data.plot.box(figsize=(10,8))  
En la salida, verá diagramas de cuadro para todas las columnas numéricas en el conjunto de datos Titanic:

Parcelas hexagonales

Las gráficas hexagonales trazan los hexágonos para intersectar puntos de datos en los ejes x e y. Cuantos más puntos se cruzan, más oscuro es el hexágono. Para trazar diagramas hexagonales con el marco de datos de Pandas, debe llamar al hexbin()método utilizando la plotfunción y pasar el valor para el índice x y 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 x y la tarifa en el eje y.

Parcelas de densidad de grano

Como Seaborn y Matplotlib, también podemos dibujar diagramas de densidad del núcleo con la biblioteca Pandas. Para trazar diagramas de densidad del núcleo con el marco de datos de Pandas, debe llamar al kde()método utilizando la plotfunción:
titanic_data['Age'].plot.kde()  
La salida de la secuencia de comandos anterior se ve así:
En esta sección, vimos cómo se puede usar la biblioteca de Pandas para dibujar algunas de las parcelas más básicas. Sin embargo, la aplicación de la biblioteca de Pandas para la visualización de datos no se limita a tales gráficos básicos. Más bien, 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 de acuerdo con 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 las series de tiempo. La biblioteca de Pandas viene con funciones integradas que se pueden usar para realizar una variedad de tareas en datos de series de tiempo, como el desplazamiento de tiempo y el muestreo de tiempo. En esta sección, veremos, con la ayuda de ejemplos, cómo se utiliza 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, utilizaremos los precios de las acciones de AAPL durante los 5 años (del 12-11-2013 al 12-11-2018) para visualizar datos de series de tiempo. El conjunto de datos se puede descargar desde este enlace de Yahoo Finance . Para otros datos de la compañía, solo vaya a su sitio web, escriba el nombre de la compañía y el período de tiempo en 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. Ejecuta 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 de 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. Ejecuta 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 del día, el precio más alto y más bajo de la acción del día, el precio de cierre ajustado y el volumen de la acción. Puedes ver que todas las columnas dependen de la fecha. El cambio en la columna Fecha causa 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, debemos cambiar el tipo de la columna Fecha de cadena a Fecha y hora y luego debemos establecer la columna 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 la 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 lo pasamos como parámetro a la columna "Fecha". El atributo inplace=Truesignifica que la conversión se llevará a cabo y no es necesario que almacene el resultado en otra variable.
Ahora, volvamos a imprimir las primeras cinco filas de nuestro conjunto de datos usando la head()función:
apple_data.head()  
La salida de la secuencia de comandos anterior se ve así:
Desde 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 está utilizando como una columna de índice.
Antes de pasar a la sección de cambio de tiempo, vamos a trazar el precio de cierre de las acciones de Apple. Ejecuta 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 con respecto a 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 de la secuencia de comandos anterior se ve así:
Los pandas pueden realizar una variedad de tareas de visualización en datos de series de tiempo, como el desplazamiento de tiempo, el muestreo de tiempo, la expansión de desplazamiento, las predicciones de series de tiempo. En este artículo, veremos dos aplicaciones de la visualización de series temporales de Pandas: Time Shifting y Time Samples.

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 cambio de series de tiempo es una de las tareas más importantes en el análisis de series de tiempo.
Anteriormente trazamos el encabezado del conjunto de datos, 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 hora.
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 desplazamiento en el tiempo en una dirección positiva. Para mover los datos un número específico de pasos de tiempo hacia adelante, simplemente debe 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 de la cabeza, ya que los datos de estas filas se moverán dos pasos adelante. En la salida, verá que los datos que pertenecían anteriormente 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 usar la shift()función de nuevo pero debe especificar un valor negativo. Por ejemplo, para cambiar los datos 2 pasos hacia atrás, puede usar 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 atrás, como se muestra a continuación:

Tiempo de muestreo

El muestreo de tiempo se refiere a agrupar características o atributos de datos en función del valor agregado de la columna de índice. Por ejemplo, si desea ver el precio total máximo de las acciones de apertura por año para todos los años en el conjunto de datos, puede utilizar 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 tienes que pasar el valor para el ruleatributo. El valor es básicamente el desplazamiento 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 meanmaxmin, etc. La siguiente secuencia de comandos muestra el valor máximo de las atributo para cada mes en el conjunto de datos:
apple_data.resample(rule='M').max()  
La salida de la secuencia de comandos 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 ha sido tomada de la documentación oficial de Pandas .
Ahora intentemos imprimir los valores promedio trimestrales (cada tres meses) para el conjunto de datos. Puede ver en la lista de desplazamiento que Qse utiliza para la frecuencia trimestral. Ejecuta el siguiente script:
apple_data.resample(rule='Q').mean()  
La salida de la secuencia de comandos anterior se ve así:
Además de encontrar los valores agregados para todas las columnas en el conjunto de datos. También puede remuestrear datos para una columna en particular. Vamos a trazar el gráfico de barras que muestra el valor medio anual para el atributo 'Cerrar' de nuestro conjunto de datos. Ejecuta el siguiente script:
plt.rcParams['figure.figsize'] = (7, 5)  
apple_data['Close'].resample('A').mean().plot(kind='bar')  
Puede ver que para trazar el gráfico de barras simplemente tiene que llamar a la plotfunción después de la función de agregado y pasarle el tipo de gráfico que desea trazar. La salida de la secuencia de comandos anterior se ve así:
De manera similar, para dibujar un gráfico de líneas que muestre el valor del precio de stock máximo mensual 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 de la secuencia de comandos 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 utiliza para importar, manipular y limpiar el conjunto de datos. Sin embargo, Pandas también se puede usar para la visualización de datos, como mostramos en este artículo.
En este artículo, vimos con la ayuda de diferentes ejemplos que se puede utilizar Pandas para trazar diagramas básicos. También estudiamos cómo se pueden usar 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, líneas o trazados de conteo, debe usar Pandas.