Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Download

Tutorial básico Julia Python

497 views
ubuntu2004
Kernel: SageMath 9.1

FÍSICA EXPERIMENTAL - 2021-2 - PARTE III

Carga Horária: 4h

Prof João Marcello Pereira ([email protected])

Data frame

Um DataFrame é uma estrutura bidimensional semelhante à uma matriz no qual os dados são tabelados em colunas nomeadas no qual possuem a mesma quantidade de linhas. JOSHI (2016) define data frame como:

É uma estrutura de dados que tem colunas rotuladas, que individualmente podem ter diferentes tipos de dados. Como uma tabela SQL ou uma planilha, ela tem duas dimensões. Também pode ser pensado como uma lista de dicionários, mas, fundamentalmente, é diferente.

É uma ótima forma de organizar informações pois além de manter uma boa formatação dos dados, ainda permite que sejam gravados em arquivos do tipo "CSV", "XLSX", "ODS" entre outros, que podem ser abertos e manipulados em softwares de planilha tipo excel ou calc. Exemplo de DataFrame:

Sintaxe:

nome_dataframe = pd.DataFrame() nome_dataframe['Nome_coluna_1'] = [dado_1_coluna_1, dado_2_coluna_1, ..., dado_n_coluna_1] nome_dataframe['Nome_coluna_2'] = [dado_1_coluna_2, dado_2_coluna_2, ..., dado_n_coluna_2]

Exemplo 1: Criar do seguinte Dataframe:

Tempo (s)Velocidae (m/s)
00.0
10.5
21.0
31.5
42.0
# configurar o display %display unicode_art
# importar a biblioteca pandas import pandas as pd
# Forma 1: dataframe1 = pd.DataFrame() dataframe1['tempo'] = [0, 1, 2, 3, 4] dataframe1['velocidade'] = [0, 0.5, 1.0, 1.5, 2.0] dataframe1

Visualizar Dados em um DataFrame

  • Imprimir nome das colunas:

nome_dataframe.columns
  • Imprimir dados de toda a coluna:

nome_dataframe.nome_coluna
  • Imprimir dado de uma coluna:

nome_dataframe.nome_coluna[[ordem_linha]]
  • Total de dados de um DataFrame:

nome_dataframe.size
  • Numero de elementos de um DataFrame:

nome_dataframe.count()
  • Imprimir todos os dados de uma linha:

nome_dataframe.iloc[[ordem_linha]]
# visualizar o dataframe dataframe1
# Visualizando toda a primeira coluna dataframe1 dataframe1.tempo
0 0 1 1 2 2 3 3 4 4 Name: tempo, dtype: object
# Visualizando o segundo elemento da primeira coluna dataframe1.tempo[[1]]
1 1 Name: tempo, dtype: object
# numero de elementos de cada coluna dataframe1.count()
tempo 5 velocidade 5 dtype: int64
# ver o conteúdo da linha de índice 1 do dataframe dataframe1.loc[[1]]
# ver o conteúdo de das linhas índice 1 e 3 dataframe1.loc[[1, 3]]
# ver o conteúdo da linha de índice 2 até o fim dataframe1.loc[2:]
--------------------------------------------------------------------------- NameError Traceback (most recent call last) <ipython-input-2-94eeb269a080> in <module>() 1 # ver o conteúdo da linha de índice 2 até o fim 2 ----> 3 dataframe1.loc[Integer(2):] NameError: name 'dataframe1' is not defined
# ver o conteúdo do início até a linha de índice 2 dataframe1.loc[:2]

Alterar Dados em um DataFrame

Editar dados em uma DataFrame

Para editar um dado em um dataframe:

nome_dataframe.nome_coluna[ordem_linha] = novo_valor

Exemplo 1: Alterar o valor da velocidade da linha de índice 2 para 55.0

# alterar dado dataframe1.velocidade[2] = 55.0 #visualizar dataframe dataframe1

Filtro de dados

É muito importante filtrar os dados de um dataframe de tal forma que seja exibido somente aqueles que estejam de acordo com determinadas especificações. Imagine selecionar somente os dados de velocidade de um carro de tal forma que somente velocidades acima de 5m/s sejam exibidas, é assim que a função query() (significa consulta) trabalha. Se a condição é satisfeita, as linhas de dados contendo as informações são exibidas.

  • Função query()

df.query('nome_dataframe operador dado') operador: > (maior), < (menor), <= (menor igual), >= (maior igual) , & (E), | (OU), != (diferente)
# visualizar dataframe dataframe1
# listar somente os dados velocidade maior que 1m/s dataframe1.query('velocidade > 1')
# listar somente as velocidades maiores que 1m/s cujo tempo é maior que 3s dataframe1.query('velocidade > 1 & tempo < 3')

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 (WIKIPEDIA, 2020).

Forma geral de um arquivo CSV na forma de texto:

nome_coluna_1 , nome_coluna_2 dado_linha_0_col_1 , dado_linha_0_col_2 dado_linha_1_col_1 , dado_linha_1_col_2 . , . . , . . , . dado_linha_m_col_1 , dado_linha_m_col_2

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

import pandas as pd nome_dataframe = pd.read_csv('arquivo.csv',index_col = 0)

index_col = 0 , corresponde a primeira coluna

#importar arquivo movel.csv import pandas as pd tabela = pd.read_csv('tabela.csv') #Visualizar a tabela tabela

Salvar dados em um Arquivo CSV

Sintaxe para salvar:

nome_dataframe.to_csv('nome_dataframe.csv')
# Salvando o dataframe em um Arquivo dataframe1.to_csv('dataframe1.csv')
# Lendo os dados gravados no arquivo CSV gravado no disco dataF1 = pd.read_csv('dataframe1.csv',index_col = 0) # visualizar o dataframe dataF1
# leitura direta do arquivo gravado em disco sem precisar importar o arquivo !cat dataframe1.csv
,tempo,velocidade 0,0,0 1,1,0.500000000000000 2,2,55.0 3,3,1.50000000000000 4,4,2.00000000000000

Manipular Colunas, Linhas, Dados e Concatenar Dataframes

Para adicionar uma nova coluna de dados ao DataFrame

dataframe['Nome_coluna'] = ['dado_1', 'dado_2',...,'dado_n']
# visualizar dataframe dataF1
# Adicionar uma nova coluna de dados no dataframe dataF1['Posição'] = [0, 0.05, 0.09, 0.15, 0.23] # visualizar dataframe como nova coluna dataF1

Para deletar uma coluna

Para deletar uma coluna

del nome_dataframe['nome_coluna'] ou nome_data_frame.pop('nome_coluna')

Para deletar mais de uma coluna

del nome_dataframe['nome_coluna1'], nome_dataframe['nome_coluna2'], ... , nome_dataframe['nome_coluna_N'] ou nome_data_frame.drop(['nome_coluna1','nome_coluna2'], axis = 1)
# visualizar dataframe antes de deletar a coluna dataF1
# deletar a coluna 'posição' do dataframe del dataF1['Posição']
# visualizar dataframe depois de deletar a coluna 'posição' dataF1

Para alterar nome de uma coluna

nome_dataframe.rename(columns={'nome_coluna': 'novo_nome_coluna'})

Exemplo 1: Alterar o nome da coluna 'tempo' para 'tempo_s', sendo o 's' de segundo.

# visualizar dataframe antes de renomear a coluna 'tempo' para 'tempo_s' dataF1
# renomear coluna 'tempo' para 'tempo_s' dataF1.rename(columns={'tempo': 'tempo_s'})

Para concatenar Dataframes

Horizontal Vertical

Exemplo 1: Criar um novo dataframe chamado 'Posição' contendo novos dados da posição do carro, importar o dataframe 'dataframe1.csv' com o nome de 'dataF1' e anexar (concatenação horizontal) o dataframe 'Posição' ao dataframe 'dataF1'.

# Novo Dataframe chamado 'Posição' Posicao = pd.DataFrame() Posicao['posição'] = [0, 0.05, 0.09, 0.15, 0.23] Posicao
# Importanto o datafame gravado em arquivo CSV dataF1 = pd.read_csv('dataframe1.csv',index_col = 0) # visualizando o dataframe dataF1
# Concatenação na Horizotal dataF1.join(Posicao)

Exemplo 2: Criar um novo dataframe chamado 'dataF1_1' contendo novas linhas de dados da posição e velocidade do carro, e anexá-lo (concatenação vertical) ao dataframe 'dataF1'.

# criar novo dataframe com novas linhad de dados dataF1_1 = pd.DataFrame() dataF1_1['tempo'] = [5, 6, 7] dataF1_1['velocidade'] = [2.0, 2.5, 3.0] # visualizar dataframe dataF1_1
# anexar novo dataframe ao dataframe 'dataF1' dataF1.append(dataF1_1, ignore_index = True)

Adicionar Linhas

A maneira mais prática de adicionar linhas em um DataFrame no Sage é através do comando loc. Sintaxe:

nome_dataframe.loc[posição_index] = lista_de_dados
import pandas as pd
# adicionar dados ao final do dataframe dataF1.loc[6] = [99, 77] dataF1

Para inserir mais de uma linha a soluão é concatenar na horizontal

Para deletar linhas e linhas com dados repetidos

dataframe.drop([posição_index])
# deletar ultima linha. dataF1.drop([len(dataF1)-1])
# OBSERVE QUE O DATAFRAME ORIGINAL NÃO É MODIFICADO dataF1
# para modificar o dataframe use uma atribuição dataF1 = dataF1.drop([len(dataF1) - 1])
dataF1
# deletar mais de uma linha. # OBSERVE QUE O DATAFRAME ORIGINAL NÃO É MODIFICADO dataF1.drop([1, 2])
# eliminar lihas duplicadas. OBSERVE QUE O DATAFRAME ORIGINAL NÃO É MODIFICADO dataF1.drop_duplicates()

Para ordenar os elementos de um Dataframe

  • Ordenar por índice

dataF1.sort_index()
  • Ordenar por valor

dataF1.sort_values('velocidade')