Upset Chart (gráfico das bolinhas) em Python
Tutorial rápido de como fazer um Upset Chart em python galera.
Basicamente, esse tipo de gráfico nos mostra de maneira simples as interações mais presentes entre determinadas categorias de um dataset.
Precisaremos da biblioteca 'upsetplot':
!pip install upsetplot
Importação de bibliotecas:
import pandas as pd
import matplotlib.pyplot as pltfrom upsetplot import plot
Criação de um dataset fake com os dados de 10 clientes referentes a 5 produtos que eles compraram em um supermercado:
produto_a = [0, 1, 0, 0, 1, 1, 1, 1, 1, 1]
produto_b = [1, 0, 1, 1, 0, 0, 0, 0, 0, 0]
produto_c = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
produto_d = [0, 1, 1, 1, 1, 1, 1, 1, 1, 1]
produto_e = [1, 0, 0, 0, 1, 0, 0, 1, 0, 1]dataset = pd.DataFrame({‘a’: produto_a,
‘b’: produto_b,
‘c’: produto_c,
‘d’: produto_d,
‘e’: produto_e})dataset
Ou seja, o cliente da linha 0, por exemplo, comprou os produtos b, c, e.
Para utilização da função que gera o Upset Chart, necessitamos do formato True/False:
for i in dataset.columns:
dataset[i] = dataset[i].map(lambda x: True if x == 1 else False)
dataset
Para realizar a contagem das interações existentes, podemos utilizar a famosa função value_counts():
d = dataset.value_counts()
d
Por fim plotamos o desejado gráfico:
plot(d, sort_by=’cardinality’)
plt.show()
Podemos visualizá-lo na posição vertical também:
plot(d, sort_by=’cardinality’, orientation=’vertical’)
plt.show()
Acrescentando a contagem em cima das barras:
plot(d, sort_by=’cardinality’, show_counts=’%d’)
plt.show()
Essa volumetria também pode ser vista em termos de porcentagem:
plot(d, sort_by=’cardinality’, show_percentages=True)
plt.show()