cómo hacer un diagrama de Venn con Python

Hay veces que en la escuela o en nuestro trabajo necesitamos hacer análisis con diagramas de Venn . 

Estos diagramas son muy utilizados en la parte de estadística y en la programación. El uso mas práctico en la programación es cuando generamos consultas en una base de datos y queremos obtener datos de varias tablas al mismo tiempo, en ocasiones queremos todos los datos que se unen en las tablas, hay veces que queremos saber los datos que no se unen entre las dos tablas y para poder representar esto de manera mas fácil utilizamos los diagramas de Venn.
Vamos a representar un ejemplo con 2 tablas en una base de datos, una tabla es estudiantes y otra son materias




Lo que une a estás 3  entidades es un que todos están en una clase por ejemplo hay 1 profesor da la materia matemáticas a 10 alumnos este enunciado representa la unión y en la imagen en el centro de los 3 círculos y la podemos describir como una Clase. La unión entre Estudiantes y Materias podría ser un Kardex, Calificaciones . La intersección entre Profesor y Estudiante, puede ser una lista de asistencia. La unión entre Profesor y Materia puede ser un contrato de clases por ciclo escolar. 

Es decir podemos representar o analizar datos de manera gráfica y ayudar a presentar la información de manera más amigable. 

Esta representación también nos sirve para Datascience donde podemos encontrar relación entre ciertas variables. Por ejemplo identificar a la persona para cubrir un puesto en base a todas sus aptitudes o en una análisis de venta identificar cual es nuestro nicho de mercado para cierto producto. 

En el caso de bases de datos, el tener claro esta relación nos puede ayudar a construir nuestro modelo entidad relación y también saber como vamos a generar nuestras consultas a la base de datos.

Diagramas de Venn con Python


Para poder crear estos diagramas en Python vamos a utilizar la librería matplotlib_venn https://pypi.org/project/matplotlib-venn/.



Primero hay que instalarla, recuerden ir al folder donde instalaron Python y desde una linea de comandos ejecutar pip install matplotlib_venn , o desde Jupyter en su notebook pueden hacerlo.

Vamos hacer el diagrama de Venn de 3 Dataset cada uno va a representar una materia y vamos a tener 3 columnas : Calificación, Genero, ID del estudiante

Primer data set df_A
Dataset df_B


Dataset df_C


Diagrama de Venn con 2 Dataset


Primero vamos hacer el ejemplo con la unión de 2 materias utilizando el df_A y df_B
El diagrama nos dice que entre las 2 materias solo hay en común un alumno. Les comparto el programa

import pandas as pd

import numpy as np

Math_A = pd.Series([76.2,58.4,67.6,56.2,61.4],index=['s1','s2','s3','s4','s5'])
Idiom_A = pd.Series([85.1,90.2,76.8,80.4,78.9],index=['s1','s2','s3','s4','s5'])
data = {'Student_Math': Math_A}
df_A = pd.DataFrame(data)
df_A['Gender'] = ['M','F','M','M','F']
df_A['ID'] = ['1','5','9','20','13']
print(df_A)
data = {'Student_Idiom': Idiom_A}
df_B = pd.DataFrame(data)
df_B['Gender'] = ['M','F','M','M','F']
df_B['ID'] = ['3','7','20','5','12']
print(df_B)
np.random.seed(100)
Chemestry_B = pd.Series(np.random.normal(75.0,12,5),index=['s1','s2','s3','s4','s5'],name = 'Student_Chemestry')

df_C =  pd.concat([Chemestry_B], axis=1)
df_C['Gender'] = ['F','F','F','M','M']
df_C['ID'] = ['4','10','15','2','13']
print(df_B)
from matplotlib_venn import venn3,venn2
from matplotlib import pyplot as plt
plt.figure(figsize=(4,4))
set1 = set(df_A['ID'])
set2 = set(df_B['ID'])


venn2([set1, set2], ('Math', 'Idiom'))
plt.show()

Ahora vamos hacer el diagrama de Venn con 3 materias



El diagrama nos dice que entre el Grupo 1 y 2, tienen un alumno en común, y entre el grupo 3 y grupo 1 hay 2 alumnos en común.
 
Les comparto un video de como se ve la ejecución del programa


Diagramas de Venn con Offices en Word o Power Point


Y si solo necesitas presentar la información de ciertos datos puedes hacer la imagen con las paqueterías de Office o de Google Suite.
Para Word, solo debes buscar en la barra el Menu Insert o Insertar y el icono de SmartArt

Después seleccionar en la sección de Relacion o Relations y ahí encontraras 4 formatos del diagrama de Venn


Y después puedes personalizar tu diagrama, seleccionando diferentes colores y colocando el texto para identificar tus categorías. 

Con Power Point son los mismos pasos Insert - SmartArt - Venn




Espero les sea de utilidad este post y nos compartan. A mi en lo personal me gusto mucho este post, porque fue mi primera vez utilizando esta librería, creo que tiene muchos usos.

Les comparto algunas otras ligas de temas de Python en este blog



Comentarios

Entradas más populares de este blog

Ejemplo Macro en Word

Macro de Excel para abrir archivo csv

Graficar funciones en Python con dataframes