Bom dia. Como faço para pegar dataframes ou gráficos gerados pelo pandas e gerar um arquivo de imagem com eles ?
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
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!