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.
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:
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
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:
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:
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:
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:
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:
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 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:
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:
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:
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:
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:
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:
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
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:
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:
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:
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:
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:
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:
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
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:
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:
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:
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:
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:
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:
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:
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