NOTEBOOKS TUTORIAL SAGEMATH
TRABALHANDO COM ARQUIVOS DE DADOS, CSV E DATAFRAMES
Arquivo de Dados (.DAT)
Um arquivo DAT é um arquivo de dados que é criado por um aplicativo de software e pode conter texto, imagens e outros tipos de dados. Um arquivo DAT pode ser usado como um backup para determinados tipos de arquivos e programas que podem ser restaurados mais tarde. Fonte: http://ptcomputador.com/
modos Descrição
r : Abre um arquivo somente para leitura. O ponteiro de arquivo é colocado no inicio do arquivo. Este é o modo padrão.
r+ : Abre um arquivo para leitura e escrita. O ponteiro de arquivo colocado no início do arquivo
w : Abre um arquivo somente para escrita. Substitui o arquivo se o arquivo existe. Se o arquivo não existir, cria um novo arquivo para a escrita.
w+ : Abre um arquivo para escrita e leitura. Substitui o arquivo existente se o arquivo existe. Se o arquivo não existir, cria um novo arquivo para leitura e escrita.
a+ : Abre um arquivo para ambos appending e leitura. O ponteiro do arquivo está no final do arquivo, se o arquivo existe. O arquivo é aberto no modo de acréscimo. Se o arquivo não existir, ele cria um novo arquivo para leitura e escrita.
Criação, Gravação e Leitura de Arquivos
Criando Arquivos de dados
SageMath assim como python, cria um arquivo ao tentar abrir um arquivo que não existe gravado no computador. A outra maneira é usando o comando %sh touch arquivo.dat ou !touch arquivo.dat.
Gravando dados
Lendo arquivo
Se executar novamente vai aparecer vazio. Isto ocorre em funão do SageMath ler mais linhas do arquivo.
Se tentar ler a variável arquivo_dados ocorre erro pois o arquivo ja foi fechado. para evitar esse problema, atribua à leitura das linhas do arquivo uma variável. Ex:
Acrescentar Dados ao Final do Arquivo
Abrir um arquivo para leitura e gravação (w+) inplica dizer que ao gravar novamente outros dados, pode ocorrer de perder todo o conteúdo gravado. Para evitar esse probmão, use o atributo a+ que permite gravar ao final do arquivo.
Gravando dados numéricos em um arquivo texto
O comando write só grava dados de texto, para gravar dados numéricos temos que usar o numpy. Embora exista a possibilidade de usar a função 'pickle', os dados gravados no arquivo ficam de péssima visualização em um editor de textos.
formato é a forma de apresentação dos dados:
O problema com este código é que se outros dados forem salvos no arquivo, os dados anteriores serão apagados.
Acrescentando vários valores numéricos a um arquivo txt
Agora podemos trabalhar com esses dados gravados em arquivo
Utilizando a forma de função
DataFrames
Os dataframes são objetos usados para guardar dados na forma de tabelas. Um data frame possui colunas nomeadas, sendo que todas as colunas possuem a mesma quantidade de linhas. DataFrame é a melhor forma de guardar informações pois além de manter uma boa formatação dos dados, ainda permite que seja gravado em arquivos do tipo CSV, que podem ser abertos e manipulados em softwares de planilha tipo excel ou calc.
O Pandas é uma biblioteca de software escrito para manipulação e análise de dados. Como diferencial, oferece estruturas e operações de dados para manipular tabelas numéricas e séries de tempo. Pandas é um software livre liberado sob a licença BSD. O nome é derivado do termo "dados em painel", um termo de econometria para conjuntos de dados estruturados multidimensionais.
Criar e Visualizar DataFrames
| Ano | Nome_do_software | |
|---|---|---|
| 0 | 2005 | scilab |
| 1 | 2012 | julia |
| Ano | Nome_do_software | |
|---|---|---|
| 0 | 2005 | scilab |
| 1 | 2012 | julia |
Outro Exemplo
| Nome_do_software | Ano_de_lancamento | Site | |
|---|---|---|---|
| 0 | Julia | 2012 | julialang.org |
| 1 | SageMath | 2005 | sagemath.org |
| 2 | Maxima | 1980 | maxima.org |
| 3 | Octave | 2000 | gnu.org/octave |
| 4 | Maxima | 1980 | maxima.org |
Arquivos CSV
A melhor forma de trabalhar com dataframes é salva-los no formato "CSV". Comma-separated values (ou CSV) é um formato de arquivo que armazena dados tabelados, cujo grande uso data da época dos mainframes. Por serem bastante simples, os arquivos '.csv' são comuns em todas as plataformas de computador.
O CSV é um implementação particular de arquivos de texto separados por um delimitador, que usa a vírgula e a quebra de linha para separar os valores. O formato também usa as aspas em campos no qual são usados os caracteres reservados (vírgula e quebra de linha). Essa robustez no formato torna o CSV mais amplo que outros formatos digitais do mesmo segmento.Fonte: wikipedia.
Forma geral de um arquivo CSV na forma de texto:
Uma forma prática de criar arquivos CSV é usando uma planilha (excel, calc-libreoffice/openoffice). Basta preencher os dados nas celulas e depois salvar como CSV.
Importar um Arquivo CSV
coluna do index, corresponde a primeira coluna
Salvar dados em um Arquivo CSV
| Nome_do_software | Ano_de_lancamento | |
|---|---|---|
| 0 | Julia | 2012 |
| 1 | SageMath | 2005 |
| 2 | Maxima | 1980 |
| 3 | Octave | 2000 |
Manipular Colunas, Linhas, Dados e Concatenar Dataframes
| Nome_do_software | Ano | |
|---|---|---|
| 0 | scilab | 2005 |
| 1 | julia | 2012 |
Para adicionar uma nova coluna de dados ao DataFrame
| Nome_do_software | Ano | Gostei | |
|---|---|---|---|
| 0 | scilab | 2005 | Sim |
| 1 | julia | 2012 | Sim |
Para deletar uma coluna
| Nome_do_software | |
|---|---|
| 0 | scilab |
| 1 | julia |
| 0 |
|---|
| 1 |
Para alterar nome de uma coluna
| Soft_name | Ano | |
|---|---|---|
| 0 | scilab | 2005 |
| 1 | julia | 2012 |
Para concatenar Dataframes
| Nome_do_sofware | Ano | |
|---|---|---|
| 0 | octave | 2000 |
| 1 | axiom | 1980 |
| Nome_do_software | Ano | |
|---|---|---|
| 0 | scilab | 2005 |
| 1 | julia | 2012 |
Horizontal
| Nome_do_sofware | Ano | Nome_do_software | Ano | |
|---|---|---|---|---|
| 0 | octave | 2000 | scilab | 2005 |
| 1 | axiom | 1980 | julia | 2012 |
Vertical
| Ano | Nome_do_software | Nome_do_sofware | |
|---|---|---|---|
| 0 | 2000 | NaN | octave |
| 1 | 1980 | NaN | axiom |
| 0 | 2005 | scilab | NaN |
| 1 | 2012 | julia | NaN |
| Ano | Nome_do_software | Nome_do_sofware | |
|---|---|---|---|
| 0 | 2000 | NaN | octave |
| 1 | 1980 | NaN | axiom |
| 2 | 2005 | scilab | NaN |
| 3 | 2012 | julia | NaN |
Adicionar Linhas
Para deletar linhas e linhas com dados repetidos
| Nome_do_software | Ano | |
|---|---|---|
| 1 | julia | 2012 |
| Nome_do_software | Ano |
|---|
Para ordenar os elementos de um Dataframe
| Nome_do_software | Ano | |
|---|---|---|
| 0 | scilab | 2005 |
| 1 | julia | 2012 |
Renomear Index
| Nome_do_software | Ano | |
|---|---|---|
| 0 | scilab | 2005 |
| 1 | julia | 2012 |
| Nome_do_software | Ano | |
|---|---|---|
| Interpretado | scilab | 2005 |
| Compilado | julia | 2012 |
Visualizar Dados em um DataFrame
| Nome_do_software | Ano_de_lancamento | |
|---|---|---|
| 0 | Julia | 2012 |
| 1 | SageMath | 2005 |
| 2 | Maxima | 1980 |
| 3 | Octave | 2000 |
Filtro de dados
| Nome_do_software | Ano_de_lancamento | |
|---|---|---|
| 0 | Julia | 2012.0 |
| 1 | SageMath | 2005.0 |
| 2 | Maxima | NaN |
| 3 | Octave | NaN |
Alterar Dados em um DataFrame
Editar dados em uma DataFrame
Para editar um dado em um dataframe:
| x | y | |
|---|---|---|
| 0 | 0.0 | -0.183440 |
| 1 | 0.2 | -0.131101 |
| 2 | 0.4 | 0.026888 |
| 3 | 0.8 | 0.110533 |
| 4 | 1.0 | 0.253945 |
| 5 | 1.2 | 0.000000 |
| 6 | 1.4 | 0.000000 |
| 7 | 1.6 | 0.579048 |
| 8 | 2.0 | 0.935181 |
| 9 | 2.2 | 0.916600 |
| 10 | 2.6 | 1.133286 |
| 11 | 2.8 | 1.268933 |
| 12 | 3.0 | 1.102029 |
| 13 | 3.4 | 1.133916 |
Manipulação Algébrica
Com uma coluna de dados pode ser feita qualquer manipulação matemática. No exemplo, os dados da coluna de dados "x" serão multiplicados por 10.
Gráfico de dados
| x | y | |
|---|---|---|
| 0 | 0.0 | -0.183440 |
| 1 | 0.2 | -0.131101 |
| 2 | 0.4 | 0.026888 |
| 3 | 0.8 | 0.110533 |
| 4 | 1.0 | 0.253945 |
| 5 | 1.2 | 0.257190 |
| 6 | 1.4 | 0.531889 |
| 7 | 1.6 | 0.579048 |
| 8 | 2.0 | 0.935181 |
| 9 | 2.2 | 0.916600 |
| 10 | 2.6 | 1.133286 |
| 11 | 2.8 | 1.268933 |
| 12 | 3.0 | 1.102029 |
| 13 | 3.4 | 1.133916 |
Aplicações
Um pesquisador deseja investigar todas as raízes das função num intervalo de 0 a 15.
Outra forma usando Try except. Esta forma é interessante pois dá mais segurança ao código de tal forma que se a função não for contínua no intervalo será gerada uma exceção para este intervalo e o algoritmo continua.