Bom dia. Como faço para pegar dataframes ou gráficos gerados pelo pandas e gerar um arquivo de imagem com eles ?
Bom dia. Como faço para pegar dataframes ou gráficos gerados pelo pandas e gerar um arquivo de imagem com eles ?
Olá Mario! Tudo certinho?
Para salvar gráficos no formato de imagem você pode utilizar o método savefig
do matplotlib. Vou mostrar dois exemplos aqui de como utilizá-lo para que você possa entender melhor seu funcionamento:
Nos exemplos acima estou utilizando um dataset aleatório apenas para gerar os gráficos e mostrar a forma como você pode salvar sua figura.
Observe que no primeiro exemplo, para salvar a figura, foi utilizado apenas o comando plt.savefig('nome_da_figura.png')
e que, no segundo exemplo, por se tratar de um gráfico gerado pela biblioteca seaborn, antes de salvar a figura, foi necessário utilizar o método get_figure, na linha fig = ax.get_figure()
, para pegar a figura, e depois salvá-la fig.savefig('nome_da_figura.png')
.
Caso você esteja utilizando o Google Colab, ao salvar suas figuras, automaticamente elas já irão aparecer na barra lateral esquerda na parte de "Arquivos" com os respectivos nomes que foram dados à elas. Para fazer o download dessas imagens, basta clicar com o botão direito do mouse em cima do nome da figura e clicar em "Fazer download":
Caso você esteja usando o Jupyter Notebook ou semelhantes, a figura será salva na mesma pasta onde se encontra salvo o seu notebook.
Em relação a salvar um dataframe como uma imagem, existe uma biblioteca que nos permite fazer isso. O nome dela é dataframe_image. Para utilizá-la, primeiro você deve fazer sua instalação, você pode fazer isso digitando o comando pip install dataframe_image
em uma célula e executando-a.
Após instalada, você deve fazer a importação dessa biblioteca por meio do comando import dataframe_image as dfi
. E depois, para salvar o dataframe, será utilizado o método dfi.export(dataframe, 'nome_do_dataframe.png')
. Para o qual você deve passar como argumento o dataframe, e o nome que deseja dar a imagem que será salva. Abaixo, vou deixar um exemplo de sua utilização:
import dataframe_image as dfi
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(6, 6), columns=list('ABCDEF'))
dfi.export(df, 'dataframe.png')
O dataframe df
foi criado apenas para exemplificar o uso do método export :)
Caso queira explorar um pouco mais sobre o savefig e a biblioteca datetime_image, vou deixar os links de suas documentações aqui:
Espero que isso te ajude!
Qualquer dúvida me avisa, tá bom? Estarei por aqui.
Bons estudos!
Muito obrigado! Eu consegui salvar a imagem porém os dados não vieram junto, eu li a documentação mas não vi nenhum parâmetro para isso. Como fazer ?
Olá Mario!
Desculpa, não entendi muito bem qual foi o problema. Vou te pedir que me passe mais algumas informações, por favor. ^^
1 - Em qual das imagens que você teve problema? A do gráfico ou a do dataframe?
2 - Quais dados não estão aparecendo?
Se puder, envia aqui no fórum a parte do seu código na qual você está salvando essa imagem e também um print dessa imagem, porque assim fica mais fácil de tentarmos identificar o problema :)
Observação: para enviar uma imagem no fórum, basta subir ela para algum site de compartilhamento de imagem (eu utilizo o imgur) e colar o link que será gerado pra ela, aqui.
Aguardo seu retorno.
Esse aqui é o código todo, esta tudo junto mas estava em células diferente no jupyter notebook.
import pandas as pd
import matplotlib.pyplot as plt
dataset = pd.read_csv('emissao_CO2.csv',index_col = 0)
dataset_br = dataset.loc['Brazil'].copy()
comparativo = dataset_br.Year >= 1990
dataset_br[comparativo]
grafico = dataset_br[comparativo].plot.line(x = 'Year', y = 'Annual CO2 emissions', title = "Emissão anual de CO2 no Brasil(1990 - 2019)", xlabel = "Ano",
ylabel = 'Quantidade de CO2 em e^8 toneladas', legend = False, fontsize= 14, figsize =(10,8))
figure = grafico.get_figure()
figure.savefig('emissao_co2.png')
Essa é a planilha que eu vejo no programa https://imgur.com/1RhGMlo
Essa é a imagem que eu consigo quando uso o .getfigure ( ) e depois o .savefig() https://imgur.com/DVr07oe
Olá Mario!
Peço desculpas pela demora em dar o retorno.
Pelo que eu pude perceber a imagem está saindo com os valores dos eixos tudo em preto. Vamos testar algumas abordagens para tentar resolver esse problema.
1 - Reiniciar o ambiente de execução
Para fazer isso, caso esteja usando o Colab, basta seguir o seguinte caminho: Ambiente de execução > Reiniciar e executar tudo
Caso esteja utilizando o Jupyter: Kernel > Restart and Run All
Caso o erro persista, vamos tentar outra opção.
2 - Mudar a cor do facecolor
Pode acontecer que a IDE que você esteja utilizando esteja com o facecolor padrão como preto, e isso pode estar fazendo com que a imagem de seu gráfico saia dessa cor. Sendo assim, você pode padronizar essa cor como branco da seguinte maneira:
figure = grafico.get_figure()
figure.set(facecolor = (1, 1, 1))
figure.savefig('emissao_co2.png')
Após salvar a imagem, confira se funcionou e os eixos aparecam dee forma correa.
Por fim, caso nenhuma das opções acima funcionem:
3 - Fazer o gráfico utilizando a biblioteca seaborn
Uma outra forma de fazer o gráfico de linhas é utilizando o lineplot do seaborn. Uma forma de utilizar esse método seria o seguinte:
grafico = sns.lineplot(data = dataset_br[comparativo], x = 'Year', y = 'Annual CO2 emissions')
figure = grafico.get_figure()
figure.savefig('emissao_co2.png')
Vou deixar aqui o link da documentação do lineplot:
Espero que alguma dessas alternativas funcionem! Qualquer coisa você me avisa, tá bom?
Bons estudos!