Visualización de datos con Python – Part 1

En el mundo actual, se generan muchos datos a diario. Y a veces, para analizar estos datos en busca de ciertas tendencias, los patrones pueden volverse difíciles si los datos están en su formato original. Para superar esta visualización de datos entra en juego. La visualización de datos proporciona una representación pictórica buena y organizada de los datos que facilita la comprensión, la observación y el análisis. En este tutorial, discutiremos cómo visualizar datos usando Python.

data visualization using python

Python proporciona varias bibliotecas que vienen con diferentes funciones para visualizar datos. Todas estas bibliotecas vienen con diferentes características y pueden admitir varios tipos de gráficos. En este tutorial, discutiremos cuatro bibliotecas de este tipo.

  • matplotlib
  • nacido en el mar
  • Bokeh
  • trama

Discutiremos estas bibliotecas una por una y trazaremos algunos de los gráficos más utilizados. 

Nota: Si desea obtener información detallada sobre estas bibliotecas, puede seguir su tutorial completo.

Antes de sumergirnos en estas bibliotecas, al principio, necesitaremos una base de datos para trazar los datos. Usaremos la base de datos de consejos para este tutorial completo. Vamos a discutir ver un breve acerca de esta base de datos.

Base de datos utilizada

Base de datos de consejos

La base de datos de propinas es el registro de la propina dada por los clientes en un restaurante durante dos meses y medio a principios de la década de 1990. Contiene 6 columnas como total_bill, propina, sexo, fumador, día, hora, tamaño.

Puede descargar la base de datos de consejos desde aquí .

Ejemplo:

Python3

import pandas as pd
 
 
# reading the database
data = pd.read_csv("tips.csv")
 
# printing the top 10 rows
display(data.head(10))

Producción:

tips dataset load pandas

matplotlib

Matplotlib es una biblioteca de visualización de datos de bajo nivel fácil de usar que se basa en arrays NumPy. Consiste en varios gráficos como diagrama de dispersión, diagrama de líneas, histograma, etc. Matplotlib proporciona mucha flexibilidad. 

Para instalar este tipo, escriba el siguiente comando en la terminal.

pip install matplotlib

install matplotlib

Consulte los artículos a continuación para obtener más información sobre la configuración de un entorno con Matplotlib.

Después de instalar Matplotlib, veamos los gráficos más utilizados con esta biblioteca.

Gráfico de dispersión

Los diagramas de dispersión se utilizan para observar las relaciones entre las variables y utilizan puntos para representar la relación entre ellas. El método scatter() en la biblioteca matplotlib se usa para dibujar un diagrama de dispersión.

Ejemplo:

Python3

import pandas as pd
import matplotlib.pyplot as plt
 
 
# reading the database
data = pd.read_csv("tips.csv")
 
# Scatter plot with day against tip
plt.scatter(data['day'], data['tip'])
 
# Adding Title to the Plot
plt.title("Scatter Plot")
 
# Setting the X and Y labels
plt.xlabel('Day')
plt.ylabel('Tip')
 
plt.show()

Producción:

scatter plot matplotlib

Este gráfico puede ser más significativo si podemos agregar colores y también cambiar el tamaño de los puntos. Podemos hacer esto usando los parámetros c y s respectivamente de la función de dispersión. También podemos mostrar la barra de colores usando el método colorbar() .

Ejemplo:

Python3

import pandas as pd
import matplotlib.pyplot as plt
 
 
# reading the database
data = pd.read_csv("tips.csv")
 
# Scatter plot with day against tip
plt.scatter(data['day'], data['tip'], c=data['size'],
            s=data['total_bill'])
 
# Adding Title to the Plot
plt.title("Scatter Plot")
 
# Setting the X and Y labels
plt.xlabel('Day')
plt.ylabel('Tip')
 
plt.colorbar()
 
plt.show()

Producción:

matplotlib scatter plot with colors

Gráfico de linea

El gráfico de líneas se utiliza para representar una relación entre dos datos X e Y en un eje diferente. Se grafica usando la función plot() . Veamos el siguiente ejemplo.

Ejemplo:

Python3

import pandas as pd
import matplotlib.pyplot as plt
 
 
# reading the database
data = pd.read_csv("tips.csv")
 
# Scatter plot with day against tip
plt.plot(data['tip'])
plt.plot(data['size'])
 
# Adding Title to the Plot
plt.title("Scatter Plot")
 
# Setting the X and Y labels
plt.xlabel('Day')
plt.ylabel('Tip')
 
plt.show()

Producción:

line chart matplotlib

Gráfico de barras

Un diagrama de barras o diagrama de barras es un gráfico que representa la categoría de datos con barras rectangulares con longitudes y alturas proporcionales a los valores que representan. Se puede crear usando el método bar() .

Ejemplo:

Python3

import pandas as pd
import matplotlib.pyplot as plt
 
 
# reading the database
data = pd.read_csv("tips.csv")
 
# Bar chart with day against tip
plt.bar(data['day'], data['tip'])
 
plt.title("Bar Chart")
 
# Setting the X and Y labels
plt.xlabel('Day')
plt.ylabel('Tip')
 
# Adding the legends
plt.show()

Producción:

Bar Chart Matplotlib

Histograma

Un histograma se usa básicamente para representar datos en forma de algunos grupos. Es un tipo de gráfico de barras en el que el eje X representa los rangos de contenedores, mientras que el eje Y brinda información sobre la frecuencia. La función hist() se utiliza para calcular y crear un histograma. En el histograma, si pasamos datos categóricos, calculará automáticamente la frecuencia de esos datos, es decir, con qué frecuencia se produjo cada valor.

Ejemplo:

Python3

import pandas as pd
import matplotlib.pyplot as plt
 
 
# reading the database
data = pd.read_csv("tips.csv")
 
# hostogram of total_bills
plt.hist(data['total_bill'])
 
plt.title("Histogram")
 
# Adding the legends
plt.show()

Producción:

matplotlib histogram

Nota: Para ver el tutorial completo de Matplotlib, consulte el tutorial de Matplotlib

nacido en el mar

Seaborn es una interfaz de alto nivel construida sobre Matplotlib. Proporciona hermosos estilos de diseño y paletas de colores para hacer gráficos más atractivos.

Para instalar seaborn, escriba el siguiente comando en la terminal.

pip install seaborn

seaborn tutorial install seaborn

Seaborn está construido sobre Matplotlib, por lo tanto, también se puede usar con Matplotlib. Usar tanto Matplotlib como Seaborn juntos es un proceso muy simple. Solo tenemos que invocar la función Seaborn Plotting normalmente y luego podemos usar la función de personalización de Matplotlib.

Nota: Seaborn viene cargado con un conjunto de datos como consejos, iris, etc. pero por el bien de este tutorial usaremos Pandas para cargar estos conjuntos de datos.

Ejemplo:

Python3

# importing packages
import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
 
 
# reading the database
data = pd.read_csv("tips.csv")
 
# draw lineplot
sns.lineplot(x="sex", y="total_bill", data=data)
 
# setting the title using Matplotlib
plt.title('Title using Matplotlib Function')
 
plt.show()

Producción:

seaborn with matplotlib

Gráfico de dispersión

El diagrama de dispersión se traza utilizando el método scatterplot() . Esto es similar a Matplotlib, pero se requieren datos de argumentos adicionales.

Ejemplo:

Python3

# importing packages
import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
 
# reading the database
data = pd.read_csv("tips.csv")
 
sns.scatterplot(x='day', y='tip', data=data,)
plt.show()

Producción:

seaborn scatter plot

Descubrirá que al usar Matplotlib será muy difícil si desea colorear cada punto de esta trama según el sexo. Pero en el diagrama de dispersión se puede hacer con la ayuda del argumento hue.

Ejemplo:

Python3

# importing packages
import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
 
# reading the database
data = pd.read_csv("tips.csv")
 
sns.scatterplot(x='day', y='tip', data=data,
               hue='sex')
plt.show()

Producción:

Gráfico de línea

Line Plot en Seaborn trazado utilizando el método lineplot() . En esto, también podemos pasar solo el argumento de datos.

Ejemplo:

Python3

# importing packages
import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
 
 
# reading the database
data = pd.read_csv("tips.csv")
 
sns.lineplot(x='day', y='tip', data=data)
plt.show()

Producción:

line plot seaborn

Ejemplo 2:

Python3

# importing packages
import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
 
 
# reading the database
data = pd.read_csv("tips.csv")
 
# using only data attribute
sns.lineplot(data=data.drop(['total_bill'], axis=1))
plt.show()

Producción:

line chart with color seaborn

Parcela de barra

Bar Plot en Seaborn se puede crear utilizando el método barplot() .

Ejemplo:

Python3

# importing packages
import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
 
 
# reading the database
data = pd.read_csv("tips.csv")
 
sns.barplot(x='day',y='tip', data=data,
            hue='sex')
 
plt.show()

Producción:

seaborn bar plot

Histograma

El histograma en Seaborn se puede trazar utilizando la función histplot() .

Ejemplo:

Python3

# importing packages
import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
 
 
# reading the database
data = pd.read_csv("tips.csv")
 
sns.histplot(x='total_bill', data=data, kde=True, hue='sex')
 
plt.show()

Producción:

histogram seaborn

Después de revisar todos estos gráficos, debe haber notado que personalizar gráficos con Seaborn es mucho más fácil que con Matplotlib. Y también está construido sobre matplotlib, entonces también podemos usar las funciones de matplotlib mientras usamos Seaborn.

Nota: Para ver el Tutorial de Seaborn completo, consulte el Tutorial de Python Seaborn

Bokeh

Pasemos a la tercera biblioteca de nuestra lista. Bokeh es principalmente famoso por su visualización de gráficos interactivos. Bokeh representa sus tramas utilizando HTML y JavaScript que utilizan navegadores web modernos para presentar una construcción elegante y concisa de gráficos novedosos con interactividad de alto nivel. 

Para instalar este tipo, escriba el siguiente comando en la terminal.

pip install bokeh

bokeh installation

Gráfico de dispersión

Scatter Plot en Bokeh se puede trazar usando el método scatter() del módulo de trazado. Aquí pase las coordenadas x e y respectivamente.

Ejemplo:

Python3

# importing the modules
from bokeh.plotting import figure, output_file, show
from bokeh.palettes import magma
import pandas as pd
 
 
# instantiating the figure object
graph = figure(title = "Bokeh Scatter Graph")
 
# reading the database
data = pd.read_csv("tips.csv")
 
color = magma(256)
 
# plotting the graph
graph.scatter(data['total_bill'], data['tip'], color=color)
 
# displaying the model
show(graph)

Producción:

bokeh scatter plot

Gráfico de linea

 Se puede crear un diagrama de líneas utilizando el método line() del módulo de trazado.

Ejemplo:

Python3

# importing the modules
from bokeh.plotting import figure, output_file, show
import pandas as pd
 
 
# instantiating the figure object
graph = figure(title = "Bokeh Bar Chart")
 
# reading the database
data = pd.read_csv("tips.csv")
 
# Count of each unique value of
# tip column
df = data['tip'].value_counts()
 
# plotting the graph
graph.line(df, data['tip'])
 
# displaying the model
show(graph)

Producción:

bokeh line plot

Gráfico de barras

El gráfico de barras puede ser de dos tipos, barras horizontales y barras verticales. Cada uno se puede crear utilizando las funciones hbar() y vbar() de la interfaz de trazado, respectivamente.

Ejemplo:

Python3

# importing the modules
from bokeh.plotting import figure, output_file, show
import pandas as pd
 
 
# instantiating the figure object
graph = figure(title = "Bokeh Bar Chart")
 
# reading the database
data = pd.read_csv("tips.csv")
 
# plotting the graph
graph.vbar(data['total_bill'], top=data['tip'])
 
# displaying the model
show(graph)

Producción:

bokeh bar chart

Visualización interactiva de datos

Una de las características clave de Bokeh es agregar interacción a las tramas. Veamos varias interacciones que se pueden agregar.

Leyendas interactivas

La propiedad click_policy hace que la leyenda sea interactiva. Hay dos tipos de interactividad:

  • Ocultar: Oculta los Glifos.
  • Silenciar: Ocultar el glifo hace que desaparezca por completo, por otro lado, silenciar el glifo simplemente quita énfasis al glifo en función de los parámetros.

Ejemplo:

Python3

# importing the modules
from bokeh.plotting import figure, output_file, show
import pandas as pd
 
 
# instantiating the figure object
graph = figure(title = "Bokeh Bar Chart")
 
# reading the database
data = pd.read_csv("tips.csv")
 
# plotting the graph
graph.vbar(data['total_bill'], top=data['tip'],
           legend_label = "Bill VS Tips", color='green')
 
graph.vbar(data['tip'], top=data['size'],
           legend_label = "Tips VS Size", color='red')
 
graph.legend.click_policy = "hide"
 
# displaying the model
show(graph)

Producción:

interactive legends bokeh

Adición de widgets

Bokeh proporciona características de GUI similares a los formularios HTML como botones, controles deslizantes, casillas de verificación, etc. Estos proporcionan una interfaz interactiva para el gráfico que permite cambiar los parámetros del gráfico, modificar los datos del gráfico, etc. Veamos cómo usar y agregar algunos de uso común. widgets 

  • Botones: este widget agrega un widget de botón simple al gráfico. Tenemos que pasar una función de JavaScript personalizada al método CustomJS() de la clase de modelos.
  • CheckboxGroup: agrega una casilla de verificación estándar al gráfico. De manera similar a los botones, tenemos que pasar la función JavaScript personalizada al método CustomJS() de la clase de modelos.
  • RadioGroup: agrega un botón de radio simple y acepta una función de JavaScript personalizada.

Ejemplo:

Python3

from bokeh.io import show
from bokeh.models import Button, CheckboxGroup, RadioGroup, CustomJS
 
button = Button(label="GFG")
 
button.js_on_click(CustomJS(
    code="console.log('button: click!', this.toString())"))
 
# Labels for checkbox and radio
# buttons
L = ["First", "Second", "Third"]
 
# the active parameter sets checks the selected value
# by default
checkbox_group = CheckboxGroup(labels=L, active=[0, 2])
 
checkbox_group.js_on_click(CustomJS(code="""
    console.log('checkbox_group: active=' + this.active, this.toString())
"""))
 
# the active parameter sets checks the selected value
# by default
radio_group = RadioGroup(labels=L, active=1)
 
radio_group.js_on_click(CustomJS(code="""
    console.log('radio_group: active=' + this.active, this.toString())
"""))
 
show(button)
show(checkbox_group)
show(radio_group)

Producción:

bokeh tutorial buttonBokeh tutorial check boxBokeh Tutorial radio button

Nota: Todos estos botones se abrirán en una nueva pestaña.

  • Controles deslizantes: agrega un control deslizante al gráfico. También necesita una función JavaScript personalizada.

Ejemplo:

Python3

from bokeh.io import show
from bokeh.models import CustomJS, Slider
 
slider = Slider(start=1, end=20, value=1, step=2, title="Slider")
 
slider.js_on_change("value", CustomJS(code="""
    console.log('slider: value=' + this.value, this.toString())
"""))
 
show(slider)

Producción:

bokeh tutorial slider

Del mismo modo, hay muchos más widgets disponibles, como un menú desplegable o pestañas, se pueden agregar widgets.

Nota: Para ver el tutorial completo de Bokeh, consulte el tutorial de Python Bokeh: visualización interactiva de datos con Bokeh

trama

Esta es la última biblioteca de nuestra lista y es posible que se pregunte por qué. Este es el por qué –

  • Plotly tiene capacidades de herramientas flotantes que nos permiten detectar cualquier valor atípico o anomalía en numerosos puntos de datos.
  • Permite una mayor personalización.
  • Hace que el gráfico sea visualmente más atractivo.

Para instalarlo, escriba el siguiente comando en la terminal.

pip install plotly

plotly installation

Gráfico de dispersión

El diagrama de dispersión en Plotly se puede crear usando el método scatter() de plotly.express. Al igual que Seaborn, aquí también se requiere un argumento de datos adicional.

Ejemplo:

Python3

import plotly.express as px
import pandas as pd
 
# reading the database
data = pd.read_csv("tips.csv")
 
# plotting the scatter chart
fig = px.scatter(data, x="day", y="tip", color='sex')
 
# showing the plot
fig.show()

Producción:

scatter plot plotly

Gráfico de linea

El diagrama de líneas en Plotly es una anexión muy accesible e ilustre a plotly que administra una variedad de tipos de datos y ensambla estadísticas fáciles de diseñar. Con px.line cada posición de datos se representa como un vértice

Ejemplo:

Python3

import plotly.express as px
import pandas as pd
 
# reading the database
data = pd.read_csv("tips.csv")
 
# plotting the scatter chart
fig = px.line(data, y='tip', color='sex')
 
# showing the plot
fig.show()

Producción:

Line Chart Plotly

Gráfico de barras

El gráfico de barras en Plotly se puede crear usando el método bar() de la clase plotly.express.

Ejemplo:

Python3

import plotly.express as px
import pandas as pd
 
# reading the database
data = pd.read_csv("tips.csv")
 
# plotting the scatter chart
fig = px.bar(data, x='day', y='tip', color='sex')
 
# showing the plot
fig.show()

Producción:

bar plotl plotly

Histograma

En plotly, los histogramas se pueden crear usando la función histogram() de la clase plotly.express.

Ejemplo:

Python3

import plotly.express as px
import pandas as pd
 
# reading the database
data = pd.read_csv("tips.csv")
 
# plotting the scatter chart
fig = px.histogram(data, x='total_bill', color='sex')
 
# showing the plot
fig.show()

Producción:

histogram plotly

Añadir interacción

Al igual que Bokeh, plotly también proporciona varias interacciones. Analicemos algunos de ellos.

Creación de un menú desplegable : un menú desplegable es una parte del botón de menú que se muestra en una pantalla todo el tiempo. Cada botón de menú está asociado con un widget de menú que puede mostrar las opciones para ese botón de menú cuando se hace clic en él. En plotly, hay 4 métodos posibles para modificar los gráficos usando el método updatemenu.

  • restyle: modificar datos o atributos de datos
  • relayout: modificar los atributos de diseño
  • actualizar: modificar datos y atributos de diseño
  • animar: iniciar o pausar una animación

Ejemplo:

Python3

import plotly.graph_objects as px
import pandas as pd
 
# reading the database
data = pd.read_csv("tips.csv")
 
 
plot = px.Figure(data=[px.Scatter(
    x=data['day'],
    y=data['tip'],
    mode='markers',)
])
 
# Add dropdown
plot.update_layout(
    updatemenus=[
        dict(
            buttons=list([
                dict(
                    args=["type", "scatter"],
                    label="Scatter Plot",
                    method="restyle"
                ),
                dict(
                    args=["type", "bar"],
                    label="Bar Chart",
                    method="restyle"
                )
            ]),
            direction="down",
        ),
    ]
)
 
plot.show()

Producción:

drop down plotly

Agregar botones : en plotly, los botones personalizados de acciones se utilizan para realizar acciones rápidamente directamente desde un registro. Los botones personalizados se pueden agregar a los diseños de página en CRM, marketing y aplicaciones personalizadas. También hay 4 métodos posibles que se pueden aplicar en los botones personalizados:

  • restyle: modificar datos o atributos de datos
  • relayout: modificar los atributos de diseño
  • actualizar: modificar datos y atributos de diseño
  • animar: iniciar o pausar una animación

Ejemplo:

Python3

import plotly.graph_objects as px
import pandas as pd
 
# reading the database
data = pd.read_csv("tips.csv")
 
 
plot = px.Figure(data=[px.Scatter(
    x=data['day'],
    y=data['tip'],
    mode='markers',)
])
 
# Add dropdown
plot.update_layout(
    updatemenus=[
        dict(
            type="buttons",
            direction="left",
            buttons=list([
                dict(
                    args=["type", "scatter"],
                    label="Scatter Plot",
                    method="restyle"
                ),
                dict(
                    args=["type", "bar"],
                    label="Bar Chart",
                    method="restyle"
                )
            ]),
        ),
    ]
)
 
plot.show()

Producción:

button plotly

Creación de controles deslizantes y selectores:

En plotly, el control deslizante de rango es un control de entrada de tipo de rango personalizado. Permite seleccionar un valor o un rango de valores entre un rango mínimo y máximo especificado. Y el selector de rango es una herramienta para seleccionar rangos para mostrar dentro del gráfico. Proporciona botones para seleccionar rangos preconfigurados en el gráfico. También proporciona cuadros de entrada donde las fechas mínimas y máximas se pueden ingresar manualmente

Ejemplo:

Python3

import plotly.graph_objects as px
import pandas as pd
 
# reading the database
data = pd.read_csv("tips.csv")
 
plot = px.Figure(data=[px.Scatter(
    y=data['tip'],
    mode='lines',)
])
 
plot.update_layout(
    xaxis=dict(
        rangeselector=dict(
            buttons=list([
                dict(count=1,
                    step="day",
                    stepmode="backward"),
            ])
        ),
        rangeslider=dict(
            visible=True
        ),
    )
)
 
plot.show()

Producción:

slider plotly

Nota: Para ver el tutorial completo de Plotly, consulte el tutorial de Python Plotly

Conclusión

En este tutorial, hemos trazado el conjunto de datos de sugerencias con la ayuda de los cuatro módulos de trazado diferentes de Python, a saber, Matplotlib, Seaborn, Bokeh y Plotly. Cada módulo mostró la trama de una manera única y cada uno tiene su propio conjunto de características, como Matplotlib proporciona más flexibilidad, pero a costa de escribir más código, mientras que Seaborn, que es un lenguaje de alto nivel, permite lograr el mismo objetivo con un pequeña cantidad de código. Cada módulo se puede utilizar en función de la tarea que queramos realizar.

Publicación traducida automáticamente

Artículo escrito por nikhilaggarwal3 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *