Visualização de dados em Python | Visualização de dados para iniciantes

Conteúdo

Este artigo foi publicado como parte do Data Science Blogathon.

Introdução

A visualização de dados em Python é talvez um dos recursos mais usados ​​para ciência de dados com Python atualmente.. As bibliotecas Python vêm com muitos recursos diferentes que permitem aos usuários criar gráficos altamente personalizados., elegante e interativo.

Neste artigo, vamos cobrir o uso do Matplotlib, Seaborn, bem como uma introdução a outros pacotes alternativos que podem ser usados ​​na visualização do Python.

Dentro do Matplotlib e Seaborn, abordaremos alguns dos gráficos mais usados ​​no mundo da ciência de dados para facilitar a visualização.

Mais adiante no artigo, veremos outro recurso poderoso nas visualizações do Python, a subtrama, e cobrimos um tutorial básico para criar subtramas.

Pacotes úteis para visualização em python

Matplotlib

Matplotlib é uma biblioteca de visualização Python para plotagem 2D de matrizes.. Matplotlib é escrito em Python e faz uso da biblioteca NumPy.. Pode ser usado em shells Python e IPython, Laptops Jupyter e servidores de aplicativos da web. Matplotlib vem com uma grande variedade de gráficos como linha, barra, dispersão, histograma, etc. que podem nos ajudar a aprofundar nossa compreensão das tendências, padrões e correlações. Foi introduzido por John Hunter em 2002.

Seaborn

Seaborn é uma biblioteca orientada a conjuntos de dados para realizar representações estatísticas em Python.. É desenvolvido em cima do matplotlib e para criar diferentes visualizações. É integrado com estruturas de dados pandas. A biblioteca realiza internamente o mapeamento e a agregação necessários para criar visuais informativos. Recomenda-se usar uma interface Jupyter / IPython e modo matplotlib.

Bokeh

Bokeh é uma biblioteca de visualização interativa para navegadores modernos.. É adequado para ativos de dados grandes ou de streaming e pode ser usado para desenvolver gráficos e painéis interativos.. Há uma ampla variedade de gráficos intuitivos na biblioteca que podem ser aproveitados para desenvolver soluções. Trabalhe em estreita colaboração com as ferramentas PyData. A biblioteca é adequada para criar imagens personalizadas de acordo com os casos de uso necessários. As imagens também podem ser interativas para servir como modelo de cenário hipotético. Todos os códigos são de código aberto e estão disponíveis no GitHub.

Altair

Altair é uma biblioteca de visualização estatística declarativa para Python. A API do Altair é fácil de usar e consistente, e é construído na especificação Vega-Lite JSON. A biblioteca declarativa afirma que ao criar qualquer, precisamos definir os links entre as colunas de dados e os canais (eje x, Eixo y, Tamanho, cor). Com a ajuda de Altair, é possível criar imagens informativas com o mínimo de código. O Altair possui uma gramática declarativa para exibição e interação.

tramadamente

plotly.py é uma biblioteca de visualização interativa, Código aberto, alto nível, declarativo e baseado em navegador para Python. Contém uma variedade de visualizações úteis, incluindo gráficos científicos, Gráficos 3D, gráficos estatísticos, gráficos financeiros, entre outros. Gráficos de plotagem podem ser visualizados em notebooks Jupyter, Arquivos HTML autônomos ou hospedados online. A biblioteca Plotly oferece opções para interação e edição. API robusta funciona perfeitamente no modo de navegador local e web.

ggplot

ggplot é uma implementação Python da gramática do grafo. A gramática dos gráficos está preocupada em mapear dados para atributos estéticos (cor, forma, Tamanho) e objetos geométricos (pontos, linhas, barras). Os blocos de construção básicos de acordo com a gramática dos gráficos são dados, geometria (objetos geométricos), Estatisticas (transformações estatísticas), escala, sistema de coordenadas e faceta.

Usar ggplot em Python permite que você crie visualizações informativas de forma incremental, primeiro entendendo as nuances dos dados e depois ajustando os componentes para melhorar as representações visuais.

Como usar a visualização correta?

Para extrair as informações necessárias dos diferentes elementos visuais que criamos, é essencial que usemos a representação correta com base no tipo de dados e nas perguntas que estamos tentando entender. A seguir, discutiremos um conjunto de representações mais usadas e como podemos usá-las de maneira mais eficaz.

Gráfico de barras

uma gráfico de barras é usado quando queremos comparar valores de métrica em diferentes subgrupos de dados. Se tivermos um número maior de grupos, Um gráfico de barras é preferível a um gráfico de colunas.

Gráfico de barras usando Matplotlib

#Creating the dataset
df = sns.load_dataset('titanic') 
df=df.groupby('quem')['fare'].soma().to_frame().reset_index()

#Creating the bar chart 
plt.barh(df['quem'],df['fare'],color = ['#F0F8FF','#E6E6FA','#B0E0E6']) 

#Adding the aesthetics
plt.title('Chart title')
plt.xlabel('X axis title')
plt.ylabel('Y axis title') 

#Show the plot
plt.show()
97793column_chart-6000587

Gráfico de barras com Seaborn

#Creating bar plot
sns.barplot(x = 'fare',y = 'who',dados = titanic_dataset,paleta = "Blues")
#Adding the aesthetics
plt.title('Chart title')
plt.xlabel('X axis title')
plt.ylabel('Y axis title') 
# Show the plot
plt.show()
40682sns_bar-1890297

Gráfico de colunas

Os gráficos de colunas são usados principalmente quando precisamos comparar uma única categoria de dados entre subelementos individuais, por exemplo, ao comparar a renda entre regiões.

Gráfico de colunas usando Matplotlib

#Creating the dataset
df = sns.load_dataset('titanic') 
df=df.groupby('quem')['fare'].soma().to_frame().reset_index()
#Creating the column plot 
plt.bar(df['quem'],df['fare'],color = ['#F0F8FF','#E6E6FA','#B0E0E6']) 
#Adding the aesthetics
plt.title('Chart title')
plt.xlabel('X axis title')
plt.ylabel('Y axis title') 
#Show the plot
plt.show()
93665bar_chart-1157118

Gráfico de colunas com Seaborn

#Reading the dataset
titanic_dataset = sns.load_dataset('titanic')
#Creating column chart
sns.barplot(x = 'who',y = 'fare',dados = titanic_dataset,paleta = "Blues")
#Adding the aesthetics
plt.title('Chart title')
plt.xlabel('X axis title')
plt.ylabel('Y axis title') 
# Show the plot
plt.show()
50113sns_column-9417958

Gráfico de barras agrupado

Um gráfico de barras agrupado é usado quando queremos comparar os valores em determinados grupos e subgrupos.

Gráfico de barras agrupado usando Matplotlib

#Creating the dataset
df = sns.load_dataset('titanic')
df_pivot = pd.pivot_table(df, valores ="Tarifa",índice ="Who",colunas ="classe", aggfunc = np.mean)
#Creating a grouped bar chart
ax = df_pivot.plot(kind ="barra",alfa = 0,5)
#Adding the aesthetics
plt.title('Chart title')
plt.xlabel('X axis title')
plt.ylabel('Y axis title') 
# Show the plot
plt.show()
59991grouped_barchart-7175858

Gráfico de barras agrupado com Seaborn

#Reading the dataset
titanic_dataset = sns.load_dataset('titanic')
#Creating the bar plot grouped across classes
sns.barplot(x = 'who',y = 'fare',matiz ="classe",dados = titanic_dataset, paleta = "Blues")
#Adding the aesthetics
plt.title('Chart title')
plt.xlabel('X axis title')
plt.ylabel('Y axis title') 
# Show the plot
plt.show()
39022sns_grouped_bar-8239109

Gráfico de barras empilhadas

Um gráfico de barras empilhadas é usado quando queremos comparar os tamanhos totais dos grupos disponíveis e a composição dos diferentes subgrupos.

Gráfico de barras empilhadas usando Matplotlib

# Stacked bar chart 
#Creating the dataset
df = pd.DataFrame(colunas =["UMA","B", "C","D"], 
                  dados=[["E",0,1,1],
                        ["F",1,1,0],
                        ["G",0,1,0]])

df.plot.bar(x='A', y =["B", "C","D"],  empilhado=Verdadeiro,  largura = 0,4, alfa = 0,5) 

#Adding the aesthetics
plt.title('Chart title')
plt.xlabel('X axis title')
plt.ylabel('Y axis title')  

#Show the plot
plt.show()
14707stacked_barchart-2349555

Gráfico de barras empilhadas com Seaborn

dataframe = pd.DataFrame(colunas =["UMA","B", "C","D"], 
                  dados=[["E",0,1,1],
                        ["F",1,1,0],
                        ["G",0,1,0]])
dataframe.set_index('UMA').T.plot(kind = 'bar', empilhado=Verdadeiro)
#Adding the aesthetics
plt.title('Chart title')
plt.xlabel('X axis title')
plt.ylabel('Y axis title') 
# Show the plot
plt.show()
75738sns_stacked_bar-5107534

Gráfico de linha

Um gráfico de linha para representação contínua de pontos de dados. Esse visual pode ser usado de forma eficaz quando queremos entender a tendência ao longo do tempo.

Gráfico de linhas usando Matplotlib

#Creating the dataset
df = sns.load_dataset("íris") 
df=df.groupby('sepal_length')['sepal_width'].soma().to_frame().reset_index()
#Creating the line chart
plt.plot(df['sepal_length'], df['sepal_width']) 
#Adding the aesthetics
plt.title('Chart title')
plt.xlabel('X axis title')
plt.ylabel('Y axis title') 
#Show the plot
plt.show()
61843line_chart-4277786

Gráfico de linhas com Seaborn

#Creating the dataset
cars = ['AUDI', 'BMW', 'NISSAN', 
        'TESLA', 'HYUNDAI', 'HONDA'] 
dados = [20, 15, 15, 14, 16, 20] 
#Creating the pie chart
plt.pie(dados, rótulos = carros,cores = ['#F0F8FF','#E6E6FA','#B0E0E6','#7B68EE','#483D8B'])
#Adding the aesthetics
plt.title('Chart title')
#Show the plot
plt.show()

Gráfico de pizza

Os gráficos de pizza podem ser usados para identificar proporções dos diferentes componentes em um determinado todo.

Gráfico de pizza com Matplotlib

#Creating the dataset
cars = ['AUDI', 'BMW', 'NISSAN', 
        'TESLA', 'HYUNDAI', 'HONDA'] 
dados = [20, 15, 15, 14, 16, 20] 
#Creating the pie chart
plt.pie(dados, rótulos = carros,cores = ['#F0F8FF','#E6E6FA','#B0E0E6','#7B68EE','#483D8B'])
#Adding the aesthetics
plt.title('Chart title')
#Show the plot
plt.show()
74956pie_chart-9414979

Gráfico de área

Os gráficos de área são usados para rastrear alterações ao longo do tempo para um ou mais grupos. Os gráficos de área são preferenciais aos gráficos de linhas quando queremos capturar alterações ao longo do tempo para mais de um grupo.

Gráfico de área usando Matplotlib

#Reading the dataset
x=range(1,6)
y =[ [1,4,6,8,9], [2,2,7,10,12], [2,8,5,10,6] ]
#Creating the area chart 
ax = plt.gca()
ax.stackplot(x, e, rótulos =['UMA','B','C'],alfa = 0,5)
#Adding the aesthetics
plt.legend(loc ="superior esquerdo")
plt.title('Chart title')
plt.xlabel('X axis title')
plt.ylabel('Y axis title') 
#Show the plot
plt.show()
79837area_chart-9949329

Gráfico de área usando Seaborn

# Data
years_of_experience =[1,2,3]
salário=[ [6,8,10], [4,5,9], [3,5,7] ]
# Plot
plt.stackplot(years_of_experience,salário, rótulos =['Company A','Company B','Company C'])
plt.legend(loc ="superior esquerdo")
#Adding the aesthetics
plt.title('Chart title')
plt.xlabel('X axis title')
plt.ylabel('Y axis title') 
# Show the plot
plt.show()
78850sns_area-9297311

Histograma de columna

o histogramas de columna se utilizan para observar la distribución de una sola variável con pocos puntos de datos.

Gráfico de colunas usando Matplotlib

#Creating the dataset
penguins = sns.load_dataset("Pinguins")
#Creating the column histogram
ax = plt.gca()
ax.hist(Pinguins['flipper_length_mm'], color ="azul",alfa = 0,5, compartimentos = 10)
#Adding the aesthetics
plt.title('Chart title')
plt.xlabel('X axis title')
plt.ylabel('Y axis title') 
#Show the plot
plt.show()
45254column_histogram-7683163

Gráfico de colunas com Seaborn

#Reading the dataset
penguins_dataframe = sns.load_dataset("Pinguins")
#Plotting bar histogram
sns.distplot(penguins_dataframe['flipper_length_mm'], kde = False, color ="azul", compartimentos = 10)
#Adding the aesthetics
plt.title('Chart title')
plt.xlabel('X axis title')
plt.ylabel('Y axis title') 
# Show the plot
plt.show()
59814sns_hist-5059359

Histograma de línea

Los histogramas de línea se utilizan para observar la distribución de una sola variable con muchos puntos de datos.

Gráfico de histograma de líneas usando Matplotlib

#Creating the dataset
df_1 = np.random.normal(0, 1, (1000, ))
densidade = stats.gaussian_kde(df_1)
#Creating the line histogram
n, x, _ = plt.hist(df_1, bins=np.linspace(-3, 3, 50), histtype=u'step', densidade=Verdadeiro)  
plt.plot(x, Densidade(x))
#Adding the aesthetics
plt.title('Chart title')
plt.xlabel('X axis title')
plt.ylabel('Y axis title') 
#Show the plot
plt.show()
87767line_histogram-5794072

Gráfico de histograma de linha com Seaborn

#Reading the dataset
penguins_dataframe = sns.load_dataset("Pinguins")
#Plotting line histogram
sns.distplot(penguins_dataframe['flipper_length_mm'], hist = Falso, kde = verdadeiro, rótulo ="África")
#Adding the aesthetics
plt.title('Chart title')
plt.xlabel('X axis title')
plt.ylabel('Y axis title') 
# Show the plot
plt.show()
21681sns_line_hist-4694660

Gráfico de dispersão

Os gráficos de dispersão podem ser aproveitados para identificar relações entre duas variáveis. Ele pode ser usado efetivamente em circunstâncias em que a variável dependente pode ter vários valores para a variável independente.

Gráfico de dispersão usando Matplotlib

#Creating the dataset
df = sns.load_dataset("Dicas")
#Creating the scatter plot
plt.scatter(df['total_bill'],df['tip'],alfa = 0,5 )
#Adding the aesthetics
plt.title('Chart title')
plt.xlabel('X axis title')
plt.ylabel('Y axis title') 
#Show the plot
plt.show()
21902scatter_chart-6141009

Diagrama de dispersão usando Seaborn

#Reading the dataset
bill_dataframe = sns.load_dataset("Dicas")
#Creating scatter plot
sns.scatterplot(dados = bill_dataframe, x ="total_bill", y ="Ponta")
#Adding the aesthetics
plt.title('Chart title')
plt.xlabel('X axis title')
plt.ylabel('Y axis title') 
# Show the plot
plt.show()
59571sns_scatter-7309865

Gráfico de bolhas

Os gráficos de dispersão podem ser aproveitados para representar e exibir relações entre três variáveis.

Gráfico de bolhas com Matplotlib

#Creating the dataset
np.random.seed(42)
N = 100
x = np.random.normal(170, 20, N)
y = x + np.random.normal(5, 25, N)
cores = np.random.rand(N)
área = (25 * np.random.rand(N))**2
df = pd.DataFrame({
    'X': x,
    'Y': e,
    'Colors': cores,
    "bubble_size":área})
#Creating the bubble chart
plt.scatter('X', 'Y', s="bubble_size",alfa = 0,5, data = df)
#Adding the aesthetics
plt.title('Chart title')
plt.xlabel('X axis title')
plt.ylabel('Y axis title') 
#Show the plot
plt.show()
75742bubble_chart-4501576

Gráfico de bolhas com Seaborn

#Reading the dataset
bill_dataframe = sns.load_dataset("Dicas")
#Creating bubble plot
sns.scatterplot(dados = bill_dataframe, x ="total_bill", y ="Ponta", matiz ="Tamanho", tamanho ="Tamanho")
#Adding the aesthetics
plt.title('Chart title')
plt.xlabel('X axis title')
plt.ylabel('Y axis title') 
# Show the plot
plt.show()
83681sns_bubble-8895517

Box plot

Um gráfico de caixa é usado para mostrar a forma da distribuição, seu valor central e variabilidade.

Gráfico de caixa usando Matplotlib

from past.builtins import xrange
#Creating the dataset
df_1 = [[1,2,5], [5,7,2,2,5], [7,2,5]]
df_2 = [[6,4,2], [1,2,5,3,2], [2,3,5,1]]
#Creating the box plot
ticks = ['UMA', 'B', 'C']
plt.figure()
BPL = plt.boxplot(df_1, posições=np.array(xrange(len(df_1)))*2.0-0.4, sym='', larguras = 0,6)
BPR = plt.boxplot(df_2, posições=np.array(xrange(len(df_2)))*2.0+0.4, sym='', larguras = 0,6)
plt.plot([], c ="#D7191C", rótulo ="Etiqueta 1")
plt.plot([], c ="#2C7BB6", rótulo ="Etiqueta 2")
#Adding the aesthetics
plt.title('Chart title')
plt.xlabel('X axis title')
plt.ylabel('Y axis title') 
plt.legend()
plt.xticks(xrange(0, len(Carrapatos) * 2, 2), Carrapatos)
plt.xlim(-2, len(Carrapatos)*2)
plt.ylim(0, 8)
plt.tight_layout()
#Show the plot
plt.show()
66500box_plot-3743128

Diagrama de caixa usando Seaborn

#Reading the dataset
bill_dataframe = sns.load_dataset("Dicas")
#Creating boxplots
ax = sns.boxplot(x ="dia", y ="total_bill", matiz ="fumante", dados = bill_dataframe, paleta ="Set3")
#Adding the aesthetics
plt.title('Chart title')
plt.xlabel('X axis title')
plt.ylabel('Y axis title') 
# Show the plot
plt.show()
36736sns_boxplot-2715049

Gráfico em cascata

Um gráfico em cascata pode ser usado para explicar a transição gradual no valor de uma variável que está sujeita a aumentos ou diminuições.

#Reading the dataset
test = pd.Series(-1 + 2 * np.random.rand(10), índice = lista('abcdefghij'))
#Function for makig a waterfall chart
def waterfall(Série):
    df = pd.DataFrame({'pos':np.máximo(Série,0),'neg':np.mínimo(Série,0)})
    em branco = série.cumsum().mudança(1).Fillna(0)
    df.plot(kind = 'bar', empilhado=Verdadeiro, bottom=em branco, color =['r','b'], alfa = 0,5)
    Etapa = blank.reset_index(drop = True).Repetir(3).mudança(-1)
    Passo[1::3] = np.nan
    plt.plot(passo.índice, step.values,'k')
#Creating the waterfall chart
waterfall(teste)
#Adding the aesthetics
plt.title('Chart title')
plt.xlabel('X axis title')
plt.ylabel('Y axis title')
#Show the plot
plt.show()
25684waterfall_chart-4217592

Diagrama de Venn

Os diagramas de Venn são usados para ver as relações entre dois ou três conjuntos de elementos. Destaque semelhanças e diferenças

from matplotlib_venn import venn3
#Making venn  diagram
venn3(subconjuntos = (10, 8, 22, 6,9,4,2))
plt.show()
94967sns_venn-7916585

Mapa de árvore

Os mapas de árvore são usados principalmente para exibir dados agrupados e aninhados em uma estrutura hierárquica e para observar a contribuição de cada componente.

import squarify 
sizes = [40, 30, 5, 25, 10]
squarify.plot(tamanhos)
#Adding the aesthetics
plt.title('Chart title')
plt.xlabel('X axis title')
plt.ylabel('Y axis title') 
# Show the plot
plt.show()
99918sns_treemap-2239379

Gráfico de barras 100% Empilhado

Um gráfico de barras empilhadas pode ser aproveitado por 100% quando queremos mostrar as diferenças relativas dentro de cada grupo para os diferentes subgrupos disponíveis.

#Reading the dataset
r = [0,1,2,3,4]
raw_data = {'greenBars': [20, 1.5, 7, 10, 5], 'orangeBars': [5, 15, 5, 10, 15],'blueBars': [2, 15, 18, 5, 10]}
df = pd.DataFrame(dados não tratados)
# From raw value to percentage
totals = [I+J+K para i,j,k no zip(df['greenBars'], df['orangeBars'], df['blueBars'])]
greenBars = [eu / j * 100 para eu,j no zip(df['greenBars'], Totais)]
laranjaBarras = [eu / j * 100 para eu,j no zip(df['orangeBars'], Totais)]
blueBars = [eu / j * 100 para eu,j no zip(df['blueBars'], Totais)]
# plot
barWidth = 0.85
nomes = ('UMA','B','C','D','E')
# Create green Bars
plt.bar(r, greenBars, color ="#b5ffb9", cor da borda="Branco", largura=larguraBarra)
# Create orange Bars
plt.bar(r, laranjaBarras, bottom=greenBars, color ="#f9bc86", cor da borda="Branco", largura=larguraBarra)
# Create blue Bars
plt.bar(r, Barras azuis, inferior=[i+j para i,j no zip(greenBars, laranjaBarras)], color ="#A3acff", cor da borda="Branco", largura=larguraBarra)
# Custom x axis
plt.xticks(r, nomes)
plt.xlabel("grupo")
#Adding the aesthetics
plt.title('Chart title')
plt.xlabel('X axis title')
plt.ylabel('Y axis title')  
plt.show()
52847sns_percent_bar-8975109

Parcelas marginais

Gráficos marginais são usados para avaliar a relação entre duas variáveis e examinar suas distribuições. Esses gráficos de dispersão que têm histogramas, plotagens de caixa ou gráficos de pontos nas margens dos respectivos eixos xey

#Reading the dataset
iris_dataframe = sns.load_dataset('íris')
#Creating marginal graphs
sns.jointplot(x=iris_dataframe["sepal_length"], y=iris_dataframe["sepal_width"], kind='scatter')
# Show the plot
plt.show()
37027sns_marginal_graph-7978746

Subparcelas

Os subquadros são visualizações poderosas que facilitam a comparação entre quadros

#Creating the dataset
df = sns.load_dataset("íris") 
df=df.groupby('sepal_length')['sepal_width'].soma().to_frame().reset_index()
#Creating the subplot
fig, axes = plt.subplots(nrows=2, ncols=2)
ax=df.plot('sepal_length', 'sepal_width',ax = axes[0,0])
ax.get_legend().retirar()
#Adding the aesthetics
ax.set_title('Chart title')
ax.set_xlabel('X axis title')
ax.set_ylabel('Y axis title')
ax=df.plot('sepal_length', 'sepal_width',ax = axes[0,1])
ax.get_legend().retirar()
ax=df.plot('sepal_length', 'sepal_width',ax = axes[1,0])
ax.get_legend().retirar()
ax=df.plot('sepal_length', 'sepal_width',ax = axes[1,1])
ax.get_legend().retirar()
#Show the plot
plt.show()
22768subparcela-9595013

Em conclusão, Há uma variedade de bibliotecas diferentes que podem ser aproveitadas em todo o seu potencial, entendendo o caso de uso e o requisito. Sintaxe e semântica variam de pacote para pacote e entender os desafios e benefícios de diferentes bibliotecas é essencial. ¡Feliz visualizando!

Aishwarya A

Cientista de dados e entusiasta de dados analítica

A mídia mostrada neste artigo não é propriedade da Analytics Vidhya e é usada a critério do autor.

Assine a nossa newsletter

Nós não enviaremos SPAM para você. Nós odiamos isso tanto quanto você.