Visualização interativa de dados usando Bokeh (e Python)

Conteúdo

Introdução

Recentemente, Eu estava lendo um vídeo da conferência scipy 2015, “Criando aplicativos de dados Python com Blaze e Bokeh“, Recentemente realizado em Austin, Texas, EE. UU. Não conseguia parar de pensar no poder que essas duas bibliotecas trazem aos cientistas de dados usando python ao redor do mundo.. Neste artigo, Vou apresentá-lo ao mundo das possibilidades na visualização de dados usando Bokeh e por que eu acho que esta é uma biblioteca que todos os cientistas de dados devem aprender / usar.

bokeh_introduction-1496563 Fonte: bokeh.pydata.org

O que é Bokeh?

Bokeh é uma biblioteca Python para visualização interativa que aponta navegadores da Web para renderização. Esta é a principal diferença entre Bokeh e outras bibliotecas de visualização. Esta função informa sobre o comprimento de uma célula, o que explica o fluxo de processo de como o Bokeh ajuda a apresentar dados para um navegador da Web.

bokeh_intro-1850441Fonte: Análise contínua

Como você pode ver, Bokeh tem vários links de idioma (Pitão, R, lua e Julia). Estos enlaces producen un archivo JSON, que funciona como uma entrada para BokehJS (uma biblioteca Javascript), que, por sua vez, apresenta dados para navegadores modernos.

Bokeh pode produzir uma visualização elegante e interativa como d3.js com interatividade de alto desempenho em conjuntos de dados muito grandes ou de streaming. Bokeh pode ajudar qualquer um que queira criar gráficos de forma rápida e fácil, painel de dados e aplicativos interativos.

O que Bokeh oferece a um cientista de dados como eu??

Comecei minha jornada de ciência de dados como profissional de BI e depois trabalhei com modelagem preditiva, ciência de dados e aprendizado de máquina. Eu confiei principalmente em ferramentas como QlikView e Tableau para visualização de dados e SAS e Python para análise preditiva e ciência de dados.. Eu tinha quase zero experiência usando JavaScript.

Então, para todos os meus produtos de dados ou ideias, Tive que terceirizar o trabalho ou apresentar minhas ideias através de wireframes, que não são ideais para construir protótipos rápidos. Agora, Golpe de bokeh, Posso continuar trabalhando no ecossistema Python, mas ainda posso criar esses protótipos rapidamente.

Benefícios do Bokeh:

  • Bokeh permite criar gráficos estatísticos complexos rapidamente e com comandos simples
  • Bokeh fornece saída em várias mídias como html, notebook e servidor
  • Também podemos incorporar a visualização Bokeh no aplicativo flask e django
  • Bokeh pode transformar a visualização escrita em outras bibliotecas como matplotlib, nascido do mar, ggplot
  • Bokeh tem flexibilidade para aplicar interação, diferentes layouts e opções de estilo para exibir.

Desafíos con Bokeh:

  • Como acontece com qualquer biblioteca de código aberto futura, Bokeh está passando por grande desenvolvimento. Portanto, o código que você escreve hoje pode não ser totalmente reutilizável no futuro.
  • Tem relativamente menos opções de exibição, em comparação com A3.js. Portanto, é improvável que em um futuro próximo ele vai desafiar D3.js para sua coroa.

Dado os benefícios e desafios, atualmente é ideal para desenvolver protótipos rapidamente. Porém, se você quiser criar algo para o ambiente de produção, D3.js pode ser sua melhor opção.

Para instalar Bokeh, siga as instruções dadas aqui.

Visualização com Bokeh

Bokeh oferece recursos poderosos e flexíveis que transmitem simplicidade e personalização altamente avançada. Fornece várias interfaces de exibição para o usuário, conforme mostrado abaixo:bokeh_interface-7671639

  • Gráficos: uma alto nível interface que é usado para construir gráficos estatísticos complexos tão rapidamente e de uma forma simplista.
  • Graficamente: uma Intermediário interface que se concentra na composição de glifos visuais.
  • Modelos: uma baixo nível interface que fornece máxima flexibilidade para desenvolvedores de aplicativos.

Neste artigo, veremos apenas os gráficos e o layout das duas primeiras interfaces. Vamos discutir os modelos e outras características avançadas desta biblioteca no próximo post.

Gráficos

Como mencionado anteriormente, é uma interface de alto nível que é usada para apresentar informações na forma de uma visualização padrão. Esses formulários incluem diagrama de caixa, gráfico de barras, diagrama de área, mapa de calor, diagrama anel e muitos outros. Você pode gerar esses gráficos simplesmente passando quadros de dados, matrizes e dicionários.

Vamos olhar para a metodologia comum para criar um gráfico:

  1. Importe a biblioteca e os recursos / métodos
  2. Prepare os dados
  3. Defina o modo de saída (portátil, navegador ou servidor web)
  4. Criar gráfico com opção de estilo (Sim é necessário)
  5. Veja o gráfico

Para entender melhor esses passos, deixe-me demonstrar essas etapas usando o exemplo a seguir:

Exemplo de gráficos 1: criar um gráfico de barras e visualizá-lo no navegador da Web usando Bokeh

Seguiremos os passos listados acima para criar um gráfico:

#Import library
from bokeh.charts import Bar, output_file, mostrar #use output_notebook visualizá-lo em notebook
# preparar dados (dados falsos)
dados = {"e": [1, 2, 3, 4, 5]}
# Output to Line.HTML
output_file("linhas.html", título ="exemplo de enredo linha") #colocar output_notebook() para notebook
# create a new line chat with a title and axis labels
p = Bar(dados, título ="Exemplo de gráfico de linha", xlabel="x", ylabel ="valores", largura=400, altura=400)
# show the results
show(p)
bar_chart-7356470

No gráfico acima, você pode ver as ferramentas no topo (zoom, Redimensionamento, reiniciar, zoom da roda) e essas ferramentas permitem que você interaja com o gráfico. Você também pode ver as várias opções de gráficos (lenda, xlabel, Ylabel, xgrid, largura, alta e muitos outros) e vários exemplos de gráficos aqui.

Exemplo de gráfico 2: Compare a distribuição do comprimento do sepala e do comprimento da pétala do conjunto de dados IRIS usando o diagrama da caixa no notebook

Para criar essa visualização, em primeiro lugar, Vou importar o conjunto de dados de íris usando a biblioteca sklearn. Mais tarde, siga os passos acima para exibir o gráfico no aglutinante ipython.

#IRIS Data Set
from sklearn.datasets import load_iris
import pandas as pd
iris = load_iris()
df = pd.DataFrame(iris.data)
df.colunas=['petal_width','petal_length','sepal_width','sepal_length']
#Import library
from bokeh.charts import BoxPlot, output_notebook, exposição
data = df[['petal_length','sepal_length']]
# Output to Notebook
output_notebook()
# create a new line chat with a title and axis labels
p = BoxPlot(dados, largura=400, altura=400)
# show the results
show(p)

bokeh_box_plot-8049544

Exemplo de gráfico 3: criar um gráfico de linha no servidor bokeh

Antes de plotar o display no servidor Bokeh, você deve executá-lo.

Se você estiver usando um pacote conda, você pode usar o comando executar servidor bokeh de qualquer diretório usando o comando. Outro, python ./bokeh-server o comando deve trabalhar em geral. Para mais detalhes sobre isso, verifique este link “Implantação do servidor Bokeh“.

Existem vários benefícios da visualização do caminho no servidor Bokeh:

  • Enredos podem ser publicados para um público mais amplo
  • Visualize um grande conjunto de dados de forma interativa
  • Transmissão de dados para atualizar gráficos automaticamente
  • Criando dashboards e aplicativos

Para começar a conspirar no servidor Bokeh, Eu executei o comando servidor bokeh para inicializá-lo seguido pelos comandos usados para exibição.

bokeh_server-8085815

de bokeh.ploting figura de importação, output_server, show
output_server("linha")
p = figura(plot_width=400, plot_height=400)
# add a line renderer
p.line([5, 2, 3, 4, 5], [5, 7, 2, 4, 5], line_width = 2)
exposição(p)

bokeh_server_visualization-6360568

Graficamente

Trace é um Intermediário interface que se concentra na composição de glifos visuais. Aqui, cria uma visualização combinando vários Visuais (apontar, Círculos, linha, patch e muitos outros) e instrumentos (ferramenta de rolagem, zoom, Salve , redefinir e outros).

Gráficos bokeh criados com o bokeh.ploting A interface vem com um conjunto padrão de ferramentas e estilos visuais. Para traçar, Siga os passos abaixo:

  1. Biblioteca de Importação, métodos ou funções
  2. Selecione o modo de saída (portátil, navegador, servidor)
  3. Activar una figura (semelhante ao matplotlib)
  4. realizar operações de caminho subsequentes, afetará a figura gerada.
  5. Veja

Para entender melhor esses passos, Deixe-me demonstrar essas etapas usando os exemplos abaixo:

Gráfico de exemplo-1: Crie uma marca de dispersão quadrada no quadro XY do notebook

a partir de bokeh.ploting importar figura, output_notebook, exposição

# saída para notebook
output_notebook()
p = figura(plot_width=400, plot_height=400)
# adicionar quadrado com um tamanho, cor, e alfa
p.quadrado([2, 5, 6, 4], [2, 3, 2, 1, 2], Tamanho=20, cor="marinha")
# mostrar os resultados
exposição(p)

bokeh_scatter-9023945

Do mesmo modo, você pode criar vários outros gráficos como uma linha, cunhas e arco, Ovais, imagens, patches e muitos outros, consulte este Ligação para ver vários exemplos.

Exemplo de enredo-2: Combine dois visuais em um gráfico

de bokeh.ploting figura de importação, output_notebook, exposição
# output to notebook
output_notebook()
p = figura(plot_width=400, plot_height=400)
# adicionar quadrado com um tamanho, cor, and alpha
p.square([2, 5, 6, 4], [2, 3, 2, 1, 2], tamanho = 20, color ="marinha")
p.line([1, 2, 3, 4, 5], [1, 2, 2, 4, 5], line_width = 2) #acrescentou um enredo de linha à figura existente
# show the results
show(p)

multiple_plots-2934996

Exemplo de enredo-3: Adicione uma ferramenta flutuante e etiquetas de eixo ao gráfico anterior

de bokeh.ploting figura de importação, output_notebook, show
from bokeh.models import HoverTool, Ferramentas de habilitação do BoxSelectTool #For
# output to notebook
output_notebook()
#Add tools
TOOLS = [BoxSelectTool(), HoverTool()]
p = figura(plot_width=400, plot_height=400, ferramentas=FERRAMENTAS)
# adicionar um quadrado com um tamanho, cor, and alpha
p.square([2, 5, 6, 4], [2, 3, 2, 1, 2], tamanho = 20, color ="marinha", alfa = 0,5)
#Visual Elements
p.xaxis.axis_label = "Eixo X"
p.yaxis.axis_label = "Eixo y"
# show the results
show(p)

bokeh_tools_visualize-1363299

Para mais detalhes sobre atributos visuais e ferramentas, ver esses links:

Gráfico de exemplo-4: Mapa da Índia usando dados de latitude e longitude para limites

Observação: Tenho dados de polígono de latitude e longitude para os limites da Índia em formato csv. Vou usá-lo para traçar.

Aqui, vamos com o patch tracing, vamos ver os comandos abaixo:

#Bibliotecas de importação
import pandas as pd
from bokeh.plotting import figure, exposição, output_notebook
#Import Latitude and lanogitude co-ordinates
India=pd.read_csv('E:/Índia.csv')
da Índia['ID']
Índia.índice=['IN0','IN1','IN2','IN3','IN4','IN5']
#Convert string values to float as co-ordinates in dataframe are string
for j in range(0,len(Índia)):
 a = Índia['lats'][j]
 Índia['lats'][j] = [flutuador(eu) para eu em um[1:len(uma)-1].dividir(",")]
para j no intervalo(0,len(Índia)):
 a = Índia['lons'][j]
 Índia['lons'][j] = [flutuador(eu) para eu em um[1:len(uma)-1].dividir(",")]
# Output option
output_notebook()
# Create your plot
p = figure(plot_height=400, plot_width=400, toolbar_location="direito",x_axis_type=Nenhum, y_axis_type=Nenhum)
p.patches(xs=Índia['lons'], ys=Índia['lats'], fill_color="Branco",line_color ="Preto", line_width=0,5)
#Visualize your chart
show(p)

Índia-7239691

Notas finais

Neste artigo, analisamos a criação de visualizações usando Bokeh e métodos para apresentá-los em cadernos, html e bokeh-servidor. Também discutimos os métodos para criar uma visualização personalizada usando plotagem, aqui você pode combinar vários elementos visuais para representar informações.

No meu próximo post sobre Bokeh, Discutirei modelos e recursos de exibição mais interativos. Por exemplo, Eu coordenei fronteiras para todos os países ao redor do mundo. Agora, Quero criar uma visualização para representar o mapa de cada país em um loop (cachos). Comece a plotar com um mapa do país e espere 3 segundos e iterar para todos os países. Parece interessante! Não é assim?

Você achou este artigo útil? Deixe-nos saber seus pensamentos sobre este artigo na seção de comentários abaixo..

Se você gostou do que acabou de ler e deseja continuar seu aprendizado sobre análise, inscreva-se em nossos e-mails, Siga-nos no Twitter ou como o nosso página do Facebook.

Assine a nossa newsletter

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