Os DataFrames são estruturas de dados tabulares bidimensionais, com tamanho considerável e potencialmente heterogêneos.
A estrutura de dados contém eixos rotulados com linhas e colunas e operações aritméticas alinhadas nos rótulos.
Pode ser pensado como um contêiner para os objetos das séries.
É a estrutura primária da biblioteca de dados do Pandas.
class pandas.DataFrame(data=None, index=None, columns=None, dtype=None, copy=None)
Parâmetros:
Importamos as bibliotecas:
import pandas as pd
import numpy as np
Criamos os dataframes usados nos exemplos.
Dataframe de pessoas df_pessoas:
df_pessoas = pd.DataFrame({
'Nome' : ['Roberto', 'Rosana', 'Pedro', 'Dora'],
'Idade' : [25, 30, 35, 40],
'Altura' : [165, 180, 175, 185],
'Sexo' : ['M', 'F', 'M', 'F'],
'Peso' : [65, 70, 75, 80],
'IMC' : [22.2, 23.4, 25.6, 27.8],
'Salario' : [2500, 3000, 3500, 4000]
})
Dataframe de cidades df_cidades:
df_cidades = pd.DataFrame({
'Cidade' : ['Belo Horizonte', 'São Paulo', 'Rio de Janeiro', 'Salvador'],
'Bairros' : [['Sion', 'Pampulha'], ['Morumbi', 'Liberdade'], ['Leblon', 'Copacabana'], ['Pelourinho', 'Liberdade']],
'Mês' : ['Janeiro', 'Fevereiro', 'Janeiro', 'Fevereiro'],
'Vendas' : [100, 150, 90, 120]
})
A classe pandas.DataFrame é uma estrutura de dados tabulares bidimensional com rótulos de eixos (linhas e colunas), mutáveis em tamanho e potencialmente heterogêneos, sendo amplamente utilizada para manipulação e análise de dados em Python.
class pandas.DataFrame(data=None, index=None, dtype=None, name=None, copy=None, fastpath=False)
onde:
Pode ser um ndarray (estruturado ou homogêneo), um iterável, um dicionário ou outro DataFrame. Se for um dicionário, pode conter séries, matrizes, constantes, classes de dados ou objetos semelhantes a listas. Quando um dicionário contém Series com um índice definido, o alinhamento é feito pelo índice.
import pandas as pd
# Criando um DataFrame a partir de um dicionário
data = {
'A': [1, 2, 3, 4],
'B': [5, 6, 7, 8],
'C': [9, 10, 11, 12]
}
df = pd.DataFrame(data)
print("DataFrame criado a partir de um dicionário:")
print(df)
# Criando um DataFrame a partir de uma lista de dicionários
data_list = [
{'A': 1, 'B': 5, 'C': 9},
{'A': 2, 'B': 6, 'C': 10},
{'A': 3, 'B': 7, 'C': 11},
{'A': 4, 'B': 8, 'C': 12}
]
df_list = pd.DataFrame(data_list)
print("\nDataFrame criado a partir de uma lista de dicionários:")
print(df_list)
# Especificando índices e nomes das colunas
df_custom = pd.DataFrame(data, index=['a', 'b', 'c', 'd'], columns=['A', 'B', 'C'])
print("\nDataFrame com índice e colunas personalizados:")
print(df_custom)
# Forçando o dtype e copiando os dados
df_dtype = pd.DataFrame(data, dtype=float, copy=True)
print("\nDataFrame com dtype forçado para float:")
print(df_dtype)
Neste exemplo:
1. Criamos um DataFrame a partir de um dicionário.
2. Criamos um DataFrame a partir de uma lista de dicionários.
3. Personalizamos os índices e nomes das colunas do DataFrame.
4. Forçamos o dtype para `float` e copiamos os dados.
Essas funcionalidades demonstram a flexibilidade e a versatilidade da classe `pandas.DataFrame` para manipulação de dados em Python.
Índice a ser usado para o DataFrame resultante. O padrão é `RangeIndex` se nenhuma informação de indexação estiver presente nos dados de entrada e nenhum índice for fornecido.
Claro, aqui está um exemplo usando o parâmetro `index` ao criar um DataFrame:
import pandas as pd
# Criando um DataFrame a partir de um dicionário
data = {
'Nome': ['Ana', 'Bruno', 'Carla', 'Daniel'],
'Idade': [23, 35, 30, 28],
'Cidade': ['São Paulo', 'Rio de Janeiro', 'Belo Horizonte', 'Curitiba']
}
# Especificando um índice personalizado
indices_personalizados = ['ID1', 'ID2', 'ID3', 'ID4']
# Criando o DataFrame com o índice personalizado
df = pd.DataFrame(data, index=indices_personalizados)
print("DataFrame com índice personalizado:")
print(df)
Neste exemplo, criamos um DataFrame com informações sobre pessoas, incluindo seus nomes, idades e cidades.
Em vez de usar o índice padrão `RangeIndex` (0, 1, 2, 3), especificamos um índice personalizado usando o parâmetro `index`.
O DataFrame resultante tem os índices `ID1`, `ID2`, `ID3` e `ID4`.
Nomes das colunas, opcionais. Se `None`, o padrão será usar `RangeIndex` (0, 1, 2, ..., n). Se os dados contiverem rótulos de colunas, esses rótulos serão utilizados.
Claro! Aqui está um exemplo de como usar o parâmetro `dtype` ao criar um DataFrame:
import pandas as pd
# Criando um DataFrame a partir de um dicionário
data = {
'Nome': ['Ana', 'Bruno', 'Carla', 'Daniel'],
'Idade': [23, 35, 30, 28],
'Altura': [1.65, 1.80, 1.75, 1.68]
}
# Especificando o dtype para forçar todas as colunas para o tipo string
df = pd.DataFrame(data, dtype=str)
print("DataFrame com dtype forçado para string:")
print(df)
# Verificando os tipos das colunas
print("\nTipos das colunas:")
print(df.dtypes)
Neste exemplo, criamos um DataFrame com informações sobre pessoas, incluindo seus nomes, idades e alturas.
Utilizamos o parâmetro `dtype` para forçar todas as colunas a serem do tipo str.
Neste DataFrame, todas as colunas são forçadas a serem do tipo `string` (`object` em termos de pandas), independentemente dos tipos de dados originais fornecidos no dicionário.
Tipo de dados a ser forçado para todas as colunas. Apenas um único dtype é permitido. Se `None`, o tipo de dado será inferido.
Claro! Aqui está um exemplo de como usar o parâmetro `dtype` ao criar um DataFrame:
import pandas as pd
# Criando um DataFrame a partir de um dicionário
data = {
'Nome': ['Ana', 'Bruno', 'Carla', 'Daniel'],
'Idade': [23, 35, 30, 28],
'Altura': [1.65, 1.80, 1.75, 1.68]
}
# Especificando o dtype para forçar todas as colunas para o tipo string
df = pd.DataFrame(data, dtype=str)
print("DataFrame com dtype forçado para string:")
print(df)
# Verificando os tipos das colunas
print("\nTipos das colunas:")
print(df.dtypes)
Neste exemplo, criamos um DataFrame com informações sobre pessoas, incluindo seus nomes, idades e alturas. Utilizamos o parâmetro `dtype` para forçar todas as colunas a serem do tipo `string`.
Neste DataFrame, todas as colunas são forçadas a serem do tipo `string` (`object` em termos de pandas), independentemente dos tipos de dados originais fornecidos no dicionário.
Indica se os dados devem ser copiados. Para dados de dicionário, o padrão `None` se comporta como `copy=True`. Para entrada de DataFrame ou ndarray 2D, o padrão `None` se comporta como `copy=False`.
Claro! Aqui está um exemplo de como usar o parâmetro `copy` ao criar um DataFrame:
import pandas as pd
# Criando um DataFrame a partir de um dicionário
data = {
'Nome': ['Ana', 'Bruno', 'Carla', 'Daniel'],
'Idade': [23, 35, 30, 28],
'Cidade': ['São Paulo', 'Rio de Janeiro', 'Belo Horizonte', 'Curitiba']
}
# Criando um DataFrame original
df_original = pd.DataFrame(data)
# Criando um DataFrame com copy=False
df_no_copy = pd.DataFrame(data, copy=False)
# Modificando o DataFrame original
df_original['Idade'][0] = 99
print("DataFrame original modificado:")
print(df_original)
print("\nDataFrame com copy=False (sem cópia dos dados):")
print(df_no_copy)
# Criando um DataFrame com copy=True
df_with_copy = pd.DataFrame(data, copy=True)
# Modificando o DataFrame original novamente
df_original['Idade'][0] = 23
print("\nDataFrame com copy=True (dados copiados):")
print(df_with_copy)
Neste exemplo, criamos três DataFrames:
1. `df_original`: O DataFrame original criado a partir do dicionário de dados.
2. `df_no_copy`: Um DataFrame criado com `copy=False`, significando que os dados não são copiados.
3. `df_with_copy`: Um DataFrame criado com `copy=True`, significando que os dados são copiados.
Quando `copy=False`, o DataFrame `df_no_copy` compartilha os mesmos dados subjacentes que `df_original`, portanto, modificações em um afetam o outro.
Quando `copy=True`, o DataFrame `df_with_copy` tem uma cópia independente dos dados, então modificações em `df_original` não afetam `df_with_copy`.
index | Retorna o índice (rótulos de linha) do dataframe |
values | Retorna uma representação Numpy do dataframe |
columns | Retorna os rótulos das colunas do dataframe |
dtypes | Retorna os dtypes no dataframe |
info() | Retorna um resumo conciso de um dataframe |
select_dtypes() | Retorna um subconjunto de colunas do DataFrame com base nos dtypes da coluna. |
axes | Retorna uma lista representando os eixos do dataframe |
ndim | Retorna um int representando o número de eixos/dimensões da matriz. |
size | Retorna um int representando o número de elementos neste objeto. |
shape | Retorna uma tupla que representa a dimensionalidade do dataframe |
empty | Retorna se o dataframe está vazio. |
flags | Retorna um objeto com sinalizadores atualizados. |
set_flags() | Retorna um novo objeto com sinalizadores atualizados. |
memory_usage() | Retorna o uso de memória de cada coluna em bytes. |
Dataframe original df_pessoas para comparação.
print(df_pessoas)
Retorna o índice (rótulos de linha) do dataframe
DataFrame.index
O índice (rótulos de linha) do DataFrame.
O índice de um DataFrame é uma série de rótulos que identificam cada linha.
Os rótulos podem ser inteiros, textos ou qualquer outro tipo hash.
O índice é usado para acesso e alinhamento baseado em rótulo e pode ser acessado ou modificado usando este atributo.
print(df_pessoas.index)
Valores do DataFrame.
DataFrame.values
Retorna uma representação Numpy somente com os valores do DataFrame, os rótulos dos eixos são removidos.
print(df_pessoas.values)
Rótulos das colunas do DataFrame.
DataFrame.columns
Retorna os nomes das colunas do DataFrame.
print(df_pessoas.columns)
Retorne os dtypes no DataFrame.
DataFrame.dtypes
Isso retorna uma série com o tipo de dados de cada coluna.
O índice do resultado são as colunas do DataFrame original.
Colunas com tipos mistos são armazenadas com o dtype object .
print(df_pessoas.dtypes)
Resumo conciso de um DataFrame
DataFrame.info(verbose=None, buf=None, max_cols=None, memory_usage=None, show_counts=None)
Este método imprime informações sobre um DataFrame, incluindo o tipo de índice e colunas, valores não nulos e uso de memória.
print(df_pessoas.info())
Subconjunto de colunas de um tipo.
DataFrame.select_dtypes(include=None, exclude=None)
Retorna um subconjunto de colunas do DataFrame com base nos dtypes da coluna.
print(df_pessoas.select_dtypes(include=[np.number]))
Eixos do DataFrame
DataFrame.axes
Retorna uma lista representando os eixos do DataFrame, contendo os rótulos dos eixos das linhas e dos eixos das colunas como os únicos membros, nessa ordem.
print(df_pessoas.axes)
Número de Dimensões.
DataFrame.ndim
Retorna um int representando o número de eixos/dimensões da matriz: 1 para Series, 2 para DataFrame.
print(df_pessoas.ndim)
Número de Elementos.
DataFrame.size
Retorna um int representando o número de elementos neste objeto.
print(df_pessoas.size)
Dimensões (linhas,colunas).
DataFrame.shape
Retorna uma tupla que representa a dimensionalidade do dataframe
print(df_pessoas.shape)
Retorna se o DataFrame está vazio.
DataFrame.empty
Verdadeiro se Series/DataFrame estiver totalmente vazio (sem itens), o que significa que qualquer um dos eixos tem comprimento 0.
print(df_pessoas.empty)
Sinalizadores.
class pandas.Flags(obj, *, allows_duplicate_labels)
Retorna um novo objeto com sinalizadores atualizados.
df_aux = pd.DataFrame({
'A': [1, 1, 1, 2, 3 , 3, 3],
'B': [4, 5, 4, 6, 6 , 2, 6],
})
print(df_aux.flags)
df_aux.flags.allows_duplicate_labels = False
print(df_aux.flags)
Sinalizadores.
DataFrame.set_flags(allows_duplicate_labels=None)
Retorna o uso em bytes de memória de cada coluna.
DataFrame.memory_usage(index=True, deep=False)
O uso de memória pode incluir opcionalmente a contribuição do índice e elementos do tipo de objeto.
print(df_pessoas.memory_usage())
Este valor é exibido em DataFrame.info() por padrão. Isso pode ser suprimido definindo pandas.options.display.memory_usage como False.
astype() | Transmita um objeto pandas para um dtype especificado dtype. |
convert_dtypes() | Converter colunas nos melhores dtypes possíveis usando dtypes que suportam pd.NA. |
infer_objects() | Tente inferir melhores dtypes para colunas de objetos. |
copy() | Fazer uma cópia dos índices e dados deste objeto. |
bool() | (DEPRECADO) Retorna o bool de um único elemento Series ou dataframe |
Converter para tipo especificado.
DataFrame.astype(dtype, copy=None, errors='raise')
Converte um objeto pandas para um dtype especificado.
df_aux = df_pessoas.copy()
df_aux['Idade'] = df_aux['Idade'].astype(float)
print(df_aux)
Conversão de tipos.
DataFrame.convert_dtypes(infer_objects=True, convert_string=True, convert_integer=True, convert_boolean=True, convert_floating=True, dtype_backend='numpy_nullable')
Converte colunas nos melhores dtypes possíveis usando dtypes que suportam pd.NA.
print(df_pessoas.convert_dtypes())
Inferência de tipo.
DataFrame.infer_objects(copy=None)
Tenta inferir melhores dtypes para colunas de objetos, com a conversão suave de colunas de tipos de objetos conversíveis, deixando inalteradas colunas não-objeto e não conversíveis.
As regras de inferência são as mesmas da construção normal de Série/DataFrame.
df_aux = df_pessoas.copy()
print("*** antes")
print(df_aux.info())
print()
df_aux['Salario'] = df_aux['Salario'].infer_objects()
print("*** depois")
print(df_aux.info())
Cópia de Dataframe.
DataFrame.copy(deep=None)
Faça uma cópia dos índices e dados do DataFrame.
Quando deep=True(padrão), um novo objeto será criado com uma cópia dos dados e índices do objeto chamador. Modificações nos dados ou índices da cópia não serão refletidas no objeto original.
Quando deep=False, um novo objeto será criado sem copiar os dados ou índice do objeto chamador (somente as referências aos dados e ao índice são copiadas). Quaisquer alterações nos dados do original serão refletidas na cópia superficial (e vice-versa).
df_copia = df_pessoas.copy()
df_copia['Idade'] = 50
print(df_copia)
head() | Retornar as primeiras n linhas. |
tail([n]) | Retornar as últimas n linhas. |
at() | Acesse um único valor para um par de rótulos de linha/coluna. |
iat() | Acesse um único valor para um par de linha/coluna por posição inteira. |
loc() | Acesse um grupo de linhas e colunas por rótulo(s) ou uma matriz booleana. |
iloc() | Indexação puramente baseada em localização inteira para seleção por posição. |
insert() | Insira a coluna no DataFrame no local especificado. |
items() | Iterar sobre pares (nome da coluna, série). |
keys() | Obtenha o 'eixo de informações'. |
iterrows() | Iterar sobre linhas do DataFrame como pares (índice, série). |
itertuples() | Iterar sobre linhas do DataFrame como nomeadastuplas. |
pop(item) | Retornar o item e solte-o do quadro. |
xs() | Seção transversal de retorno da Série/Dataframe. |
get() | Obtenha o item do objeto para determinada chave (ex: coluna DataFrame). |
isin() | Se cada elemento no DataFrame está contido em valores. |
where() | Substitua os valores onde a condição for Falsa. |
mask() | Substitua os valores onde a condição for True. |
query() | Consulte as colunas de um DataFrame com uma expressão booleana. |
__iter__() | Iterar sobre o eixo de informações. |
Retorne as primeiras n linhas.
DataFrame.head(n=5)
Esta função retorna as primeiras n linhas do objeto com base na posição. É útil para testar rapidamente se o seu objeto contém o tipo certo de dados.
Para valores negativos de n , esta função retorna todas as linhas, exceto a última |n| linhas, equivalente a df[:n].
Se n for maior que o número de linhas, esta função retornará todas as linhas.
print(df_pessoas.head(2))
Retornar as últimas n linhas.
DataFrame.tail(n=5)
Esta função retorna as últimas n linhas do objeto com base na posição. É útil para verificar dados rapidamente, por exemplo, após classificar ou anexar linhas.
Para valores negativos de n , esta função retorna todas as linhas, exceto as primeiras |n| linhas, equivalente a df[|n|:].
Se n for maior que o número de linhas, esta função retornará todas as linhas.
print(df_pessoas.tail(2))
Localização por rótulo.
DataFrame.loc[rótulo]
Acesse um grupo de linhas e colunas por rótulo(s) ou uma matriz booleana.
.loc[] é principalmente baseado em rótulo, mas também pode ser usado com uma matriz booleana.
As entradas permitidas são:
print(df_pessoas.loc[1:2,['Nome','Idade']])
Acessar um único valor para um par de rótulos de linha/coluna
DataFrame.at[rótulo]
Semelhante a loc, pois ambos fornecem pesquisas baseadas em rótulos. Use at() se você precisar apenas obter ou definir um único valor em um DataFrame ou Série.
print(df_pessoas.at[1, 'Nome'])
Localização por posição.
DataFrame.iloc[pos]
Indexação puramente baseada em localização inteira para seleção por posição.
.iloc[] é principalmente baseado em posição inteira (de 0 a tamanho-1 do eixo), mas também pode ser usado com uma matriz booleana.
As entradas permitidas são:
.iloc aumentará IndexError se um indexador solicitado estiver fora dos limites, exceto indexadores de fatia que permitem indexação fora dos limites (isso está em conformidade com a semântica de fatia python/numpy).
Valor na posição (2, 0).
print(df_pessoas.iloc[2,0])
Retorna valor de linha/coluna.
DataFrame.iat[linha, coluna]
Acesse um único valor para um par de linha/coluna por posição inteira.
Semelhante a iloc, pois ambos fornecem pesquisas baseadas em números inteiros. Use iat se você precisar apenas obter ou definir um único valor em um DataFrame ou Série.
print(df_pessoas.iat[2, 2])
Consulta as colunas de um DataFrame com uma expressão booleana.
DataFrame.query(expr, *, inplace = False, ** kwargs)
Seleção usando query para Idade > 30 com o DataFrame df_pessoas.
print(df_pessoas.query("Idade > 30"))
Os operadores aritméticos (+ , - , * , / , // , % , **) equivalem às funções binárias (add , sub , mul , div , floordiv , mod , pow).
Os operadores de comparação (== , != , <= , < , >= , >) equivalem às funções binárias (eq , ne , le , lt , ge , gt).
__add__() | Obtenha adição de DataFrame e outros, em colunas. |
add() | Obtenha adição de dataframe e outros elementos (operador binário add). |
sub() | Obtenha subtração de dataframe e outros, elemento a elemento (operador binário sub). |
mul() | Obtenha a multiplicação de dataframe e outros elementos (operador binário mul). |
div() | Obtenha a divisão flutuante do dataframe e outros elementos (operador binário truediv). |
truediv() | Obtenha a divisão flutuante do dataframe e outros elementos (operador binário truediv). |
floordiv() | Obtenha a divisão inteira do dataframe e outros elementos (operador binário floordiv). |
mod() | Obtenha o módulo do dataframe e outros elementos (operador binário mod). |
pow() | Obtenha o poder exponencial do dataframe e outros elementos (operador binário pow). |
dot() | Calcule a multiplicação da matriz entre o DataFrame e outro. |
radd() | Obtenha adição de dataframe e outros elementos (operador binário radd). |
rsub() | Obtenha subtração de dataframe e outros elementos (operador binário rsub). |
rmul() | Obtenha a multiplicação de dataframe e outros elementos (operador binário rmul). |
rdiv() | Obtenha a divisão flutuante do dataframe e outros elementos (operador binário rtruediv). |
rtruediv() | Obtenha a divisão flutuante do dataframe e outros elementos (operador binário rtruediv). |
rfloordiv() | Obtenha a divisão inteira do dataframe e outros elementos (operador binário rfloordiv). |
rmod() | Obtenha o módulo do dataframe e outros elementos (operador binário rmod). |
rpow() | Obtenha o poder exponencial do dataframe e outros elementos (operador binário rpow). |
lt() | Obtenha menos de dataframe e outros elementos (operador binário lt). |
gt() | Obtenha maior que do dataframe e outros elementos (operador binário gt). |
le() | Obtenha menor ou igual a dataframe e outro, elemento a elemento (operador binário le). |
ge() | Obtenha maior ou igual a dataframe e outros, elemento a elemento (operador binário ge). |
ne() | Obtenha Diferente de dataframe e outro, elemento a elemento (operador binário ne). |
eq() | Obtenha igual a dataframe e outro, elemento a elemento (operador binário eq). |
combine() | Execute a combinação em colunas com outro dataframe |
combine_first() | Atualize elementos nulos com valor no mesmo local em other. |
import pandas as pd
# Criar dois DataFrames de exemplo
df1 = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
df2 = pd.DataFrame({'A': [7, 8, 9], 'B': [10, 11, 12]})
print("df1", df1)
print()
print("df2", df2)
Adição de dataframes.
DataFrame.add(DataFrame.add(outro, axis='columns', level=None, fill_value=None))
Obtenha adição de dataframe e outros elementos (operador binário add ).
Equivalente a DataFrame + outro, mas com suporte para substituir um fill_value por dados faltantes em uma das entradas.
A função radd() é a versão reversa.
print(df1.add(df2))
Subtração de dataframes.
DataFrame.sub(DataFrame.sub(outro, axis='columns', level=None, fill_value=None))
Obtenha subtração de dataframe e outros, elemento a elemento (operador binário sub).
print(df1.sub(df2))
Equivalente a DataFrame - outro, mas com suporte para substituir um fill_value por dados faltantes em uma das entradas.
A função rsub() é a versão reversa.
Multiplicação de dataframes.
DataFrame.mul(DataFrame.mul(outro, axis='columns', level=None, fill_value=None))
Obtenha a multiplicação de dataframe e outros elementos (operador binário mul ).
print(df1.mul(df2))
Equivalente a DataFrame * outro, mas com suporte para substituir um fill_value por dados faltantes em uma das entradas.
A função rmul() é a versão reversa.
Divisão de dataframes.
DataFrame.div(DataFrame.div(outro, axis='columns', level=None, fill_value=None))
Obtenha a divisão flutuante do dataframe e outros elementos (operador binário truediv ).
print(df1.div(df2))
Equivalente a DataFrame / outro, mas com suporte para substituir um fill_value por dados faltantes em uma das entradas.
A função rtruediv() é a versão reversa.
Divisão flutuante de dataframes.
DataFrame.floordiv(DataFrame.floordiv(outro, axis='columns', level=None, fill_value=None))
Obtenha a divisão inteira do dataframe e outros elementos (operador binário floordiv ).
print(df1.floordiv(df2))
Equivalente a DataFrame // outro, mas com suporte para substituir um fill_value por dados faltantes em uma das entradas.
A função rfloordiv() é a versão reversa.
Módulo de dataframes.
DataFrame.mod(DataFrame.mod(outro, axis='columns', level=None, fill_value=None))
Obtenha o módulo do dataframe e outros elementos (operador binário mod ).
print(df1.mod(df2))
Equivalente a DataFrame % outro, mas com suporte para substituir um fill_value por dados faltantes em uma das entradas.
A função rmod() é a versão reversa.
Potência de dataframes.
DataFrame.pow(DataFrame.pow(outro, axis='columns', level=None, fill_value=None))
Obtenha o poder exponencial do dataframe e outros elementos (operador binário pow).
print(df1.pow(df2))
Equivalente a DataFrame ** outro, mas com suporte para substituir um fill_value por dados faltantes em uma das entradas.
A função rpow() é a versão reversa.
Verificação de Igualdade.
Obtenha igual a dataframe e outro, elemento a elemento (operador binário eq).
print(df1.eq(df2))
Equivalente a DataFrame == outro, mas com suporte para substituir um fill_value por dados faltantes em uma das entradas.
Combinação de DataFrames.
DataFrame.combine(outro, func, fill_value=None, overwrite=True)
Execute a combinação em colunas com outro DataFrame.
df3 = pd.DataFrame({'A': [10, 20, 30], 'B': [40, 50, 60]})
print(df1.combine(df3, lambda x, y: x if x[0] > y[0] else y))
Combina um DataFrame com outro DataFrame usando func para combinar colunas elemento a elemento. Os índices de linha e coluna do DataFrame resultante serão a união dos dois.
Combinação de índices.
DataFrame.combine_first(outro)
Atualize elementos nulos com valor no mesmo local em other .
df4 = pd.DataFrame({'A': [5, 6, 7], 'B': [11, 12, 13]})
combinado_primeiro = df1.combine_first(df4)
print(combinado_primeiro)
Combine dois objetos DataFrame preenchendo valores nulos em um DataFrame com valores não nulos de outro DataFrame.
Os índices de linha e coluna do DataFrame resultante serão a união dos dois.
O dataframe resultante contém os 'primeiros' valores do dataframe e substitui os valores do segundo, onde first.loc[index, col] e second.loc[index, col] não são valores ausentes, ao chamar first.combine_first(second).
apply() | Aplique uma função ao longo de um eixo do dataframe |
map() | Aplicar uma função a um Dataframe elemento a elemento. |
applymap() | (OBSTO) Aplicar uma função a um Dataframe elemento a elemento. |
pipe() | Aplique funções encadeadas que esperam Series ou DataFrames. |
agg() | Agregue usando uma ou mais operações no eixo especificado. |
aggregate() | Agregue usando uma ou mais operações no eixo especificado. |
transform() | Chame funca autoprodução de um DataFrame com o mesmo formato de eixo que o self. |
groupby() | Agrupe DataFrame usando um mapeador ou por uma série de colunas. |
rolling() | Fornece cálculos de janela rolante. |
expanding() | Fornece cálculos de janela de expansão. |
ewm() | Fornece cálculos ponderados exponencialmente (EW). |
Aplique uma função ao longo de um eixo do DataFrame.
DataFrame.apply(func, axis=0, raw=False, result_type=None, args=(), by_row='compat', **kwargs)
Os objetos passados para a função são objetos Series cujo índice é o índice do DataFrame ( axis=0) ou as colunas do DataFrame ( axis=1).
Por padrão (result_type=None), o tipo de retorno final é inferido do tipo de retorno da função aplicada. Caso contrário, depende do argumento result_type.
O exemplo a seguir cria um DataFrame de exemplo e aplica uma função para cada elemento.
def duplicar_idade(x):
return x * 2
#
df_pessoas['Idade_Duplicada'] = df_pessoas['Idade'].apply(duplicar_idade)
print(df_pessoas)
Aplicar uma função a um Dataframe elemento a elemento.
DataFrame.map(func, na_action=None, **kwargs)
Este método aplica uma função que aceita e retorna um escalar para cada elemento de um DataFrame.
def saudacao(nome):
return f"Olá, {nome}"
df_pessoas['Saudacao'] = df_pessoas['Nome'].map(saudacao)
print(df_pessoas)
Agregue usando uma ou mais operações no eixo especificado.
DataFrame.agg(func, axis=0, *args, **kwargs)
Agregação da média da Idade e soma do Salário.
print(df_pessoas.agg({'Idade': 'mean', 'Salario': 'sum'}))
Transformação, com DataFrame após normalização da Idade por Salário.
DataFrame.transform(func, axis=0, *args, **kwargs)
Passe uma funcão como argumento para retornar um DataFrame com o mesmo formato de eixo que o DataFrame de origem.
def normalizar_idade(x):
return (x - x.mean()) / x.std()
df_pessoas['Idade_Normalizada'] = df_pessoas.groupby('Salario')['Idade'].transform(normalizar_idade)
print(df_pessoas)
Fornece cálculos de janela rolante.
DataFrame.rolling(janela, min_periods=None, center=False, win_type=None, on=None, axis=_NoDefault.no_default, closed=None, step=None, method='single')
Janelas rolantes genéricas suportam a especificação de janelas como um número fixo de observações ou um número variável de observações com base em um deslocamento.
Se um deslocamento baseado em tempo for fornecido, o índice baseado em tempo correspondente deverá ser monotônico.
print(df_pessoas['Salario'].rolling(window=2).mean())
Média Ponderada Exponencial.
DataFrame.ewm(com=None, span=None, halflife=None, alpha=None, min_periods=0, Adjust=True, ignore_na=False, axis=_NoDefault.no_default, times=None, method='single')
Fornece cálculos ponderados exponencialmente (EW).
media_ponderada = df_pessoas['Idade'].ewm(span=2).mean()
print(media_ponderada)
abs() | Retornar uma Série/DataFrame com valor numérico absoluto de cada elemento. |
all() | Retornar se todos os elementos são Verdadeiros, potencialmente sobre um eixo. |
any() | Retornar se algum elemento é True, potencialmente sobre um eixo. |
clip() | Corte os valores no(s) limite(s) de entrada. |
corr() | Calcule a correlação de pares de colunas, excluindo valores NA/nulos. |
corrwith() | Calcule a correlação de pares. |
count() | Conte células não-NA para cada coluna ou linha. |
cov() | Calcule a covariância pareada de colunas, excluindo valores NA/nulos. |
cummax() | Retornar o máximo cumulativo em um eixo DataFrame ou Série. |
cummin() | Retornar o mínimo cumulativo em um eixo DataFrame ou Série. |
cumprod() | Retornar o produto cumulativo em um eixo DataFrame ou Série. |
cumsum() | Retornar a soma cumulativa em um eixo DataFrame ou Série. |
describe() | Gerar estatísticas descritivas. |
diff() | Primeira diferença discreta de elemento. |
eval() | Avalie um texto que descreve operações em colunas dataframe |
kurt() | Retornar a curtose imparcial sobre o eixo solicitado. |
kurtosis() | Retornar a curtose imparcial sobre o eixo solicitado. |
max() | Retornar o máximo dos valores sobre o eixo solicitado. |
mean() | Retornar a média dos valores no eixo solicitado. |
median() | Retornar a mediana dos valores no eixo solicitado. |
min() | Retornar o mínimo dos valores no eixo solicitado. |
mode() | Obtenha o(s) modo(s) de cada elemento ao longo do eixo selecionado. |
pct_change() | Mudança fracionária entre o elemento atual e um elemento anterior. |
prod() | Retornar o produto dos valores no eixo solicitado. |
product() | Retornar o produto dos valores no eixo solicitado. |
quantile() | Retornar valores no quantil fornecido sobre o eixo solicitado. |
rank() | Calcule classificações de dados numéricos (1 a n) ao longo do eixo. |
round() | Arredonde um DataFrame para um número variável de casas decimais. |
sem() | Retornar o erro padrão imparcial da média sobre o eixo solicitado. |
skew() | Retornar a inclinação imparcial sobre o eixo solicitado. |
sum() | Retornar a soma dos valores no eixo solicitado. |
std() | Retornar o desvio padrão da amostra sobre o eixo solicitado. |
var() | Retornar a variação imparcial sobre o eixo solicitado. |
nunique() | Contar o número de elementos distintos no eixo especificado. |
value_counts() | Retornar uma série contendo a frequência de cada linha distinta no dataframe |
O exemplo a seguir cria um DataFrame de exemplo e aplica uma função para cada elemento.
Criar um DataFrame de exemplo:
Valores numéricos absolutos.
DataFrame.abs()
Retorna uma Série/DataFrame com o valor numérico absoluto de cada elemento.
Esta função se aplica apenas a elementos numéricos.
print(df_pessoas[['Idade', 'Salario']].abs())
Testa se todos valores são verdadeiros.
DataFrame.all(axis=0, bool_only=False, skipna=True, **kwargs)
Retorna se todos os elementos são Verdadeiros, potencialmente sobre um eixo.
Retorna True, a menos que haja pelo menos um elemento dentro de uma série ou ao longo de um eixo do Dataframe que seja False ou equivalente (por exemplo, zero ou vazio).
print(df_pessoas.all())
Qualquer valor booleano.
print(df_pessoas.any())
Correlação de Pares entre Colunas.
print(df_pessoas.corr())
Dados estatísticos dos salários do dataframe de pessoas df_pessoas.
salarios = df_pessoas['Salario']
print(f"Média....................: {salarios.mean()}")
print(f"Máximo...................: {salarios.max()}")
print(f"Mínimo...................: {salarios.min()}")
print(f"Módulo...................:\n{salarios.mode()}")
print(f"Mediana..................: {salarios.median()}")
print(f"Moda.....................:\n{salarios.mode()}")
print(f"Variação.................: {salarios.var()}")
print(f"Desvio Padrão............: {salarios.std()}")
print(f"Inclinação...............: {salarios.skew()}")
print(f"Curtose..................: {salarios.kurt()}")
print(f"Curtose..................: {salarios.kurtosis()}")
print(f"Quartis..................: {salarios.quantile()}")
print(f"Classificações...........:\n{salarios.rank()}")
print(f"Arredondamento...........:\n{salarios.round()}")
print(f"Arredondamento 2 casas...:\n{salarios.round(2)}")
print(f"Soma.....................: {salarios.sum()}")
print(f"Distintos................: {salarios.nunique()}")
print(f"Contagem de Distintos ...:\n{salarios.value_counts()}")
add_prefix() | Rótulos de prefixo com prefixo de string . |
add_suffix() | Rótulos de sufixo com sufixo de string . |
align() | Alinhe dois objetos em seus eixos com o método de junção especificado. |
at_time() | Selecione valores em um horário específico do dia (por exemplo, 9h30). |
between_time() | Selecione valores entre horários específicos do dia (por exemplo, 9h00-9h30). |
drop() | Elimine rótulos especificados de linhas ou colunas. |
drop_duplicates() | Retornar o DataFrame com as linhas duplicadas removidas. |
duplicated() | Retornar uma série booleana denotando linhas duplicadas. |
equals() | Teste se dois objetos contêm os mesmos elementos. |
filter() | Subdividir as linhas ou colunas do dataframe de acordo com os rótulos de índice especificados. |
first() | Selecione períodos iniciais de dados de série temporal com base em um deslocamento de data. |
head() | Retornar as primeiras n linhas. |
idxmax() | Índice de retorno da primeira ocorrência do máximo no eixo solicitado. |
idxmin() | Índice de retorno da primeira ocorrência do mínimo sobre o eixo solicitado. |
last() | Selecione períodos finais de dados de série temporal com base em um deslocamento de data. |
reindex() | Adapte o DataFrame ao novo índice com lógica de preenchimento opcional. |
reindex_like() | Retornar um objeto com índices correspondentes como outro objeto. |
rename() | Renomeie colunas ou rótulos de índice. |
rename_axis() | Defina o nome do eixo para o índice ou colunas. |
reset_index() | Redefina o índice ou um nível dele. |
sample() | Retornar uma amostra aleatória de itens de um eixo do objeto. |
set_axis() | Atribua o índice desejado a um determinado eixo. |
set_index() | Defina o índice DataFrame usando colunas existentes. |
tail() | Retornar as últimas n linhas. |
take() | Retornar os elementos nos índices posicionais fornecidos ao longo de um eixo. |
truncate() | Truncar uma série ou DataFrame antes e depois de algum valor de índice. |
DataFrame com prefixo nos rótulos das colunas.
print(df_pessoas.add_prefix('Pref_'))
DataFrame com sufixo nos rótulos das colunas
print(df_pessoas.add_suffix('_Suff'))
DataFrame com colunas 'Nome' e 'Idade' mantidas
print(df_pessoas.filter(items=['Nome', 'Idade'], axis=1))
DataFrame com a coluna 'Nome' renomeada para 'Nome Completo'
print(df_pessoas.rename(columns={'Nome': 'Nome Completo'}))
DataFrame com novo índice.
print(df_pessoas.reindex(['a', 'b', 'c', 'd']))
Amostra aleatória de 2 linhas do DataFrame
print(df_pessoas.sample(n=2))
isna() | Retorna True para existência de valores ausentes e False para todos valores existentes. |
isnull() | Retorna True para valores ausentes, isnull é um alias para isna. |
notna() | Retorna True para todos valores existentes e False para valores ausentes. |
notnull() | Retorna True para todos valores existentes, notnull é um alias para notna. |
dropna() | Retorna a série com os valores ausentes removidos. |
fillna() | Retorna a série com os valores NA/NaN preenchidos usando o método especificado. |
bfill() | Retorna a série com os valores NA/NaN preenchidos usando a próxima observação válida para preencher a lacuna. |
ffill() | Retorna a série com os valores NA/NaN preenchidos propagando a última observação válida para a próxima válida. |
replace() | Retorna a série com os valores NA/NaN substituidos com os valores fornecidos. |
interpolate() | Retorna a serie com os valores NaN preenchidos usando um método de interpolação. |
pad() | Retorna a série com os valores NA/NaN propagando a última observação válida para a próxima válida (obsoleto). |
import pandas as pd
import numpy as np
# Criar um DataFrame de exemplo com valores ausentes
data = {'A': [1, 2, np.nan, 4, 5],
'B': [np.nan, 2, 3, 4, np.nan]}
df_limpar = pd.DataFrame(data)
print(df_limpar)
Retorna True para existência de valores ausentes e False para todos valores existentes.
print(df_limpar.isna())
Retorna True para valores ausentes, isnull é um alias para isna.
print(df_limpar.isnull())
Retorna True para todos valores existentes e False para valores ausentes.
print(df_limpar.notna())
Retorna True para todos valores existentes, notnull é um alias para notna.
print(df_limpar.notnull())
Retorna a série com os valores ausentes removidos.
print(df_limpar.dropna())
Retorna a série com os valores NA/NaN preenchidos usando o método especificado.
print(df_limpar.fillna(0))
Retorna a série com os valores NA/NaN preenchidos usando a último observação válida para preencher a lacuna.
print(df_limpar.bfill())
Retorna a série com os valores NA/NaN preenchidos propagando a último observação válida para a último
print(df_limpar.ffill())
Retorna a série com os valores NA/NaN substituidos com os valores fornecidos.
print(df_limpar.replace(0))
Retorna a serie com os valores NaN preenchidos usando um método de interpolação.
print(df_limpar.interpolate())
(Obsoleto) Retorna a série com os valores NA/NaN propagando a última observação válida para a último
print(df_limpar.pad())
sort_values() | Retorna o dataframe ordenado pelo valor em cada coluna. |
sort_index() | Retorna o objeto ordenado por rótulos ao longo de um eixo. |
pivot() | Retorna o dataframe remodelado organizado por determinados valores de índice/coluna. |
pivot_table() | Retorna uma tabela dinâmica em estilo de planilha como um dataframe. |
melt() | Retorna o dataframe distorcido do formato largo para o formato longo, deixando opcionalmente os identificadores definidos. |
explode() | Retorna o dataframe transformado com cada elemento de uma lista em uma linha, replicando os valores do índice. |
squeeze() | Retorna a série com os níveis unidimensionais em escalares dos objetos comprimidos. |
stack() | Retorna os níveis empilhados prescritos das colunas ao índice. |
unstack() | Retorna os níveis desempilhados prescritos das colunas ao índice, dinamizando um nível dos rótulos de índice (necessariamente hierárquicos). |
droplevel() | Retorna a série/dataframe com níveis de índice/coluna solicitados removidos. |
stacklevel() | Retorna o nível de empilhamento dos rótulos de índice (necessariamente hierárquicos) do dataframe. |
unstacklevel() | Retorna o nível de desempilhamento dos rótulos de índice (necessariamente hierárquicos) do dataframe. |
swaplevel() | Troque os níveis i e j em a MultiIndex. |
reorder_levels() | Retorna os níveis reorganizados do índice usando a ordem de entrada. |
nlargest() | Retornar as primeiras n linhas ordenadas por colunas em ordem decrescente. |
nsmallest() | Retornar as primeiras n linhas ordenadas por colunas em ordem crescente. |
to_xarray() | Retorna um objeto xarray do objeto pandas. |
swapaxes() | (OBSOLETO) Troque eixos e troque eixos de valores adequadamente. |
Retorna o dataframe ordenado pelo valor em cada coluna.
print(df_cidades.sort_values(by='Cidade'))
Retorna o objeto ordenado por rótulos ao longo de um eixo.
print(df_cidades.sort_index())
Retorna o dataframe remodelado organizado por determinados valores de índice/coluna.
print(df_cidades.pivot(index='Cidade', columns='Mês', values='Vendas'))
Retorna uma tabela dinâmica em estilo de planilha como um dataframe.
tb_pivot = df_cidades.pivot_table(index='Cidade', columns='Mês', values='Vendas', aggfunc='sum')
print(tb_pivot)
Retorna o dataframe distorcido do formato largo para o formato longo, deixando opcionalmente os identificadores definidos.
print(df_cidades.melt(id_vars=['Cidade', 'Mês'], value_vars=['Vendas'], var_name='Variável', value_name='Valor'))
Retorna o dataframe transformado com cada elemento de uma lista em uma linha, replicando os valores do índice.
print(df_cidades.explode('Bairros', ignore_index=True))
Explodir série:
s_lista = pd.Series({'A': [1, 2, 3], 'B': [4, 5], 'C': [6]})
print(s_lista.explode())
Retorna a série com os níveis unidimensionais em escalares dos objetos comprimidos.
print(df_cidades['Vendas'].squeeze())
Retorna os níveis empilhados prescritos das colunas ao índice.
df_empilhado = df_cidades.stack()
print(df_empilhado)
Retorna os níveis desempilhados prescritos das colunas ao índice, dinamizando um nível dos rótulos de índice (necessariamente hierárquicos).
print(df_empilhado.unstack())
Desempilhamento multindexado (MultiIndex):
s_multindex = df_pessoas.set_index(['Nome', 'Idade'])
print(s_multindex.unstack())
Retorna a série/dataframe com níveis de índice/coluna solicitados removidos.
print(df_cidades.droplevel('Mês'))
Retorna o nível de empilhamento do dataframe.
print(df_cidades.stacklevel())
Retorna o nível de desempilhamento do dataframe.
print(df_cidades.unstacklevel())
Troca os níveis i e j em a MultiIndex.
print(df_cidades.swaplevel('Cidade', 'Mês'))
Retorna os níveis reorganizados do índice usando a ordem de entrada.
print(df_cidades.reorder_levels(['Mês', 'Cidade']))
Retorna as primeiras n linhas ordenadas por colunas em ordem decrescente.
print(df_cidades.nlargest(3, 'Vendas'))
Retorna as primeiras n linhas ordenadas por colunas em ordem decrescente.
print(df_cidades.nsmallest(3, 'Vendas'))
Retorna o dataframe como um xarray.
print(df_cidades.to_xarray())
T | Retorna o dataframe transposto usando o atributo 'T'. |
transpose(*args[, copiar]) | Retorna o dataframe transposto usando o método transpose() com o índice e colunas. |
Retorna o dataframe transposto usando o atributo 'T'.
print(df_pessoas.T)
Retorna o dataframe transposto usando o índice e colunas.
print(df_pessoas.transpose())
assign() | Retorna um novo dataframe com novas colunas. |
compare() | Retorna uma tabela de comparação entre dois dataframes. |
join() | Retorna uma junção de dois dataframes. |
merge() | Retorna a mesclagem de dois dataframes nomeados com uma junção no estilo de banco de dados. |
update() | Retorna o dataframe modificado usando valores não NA de outro dataframe |
Criamos o dataframe df_id_nome com as colunas ID e Nome, usado nos exemplos.
df_id_nome = pd.DataFrame({
'ID' : [1, 2, 3, 4],
'Nome' : ['Roberto', 'Rosana', 'Pedro', 'Dora']
})
print(df_id_nome)
Retornamos em df_id_nome_salario o novo dataframe incluindo a coluna 'Salario'.
Retorna um novo dataframe com novas colunas.
df_id_nome_salario = df_id_nome.assign(Salario=[2000, 4000, 3000, 5000])
print(df_id_nome_salario)
O comando join junta as colunas do dataframe com as de outro dataframe usando o índice ou colunas-chave.
Vários dataframes podem ser ajuntados de forma eficiente por índice de uma só vez usando-se uma lista.
Retornamos em df_id_nome o dataframe com as colunas ID e Nome e em df_id_salario, o dataframe df_id_salario com as colunas ID e Salario e o dataframe df_id_idade com as colunas ID e Idade.:
df_id_nome = pd.DataFrame({
'ID' : [1, 2, 3, 4],
'Nome': ['Roberto', 'Rosana', 'Pedro', 'Dora']
})
df_id_salario = pd.DataFrame({
'ID' : [1, 2, 3, 4],
'Salario': [3000, 2000, 5000, 4000]
})
df_id_idade = pd.DataFrame({
'ID' : [1, 2, 3, 4],
'Idade': [61, 60, 29, 93]
})
df_id_nome_salario = df_id_nome.set_index('ID').compare(df_id_salario.set_index('ID'))
print(df_id_nome_salario)
print()
df_id_nome_idade = df_id_nome.set_index('ID').compare(df_id_idade.set_index('ID'))
print(df_id_nome_idade)
Diferenças.
print(df1.compare(df2, keep_shape=True))
Retorna a junção de dois dataframes.
df_id_nome_salario_idade = df_id_nome.set_index('ID').join([
df_id_salario.set_index('ID'),
df_id_idade.set_index('ID')])
print(df_id_nome_salario_idade)
data1 = {
'ID': [1, 2, 3, 4],
'Nome': ['Roberto', 'Rosana', 'Pedro', 'Dora'],
'Salario': [50000, 60000, 75000, 80000]
}
df1 = pd.DataFrame(data1)
data2 = {
'ID': [3, 4, 5, 6],
'Nome': ['Pedro', 'Dora', 'Lúcia', 'Renato'],
'Salario': [75000, 80000, 65000, 50000]
}
df2 = pd.DataFrame(data2)
Retorna a junção de dois dataframes.
print(df1.merge(df2, on='ID', how='inner'))
Retorna o dataframe com as colunas atualizadas.
print(df1.update(df2, overwrite=True))
asfreq() | Retorna as séries temporais convertidas com a frequência especificada. |
asof() | Retorna as últimas linhas sem nenhum NaN. |
shift() | Retorna o índice de deslocamento pelo número desejado de períodos com uma frequência de tempo opcional. |
first_valid_index() | Retorna o índice para o primeiro valor não-NA ou None, se nenhum valor não-NA for encontrado. |
last_valid_index() | Retorna o índice para o último valor não-NA ou None, se nenhum valor não-NA for encontrado. |
resample() | Retorna a reamostragem dos dados de série temporal. |
to_period() | Retorna o dataframe convertido de DatetimeIndex em PeriodIndex. |
to_timestamp() | Retorna o dataframe convertido em DatetimeIndex de carimbos de data/hora, no início do período. |
tz_convert() | Retorna o dataframe convertido do eixo com reconhecimento de tz para o fuso horário de destino. |
tz_localize() | Retorna o índice tz-naive localizado de uma série ou dataframe para o fuso horário de destino. |
Exemplo:
# Criar uma série temporal de exemplo
data_vendas = {
'Data' : pd.date_range(start='2023-01-01', periods=14, freq='D'),
'Vendas' : [100, 120, 140, 160, np.nan, 150, 110, 180, np.nan, 170, 200, np.nan, 140, 120]
}
df_vendas = pd.DataFrame(data_vendas)
df_vendas.set_index('Data', inplace=True)
Retorna as séries temporais convertidas com a frequência especificada.
DataFrame.asfreq(freq, method=None, how=None, normalize=False, fill_value=None)
O método asfreq() converte séries temporais em frequência especificada, retornando os dados originais conformados a um novo índice com a frequência especificada.
Se o índice dasérie/dataframe for a PeriodIndex, o novo índice será o resultado da transformação do índice original com PeriodIndex.asfreq(portanto, o índice original será mapeado um a um para o novo índice).
Caso contrário, o novo índice será equivalente a where sendo, respectivamente, a primeira e a última entrada no índice original. Os valores correspondentes a quaisquer intervalos de tempo no novo índice que não estavam presentes no índice original serão nulos, a menos que seja fornecido um método para preencher tais incógnitas.
print(df_vendas.asfreq(freq='W', method='pad'))
Retorna as primeiras linhas sem nenhum NaN.
DataFrame.asof(where, subset=None)
Se houver alguma coluna com NaN nas linhas seguintes, será retornada a última linha anterior sem nenhum NaN, senão será retornado NaN.
date_to_asof = pd.to_datetime('2023-01-03')
asof_result = df_vendas.asof(date_to_asof)
print(asof_result)
Retorna o índice de deslocamento pelo número desejado de períodos com uma frequência de tempo opcional.
DataFrame.shift(periods=1, freq=None, axis=0, fill_value=_NoDefault.no_default, suffix=None)
Índice de deslocamento pelo número desejado de períodos com uma frequência de tempo opcional como argumento.
Quando freq não for passado, mude o índice sem realinhar os dados.
Se freq for passado (nesse caso, o índice deve ser date ou datetime, ou gerará um NotImplementedError), o índice será aumentado usando os pontos e o freq.
O argumento freq pode ser inferido quando especificado como “inferir”, desde que o atributo freq ou inferred_freq esteja definido no índice.
print(df_vendas.shift(periods=2, freq='D'))
Retorna o índice para o primeiro valor não-NA ou None, se nenhum valor não-NA for encontrado.
DataFrame.first_valid_index()
O método retorna o índice do primeiro valor não-NA ou None se nenhum valor não-NA for encontrado.
print(df_vendas['Vendas'].first_valid_index())
Retorna o índice para o último valor não-NA ou Nenhum, se nenhum valor não-NA for encontrado.
DataFrame.last_valid_index()
Último valor não-NA.
Índice de retorno para o último valor não-NA ou Nenhum, se nenhum valor não-NA for encontrado.
Se todos os elementos forem não-NA/nulos, retornará None. Também retorna None para Series/DataFrame vazio.
print(df_vendas['Vendas'].last_valid_index())
Retorna a reamostragem dos dados de série temporal.
DataFrame.resample(rule, axis=_NoDefault.no_default, closed=None, label=None, convention='start', kind=None, on=None, level=None, origin='start_day', offset=None, group_keys=False)
Método de conveniência para conversão de frequência e reamostragem de séries temporais.
O objeto deve ter um índice semelhante a data e hora (DatetimeIndex, PeriodIndex ou TimedeltaIndex) ou o chamador deve passar o rótulo de uma série/índice semelhante a data e hora para o parâmetro de palavra-chave on/ level.
print(df_vendas.resample('M').sum())
Retorna o objeto convertido em PeriodIndex.
DataFrame.to_period(freq=None, axis=0, copy=None)
print(df_vendas.to_period('M'))
Retorna o objeto convertido em DatetimeIndex.
DataFrame.to_timestamp(freq=None, how='start', axis=0, copy=None)
Converter carimbos de data/hora em DatetimeIndex, a partir do início do período.
Retorna o objeto convertido para o fuso horário de destino.
DataFrame.tz_convert(tz, axis=0, level=None, copy=True)
Converta o eixo com Localização de zona de tempo e econhecimento de tz para o fuso horário de destino.
ts_tz = df_vendas.tz_localize('UTC')
ts_tz_converted = ts_tz.tz_convert('US/Eastern')
print(ts_tz_converted)
Retorna o objeto convertido para o fuso horário de destino.
DataFrame.tz_localize(tz, axis=0, level=None, copy=True, ambiguous='raise', nonexistent='raise')
Sinalizadores referem-se a atributos do objeto pandas. As propriedades do conjunto de dados (como a data em que foi registrado, o URL de onde foi acessado, etc.) devem ser armazenadas no arquivo dataframe attrs.
Flags(obj, *, permite_duplicate_labels) | Sinalizadores que se aplicam a objetos pandas. |
O atributo attrs é um dicionário para armazenar metadados globais para o dataframe, considerado experimental e que pode mudar sem aviso prévio.
plot é um método que pode ser chamado e um atributo de namespace para métodos de plotagem específicos do formulário dataframeplot.
plot() | Acessador e método de plotagem DataFrame |
plot.area() | Desenha um gráfico de área empilhada. |
plot.bar() | Gera um gráfico de barras verticais. |
plot.barh() | Faz um gráfico de barras horizontais. |
plot.box() | Faz um box plot das colunas do dataframe |
plot.density() | Gera um gráfico de estimativa de densidade do kernel usando kernels gaussianos. |
plot.hexbin() | Gera um gráfico de classificação hexagonal. |
plot.hist() | Desenhe um histograma das colunas do dataframe |
plot.kde() | Gera um gráfico de estimativa de densidade do kernel usando kernels gaussianos. |
plot.line() | Plota séries ou DataFrame como linhas. |
plot.pie() | Gera um gráfico de pizza. |
plot.scatter() | Cria um gráfico de dispersão com tamanhos e cores de pontos de marcador variados. |
boxplot() | Faz um box plot a partir de colunas do dataframe |
hist() | Faz um histograma das colunas do dataframe |
Métodos e atributos específicos do tipo esparso são fornecidos no acessador sparse do dataframe.
sparse.density | Proporção entre pontos não esparsos e pontos de dados totais (densos). |
sparse.from_spmatrix() | Criar um novo DataFrame a partir de uma matriz esparsa scipy. |
sparse.to_coo() | Retorna o conteúdo do quadro como uma matriz SciPy COO esparsa. |
sparse.to_dense() | Converte um DataFrame com valores esparsos em denso. |
to_dict() | Converte o dataframe em um dicionário. |
from_dict() | Constroe um dataframe a partir de dict de array ou dicts. |
to_records() | Converte dataframe em uma matriz de registros NumPy. |
from_records() | Converte um ndarray estruturado ou de registro em dataframe |
to_json() | Converte o objeto em um texto JSON. |
read_json() | Constroe um dataframe a partir de um texto JSON. |
to_html() | Renderiza um dataframe como uma tabela HTML. |
read_html() | Constroe um dataframe a partir de uma tabela HTML. |
to_csv() | Grave o objeto em um arquivo de valores separados por vírgula (csv). |
read_csv() | Constroe um dataframe a partir de um arquivo csv. |
to_excel() | Escreve o objeto em uma planilha do Excel. |
read_excel() | Constroe um dataframe a partir de um arquivo Excel. |
to_sql() | Grave registros armazenados em um dataframe em um banco de dados SQL. |
read_sql() | Constroe um dataframe a partir de um banco de dados SQL. |
to_orc() | Escreve um dataframe no formato ORC. |
read_orc() | Constroe um dataframe a partir de um arquivo ORC. |
to_parquet() | Escreve um dataframe no formato parquet binário. |
read_parquet() | Constroe um dataframe a partir de um arquivo parquet binário. |
to_pickle() | Pickle (serializar) objeto para arquivo. |
read_pickle() | Constroe um dataframe a partir de um arquivo pickle. |
to_hdf() | Grave os dados contidos em um arquivo HDF5 usando HDFStore. |
read_hdf() | Constroe um dataframe a partir de um arquivo HDF5. |
to_feather() | Escreve um dataframe no formato Feather binário. |
read_feather() | Constroe um dataframe a partir de um arquivo feather binário. |
to_latex() | Renderiza o objeto em uma tabela LaTeX tabular, longtable ou aninhada. |
read_latex() | Constroe um dataframe a partir de uma tabela LaTeX tabular, longtable ou aninhada. |
to_stata() | Exportar o objeto dataframe para o formato Stata dta. |
read_stata() | Constroe um dataframe a partir de um arquivo Stata dta. |
to_gbq() | Escreve um dataframe em uma tabela do Google BigQuery. |
to_string() | Renderiza um dataframe em uma saída tabular amigável ao console. |
to_clipboard() | Copiar o objeto para a área de transferência do sistema. |
to_markdown() | Imprime dataframe em formato compatível com Markdown. |
style | Retorna um objeto Styler. |
__dataframe__() | Retorna o objeto de intercâmbio de dataframe que implementa o protocolo de intercâmbio. |
df_exemplo = pd.DataFrame({
'Nome' : ['Roberto', 'Rosana', 'Pedro'],
'Idade' : [60, 61, 29]
})
DataFrame como dicionário.
dicionario = df_exemplo.to_dict()
print(dicionario)
print("Tipo:", type(dicionario))
print()
print(pd.DataFrame.from_dict(dicionario))
Criar DataFrame a partir de uma lista de registros.
O método to_json() retorna um texto JSON com o conteúdo do DataFrame.
O método read_json() retorna o DataFrame a partir de um texto JSON.
json = df_exemplo.to_json(orient='records')
print(json)
print("Tipo:", type(json))
print()
print(pd.read_json(json, orient='records'))
Salvar o DataFrame como uma tabela HTML.
html = df_exemplo.to_html()
print(html)
print("Tipo:", type(html))
print()
print(pd.read_html(html))
Salvar e ler o DataFrame como arquivo CSV.
df_exemplo.to_csv('exemplo.csv', index=False)
print(pd.read_csv('exemplo.csv'))
Salvar e ler o DataFrame como arquivo de planilha Excel
df_exemplo.to_excel('exemplo.xlsx', index=False)
print(pd.read_excel('exemplo.xlsx'))
Salvar o DataFrame em um banco de dados SQL (SQLite)
Lendo dados do banco de dados SQL de volta para um DataFrame
from sqlalchemy import create_engine
engine = create_engine('exemplo.db')
df_exemplo.to_sql('tabela_exemplo', con=engine, if_exists='replace')
df_from_sql = pd.read_sql('tabela_exemplo', con=engine)
Salvar e ler o DataFrame com arquivo no formato ORC.
df_exemplo.to_orc('exemplo.orc')
print(pd.read_orc('exemplo.orc'))
Salvar e ler o DataFrame como arquivo no formato parquet.
df_exemplo.to_parquet('exemplo.parquet')
print(pd.read_parquet('exemplo.parquet'))
Salvar e ler o DataFrame como arquivo no formato pickle.
df_exemplo.to_pickle('exemplo.pkl')
print(pd.read_pickle('exemplo.pkl'))
Salvar e ler o DataFrame como arquivo no formato HDF5.
df_exemplo.to_hdf('exemplo.h5', key='mydata', mode='w')
print(pd.read_hdf('exemplo.h5', key='mydata'))
Salvar o DataFrame em formato Feather.
df_exemplo.to_feather('exemplo.feather')
print(pd.read_feather('exemplo.feather'))
Salvar e ler o DataFrame como arquivo no formato LaTeX
print(df_exemplo.to_latex())
Salvar e ler o DataFrame como arquivo no formato Stata.
df_exemplo.to_stata('exemplo.dta', write_index=False)
print(pd.read_stata('exemplo.dta'))
Salvar o DataFrame no Google BigQuery (requer autenticação e configuração prévia)
from google.oauth2 import service_account
from pandas_gbq import to_gbq
credentials = service_account.Credentials.from_service_account_file('path-to-credentials.json')
to_gbq(df_exemplo, destination_table='project_id.dataset_id.table_id', if_exists='replace', credentials=credentials)