Atributos e métodos do pandas.dataFrame
Nas tabelas usamos df
para referenciar um dataframe do pandas. Quando necessária a interação com um segundo dataframe ele é designado por dfOutro
. A abreviação e/e significa “elemento a elemento”, utilizada quando a operação é aplicada entre todos os elementos de um e outro dataframe, usando elementos na posição (linha, coluna).
Atributos dos dataframes
Atributo | descrição |
---|---|
df.at(m,n) |
valor correspondente à linha=m, coluna=n |
df.axes |
lista representando os eixos do df |
df.columns |
rótulos das colunas do df |
df.dtypes |
dtypes no df |
df.flags |
propriedades associadas ao df |
df.iat |
valor para um par linha/coluna |
df.iloc |
indexação baseada em localização puramente inteira para seleção por posição |
df.loc |
grupo de linhas e colunas por rótulo(s) ou matriz booleana |
df.ndim |
número (int) de eixos/dimensões da matriz |
df.shape |
tupla com a dimensionalidade do df |
df.size |
número (int) de elementos no objeto |
df.style |
um objeto Styler |
df.values |
representação Numpy do df |
Métodos dos dataframes
Exibição e consulta ao dataframe
df.at(m,n) |
valor correspondente à linha=m, coluna=n |
df.attrs |
dict de atributos globais do objeto (experimental) |
df.head([n]) |
as primeiras n linhas |
df.info([verbose, buf, max_cols, memory_usage,…]) |
resumo conciso do dataframe |
df.tail([n]) |
últimas n linhas |
df.items() |
iteração sobre (nome da coluna, Series) |
df.iteritems() |
iteração sobre (nome da coluna, Series) |
df.iterrows() |
iteração sobre linhas de df como pares (index, Series) |
df.itertuples([index, nome]) |
iteração sobre linhas do df como pares nomeados |
df.memory_usage([index, deep]) |
uso de memória de cada coluna em bytes |
df.nlargest(n, columns[, keep]) |
n primeiras linhas ordenadas por colunas em ordem decrescente |
df.nsmallest(n, colunas[, manter]) |
n primeiras n linhas ordenadas por colunas em ordem crescente |
df.nunique([axis, dropna]) |
número de elementos distintos no eixo especificado |
Operações matemáticas
Método | descrição |
---|---|
df.abs() |
valor absoluto de cada elemento |
df.add(dfOutro[, axis, level, fill_value]) |
adição de df e dfOutro |
df.apply(func[, axis, raw, result_type, args]) |
aplica função ao longo de um eixo do df |
df.applymap(func[, na_action]) |
aplica uma função a um df e/e |
df.div(dfOutro[, axis, level, fill_value]) |
divisão flutuante de df por dfOutro |
df.divide(dfOutro[, axis, level, fill_value]) |
divisão flutuante de df por dfOutro |
df.dot(dfOutro) |
multiplicação de df por dfOutro |
df.eval(expr[, inplace]) |
avalia a string ‘expr’ contendo operações sobre colunas do df |
df.ewm([com, span, halflife, alpha,…]) |
função exponencial ponderada (EW) |
df.floordiv(dfOutro[, axis, level, fill_value]) |
divisão inteira do df por dfOutro |
df.mod(dfOutro[, axis, level, fill_value]) |
módulo de df por dfOutro e/e |
df.mul(dfOutro[, axis, level, fill_value]) |
multiplicação de df por dfOutro , e/e |
df.multiply(dfOutro[, axis, level, fill_value]) |
multiplicação de df por dfOutro , e/e |
df.pow(dfOutro[, axis, level, fill_value]) |
exponencial do df por dfOutro e/e |
df.prod([axis, skipna, level, numeric_only, ...]) |
produto dos valores sobre o eixo especificado |
df.product([axis, skipna, level, numeric_only, ...]) |
produto dos valores sobre o eixo especificado |
df.radd(dfOutro[, axis, level, fill_value]) |
adição de df e dfOutro e/e, com suporte a fill_na |
df.rdiv(dfOutro[, axis, level, fill_value]) |
divisão float de df por dfOutro e/e |
df.rfloordiv(dfOutro[, axis, level, fill_value]) |
divisão inteira do df e dfOutro e/e |
df.rmod(dfOutro[, axis, level, fill_value]) |
módulo de df e dfOutro e/e |
df.rmul(dfOutro[, axis, level, fill_value]) |
multiplicação de df por dfOutro e/e |
df.round([decimals]) |
arredonda elementos de df para um número dado de casas decimais |
df.rpow(dfOutro[, axis, level, fill_value]) |
exponencial do df por dfOutro e/e |
df.rsub(dfOutro[, axis, level, fill_value]) |
subtração de df e dfOutro e/e |
df.rtruediv(dfOutro[, axis, level, fill_value]) |
divisão float de df por dfOutro e/e |
df.sub(dfOutro[, axis, level, fill_value]) |
subtração de df por dfOutro e/e |
df.sum([axis, skipna, level, numeric_only, ...]) |
soma dos valores sobre o eixo especificado |
df.transform(func[, axis]) |
executa func em elementos de df , sobre eixo especificado |
df.truediv(dfOutro[, axis, level, fill_value]) |
divisão float de df por dfOutro e/e |
Formatação, Transposição, Ordenação
Método | descrição |
---|---|
Transposição | Tij = Mji |
df.T |
a transposta de df |
df.transpose(* args[, copiar]) |
transpor índices e colunas (obter a transposta) |
df.droplevel(nível[, axis]) |
remove colunas com index ou níveis solicitados |
df.melt([id_vars, value_vars, var_name,…]) |
Unpivot dataFrame para um formato largo |
df.pivot([index, columns, values]) |
refaz df organizado por valores de index/column fornecidos |
df.pivot_table([values, index, columns,…]) |
cria tabela dinâmica no estilo planilha como um df |
df.sort_index([axis, level, ascendente, ...]) |
classifica objeto por rótulos (ao longo de um eixo) |
df.sort_values (by[, axis, ascending, inplace, ...]) |
ordena por valores ao longo do eixo especificado |
df.stack([level, dropna]) |
empilha os níveis prescritos das colunas para o índice |
df.swapaxes(axis1, axis2[, copy]) |
inverte eixos com seus valores respectivos |
df.swaplevel([i, j, axis]) |
inverte níveis i e j em umMultiIndex |
df.unstack([level, fill_value]) |
pivot um level dos rótulos de índice (necessariamente hierárquicos) |
df.explode(column[, ignore_index]) |
transforma cada elemento de uma lista em uma linha, mantendo os índices |
df.squeeze([axis]) |
comprime valores de eixo unidimensional para escalares |
Métodos estatísticos
Método | descrição |
---|---|
df.corr([method, min_periods]) |
calcula correlação de pares de colunas, excluindo valores NA/nulos |
df.corrwith(dfOutro[, axis, drop, method]) |
calcula correlação de pares |
df.count([axis, level, numeric_only]) |
quantos valores não NA para cada coluna ou linha |
df.cov([min_periods, ddof]) |
calcula covariância de pares de colunas, excluindo NA/nulos |
df.cummax([axis, skipna]) |
máximo cumulativo em um df |
df.cummin([axis, skipna]) |
mínimo cumulativo sobre um eixo do df |
df.cumprod([axis, skipna]) |
produto cumulativo sobre um eixo do df |
df.cumsum([axis, skipna]) |
soma cumulativa sobre eixo do df |
df.describe([percentis, include, exclude, ...]) |
gera descrição estatística |
df.diff([points, axis]) |
primeira diferença discreta do elemento |
df.hist([column, by, grid, xlabelsize, xrot,…]) |
histograma das colunas do df |
df.info([verbose, buf, max_cols, memory_usage,…]) |
resumo conciso do dataframe |
df.kurt([axis, skipna, level, numeric_only]) |
curtose imparcial sobre o eixo especificado |
df.kurtosis([axis, skipna, level, numeric_only]) |
curtose imparcial sobre o eixo especificado |
df.mad([axis, skipna, level]) |
desvio absoluto médio sobre especificado |
df.max([axis, skipna, level, numeric_only]) |
máximo dos valores sobre o eixo especificado |
df.mean([axis, skipna, level, numeric_only]) |
média dos valores sobre o eixo especificado |
df.median([axis, skipna, level, numeric_only]) |
mediana dos valores sobre o eixo especificado |
df.min([axis, skipna, level, numeric_only]) |
mínimo dos valores sobre o eixo especificado |
df.mode([axis, numeric_only, dropna]) |
moda(s) dos elemento ao longo do eixo selecionado |
df.pct_change([periods, method, limit, frequency]) |
alteração percentual entre o elemento atual e o anterior |
df.quantil([q, axis, numeric_only, interpolateion]) |
valores no quantil dado sobre o eixo especificado |
df.sample([n, frac, replace, weight,…]) |
amostra aleatória de itens de um eixo |
df.sem([axis, skipna, level, ddof, numeric_only]) |
erro padrão imparcial da média sobre o eixo especificado |
df.std([axis, skipna, level, ddof, numeric_only]) |
desvio padrão da amostra sobre o eixo especificado |
df.var([axis, skipna, level, ddof, numeric_only]) |
variação imparcial sobre o eixo especificado |
Gerenciamento, filtragem e consulta ao dataframe
Método | descrição |
---|---|
df.add_prefix(prefixo) |
acrecenta prefixo nos rótulos (labels) |
df.add_suffix(sufixo) |
acrecenta sufixo nos rótulos (labels) |
df.agg([function, axis]) |
agregar usando function no eixo especificado |
df.aggregate([função, axis]) |
agregar usando function no eixo especificado |
df.align(dfOutro[, junção, axis, nível, cópia, ...]) |
alinha dois objetos em seus eixos com o método especificado |
df.append(dfOutro[, ignore_index,…]) |
anexa linhas de dfOutro ao final de df |
df.asof(where[, subset]) |
última(s) linha(s) sem NaN antes de where |
df.assign(** kwargs) |
atribui novas colunas a um df |
df.clip([lower, upper, axis, inplace]) |
corta (trim) os valores no(s) limite(s) dados |
df.combine(dfOutro, func[, fill_value, ...]) |
combina colunas com dfOutro |
df.combine_first(dfOutro) |
atualiza elementos nulos com elementos de dfOutro , na mesma posição |
df.compare(dfOutro[, align_axis, keep_shape,…]) |
compara com dfOutro > e exibe diferenças |
df.copy([deep]) |
faz cópia do objeto com índices e dados |
df.drop([labels, axis, index, columns, level, ...]) |
remove linhas ou colunas com os rótulos especificados |
df.drop_duplicates([subset, keep, inplace, ...]) |
remove linhas duplicadas |
df.expanding([min_periods, center, axis, method]) |
aplica transformações de expansão |
df.filter([itens, like, regex, axis]) |
filtra linhas ou colunas do df de acordo com os índices especificados |
df.first_valid_index() |
índice do primeiro valor não NA ; None se nenhum for encontrado |
df.get(key[, default]) |
item do dataframe correspondente à chave fornecida |
df.groupby([by, axis, level, as_index, ...]) |
agrupa df usando um mapper ou Series de colunas |
df.infer_objects() |
tentativa de inferir dtypes para colunas do objeto |
df.insert(loc, column, value[, allow_duplicates]) |
insere coluna no df no local especificado |
df.join(dfOutro[, on, how, lsuffix, rsuffix, sort]) |
junta colunas de df e dfOutro |
df.lookup(row_labels, col_labels) |
(descontinuado) “indexação extravagante” baseada em rótulos para df |
df.mask(cond[, dfOutro, local, axis, level, ...]) |
substitui valores onde a condição é True |
df.merge(right[, how, on, left_on, …]) |
mesclar df usando database de estilo |
df.pipe(func, * args, ** kwargs) |
aplicação de func(self, * args, ** kwargs) |
df.pop(item) |
remove e retorna o item removido |
df.query(expr[, inplace]) |
consulta colunas de df com uma expressão booleana |
df.rank([axis, method, numeric_only, ...]) |
classificações de dados numéricos (1 a n) ao longo do eixo |
df.replace([to_replace, value, inplace, limit,…]) |
substitui valores em to_replace com value |
df.rolling(window[, min_periods, center,…]) |
cálculos de “rolling window” |
df.select_dtypes([include, exclude]) |
subset de colunas do df com base nos dtypes da coluna |
df.skew([axis, skipna, level, numeric_only]) |
inclinação imparcial sobre o eixo especificado |
df.slice_shift([perids, axis]) |
(descontinuado) Equivalente a shift sem copiar dados |
df.sparse |
alias de pandas.core.arrays.sparse.accessor.SparseFrameAccessor |
df.take(indices[, axis, is_copy]) |
elementos nos índices posicionais fornecidos ao longo de um eixo |
df.truncate([before, after, axis, copy]) |
truncar df antes e depois de valores de índices |
df.update(dfOutro[, juntar, substituir,…]) |
modifique “no local” usando valores não NA de dfOutro |
df.value_counts([subset, normalize, …]) |
retorna série contendo número de linhas exclusivas no df |
df.where(cond[, dfOutro, inplace, axis, level, ...]) |
substitui valores em que a condição é falsa |
df.xs(key[, axis, level, drop_level]) |
seção transversal de df |
Testes e comparações
Método | descrição |
---|---|
df.empty |
booleano: se o df está vazio |
df.all([axis, bool_only, skipna, nível]) |
booleano: se todos os elementos são verdadeiros, sobre um eixo (se especificado) |
df.any([axis, bool_only, skipna, nível]) |
booleano: se algum elemento é verdadeiro, sobre um eixo (se especificado) |
df.bool() |
booleano, se um único elemento do df é True/False |
df.duplicated([subset, keep]) |
série booleana marcando linhas duplicadas |
df.eq(dfOutro[, axis, level]) |
boolena: se elementos são iguais a um escalar ou dfOutro , e/e |
df.equal(dfOutro) |
booleano: se dois objetos contêm os mesmos elementos |
df.ge(dfOutro[, axis, level]) |
dataframe booleano, maior ou igual entre df e dfOutro , e/e |
df.gt(dfOutro[, axis, level]) |
dataframe booleano, maior que, entre df e dfOutro , e/e |
df.isin(values) |
booleano: se cada elemento no df está contido em values |
df.le(dfOutro[, axis, level]) |
booleano: menor ou igual entre elementos de df e dfOutro , e/e |
df.lt(dfOutro[, axis, level]) |
booleano: menor dos elementos de df e dfOutro , e/e |
df.ne(dfOutro[, axis, level]) |
booleano, diferente entre df e dfOutro , e/e |
Operações com rótulos (labels) e índices
df.index |
índices do df |
df.keys() |
retorna o index |
df.last_valid_index() |
índice do último valor não NA; None se nenhum valor NA for encontrado |
df.reindex([labels, index, columns, axis, ...]) |
substitue índices de df , com lógica de preenchimento opcional |
df.reindex_like(dfOutro[, method, copy, limit, ...]) |
retorna objeto com índices correspondentes à dfOutro |
df.rename([mapper, index, columns, axis, copy, ...]) |
renomear rótulos dos eixos |
df.rename_axis([mapper, index, columns, axis, ...]) |
define o nome do eixo para o índices ou colunas |
df.reorder_levels(order[, axis]) |
reorganiza níveis de índices usando a ordem em order |
df.reset_index([level, drop, inplace, ...]) |
redefine um índice ou seu nível |
df.set_axis(rótulos[, axis, local]) |
atribui o índice desejado a determinado eixo |
df.set_flags(*[, copy, allow_duplicated_labels]) |
novo objeto com sinalizadores (flags) atualizados |
df.set_index(keys[, drop, append, inplace, ...]) |
define índices de df usando colunas existentes |
df.idxmax([axis, skipna]) |
índice da primeira ocorrência do máximo sobre o eixo especificado |
df.idxmin([axis, skipna]) |
índice da primeira ocorrência do mínimo sobre o eixo especificado |
Plots
Método | descrição |
---|---|
df.boxplot([column, by, ax, font-size, rot, ...]) |
traça gráfico de caixa usando as colunas do df |
df.plot |
o mesmo que pandas.plotting._core.PlotAccessor |
df.hist([column, by, grid, xlabelsize, xrot,…]) |
histograma das colunas do df |
Serialização e conversões
Método | descrição |
---|---|
df.astype(dtype[, copy, errors]) |
transforma objeto para um dtype especificado |
df.convert_dtypes([infer_objects,…]) |
converte colunas para os melhores dtypes usando dtypes com suporte parapd.NA |
df.from_dict(data[, orient, dtype, columns]) |
constroi df a partir de dict ou similar |
df.from_records(data[, index, exclusion,…]) |
converte ndarray ou dados estruturados em dataframe |
df.to_clipboard([excel, sep]) |
copia objeto para a área de transferência do sistema |
df.to_csv([path_or_buf, sep, na_rep,…]) |
grava objeto em um arquivo de valores separados por vírgula (csv) |
df.to_dict([orient, into]) |
converte df em um dicionário |
df.to_excel(excel_writer[, sheet_name, na_rep,…]) |
grava objeto em uma planilha Excel |
df.to_feather(path, **kwargs) |
grava df no formato binário Feather |
df.to_gbq(destination_table[, project_id,…]) |
grava df em uma tabela Google BigQuery |
df.to_hdf(path_or_buf, key[, mode, complevel,…]) |
grava objeto em um arquivo HDF5 usando HDFStore |
df.to_html([buf, columns, col_space, header,…]) |
renderiza df como uma tabela HTML |
df.to_json([path_or_buf, orient, date_format,…]) |
converte objeto em uma string JSON |
df.to_latex([buf, colunas, col_space, cabeçalho,…]) |
renderiza objeto em uma tabela LaTeX |
df.to_markdown([buf, mode, index, ...]) |
imprima df em formato Markdown |
df.to_numpy([dtype, copy, na_value]) |
converte df em uma matriz NumPy |
df.to_parquet([path, engine, ...]) |
grave df em formato binário parquet |
df.to_period([freq, axis, copy]) |
converte df de DatetimeIndex para PeriodIndex |
df.to_pickle(path[, compression, protocol, ...]) |
serializa o objeto para o arquivo pickle |
df.to_records([index, column_dtypes, index_dtypes]) |
converte df em uma matriz de registro NumPy |
df.to_sql(name, con[, schema, if_exists,…]) |
grava registros em df em um banco de dados SQL |
df.to_stata(path[, convert_dates, write_index,…]) |
exporta df para o formato Stata dta |
df.to_string([buf, columns, col_space, header, ...]) |
renderiza df em uma saída tabular compatível com o console |
df.to_timestamp([freq, how, axis, copy]) |
converte para DatetimeIndex de timestamps, no início do período |
df.to_xarray() |
converte para objeto xarray |
df.to_xml([path_or_buffer, index, root_name,…]) |
renderiza df em um documento XML |
Gerenciamento de valores ausentes
Método | descrição |
---|---|
df.backfill([axis, inplace, limit, reduction]) |
o mesmo que
|
df.bfill([axis, inplace, limit, downcast]) |
o mesmo que df.fillna() com method = 'bfill' |
df.dropna([axis, how, treshold, subset, inplece]) |
remove os valores ausentes |
df.ffill([axis, inplace, limit, reduction]) |
o mesmo que df.fillna() com method = 'ffill' |
df.fillna([value, method, axis, local, ...]) |
preenche campos com NA/NaN usando o método especificado |
df.interpolate([method, axis, limit, inplace, ...]) |
substitui valores NaN usando método de interpolação |
df.isna() |
detecta valores ausentes |
df.isnull() |
detecta valores ausentes |
df.notna() |
valores existentes (não ausentes) |
df.notnull() |
valores existentes (não ausentes) |
df.pad([axis, inplace, limit, downcast]) |
o mesmo que
|
Séries temporais e dados com hora/data
Método | descrição |
---|---|
df.asfreq(freq[, método, como, normalizar, ...]) |
converte série temporal para a frequência especificada |
df.at_time(hour[, asof, axis]) |
seleciona valores em um determinado horário do dia |
df.between_time(start_time, end_time[,…]) |
seleciona valores entre horários especificados |
df.first(offset) |
seleciona períodos iniciais em série temporal usando deslocamento (offset) |
df.last(offset) |
selecione períodos finais da série temporal com deslocamento (offset) |
df.resample(rule[, axis, closed, label, ...]) |
reamostrar os dados de série temporal |
df.shift([periods, freq, axis, fill_value]) |
desloca índices por número desejado de períodos com uma frequância opcional |
df.tshift([períodos, freq, axis]) |
(descontinuado) altera índice de tempo, usando a frequência do índice, se dispolevel |
df.tz_convert(tz[, axis, level, copy]) |
converte o eixo com reconhecimento de tz em fuso horário de destino |
df.tz_localize(tz[, axis, level, copy, ...]) |
localiza índice tz-naive de df para o fuso horário de destino |
Ordenamento com dataframes.sort_values
Para ordenar um dataframe podemos usar o método sort
, com a seguinte sintaxe:
dataframe.sort_values(by=['campo'], axis=0, ascending=True, inplace=False) |
---|
onde |
by pode ser uma string ou lista com o nome ou nomes dos campos, na prioridade de ordenamento, |
axis{0 ou ‘index’, 1 ou ‘columns’} default 0, indica o eixo a ordenar, |
ascending=True/False se ordenamento é crescente/decrescente. |
dataframe.reindex
Alterações da ordem dos índices de um dataframe podem ser obtidos com:
dataframe.reindex(listaDeCampos)
Os seguintes argumentos são usados com reindex
Argumento | descrição |
---|---|
index |
Index ou sequência a ser usada como index, |
method |
forma de interpolação: ‘ffill’ preenche com valor posterior, ‘bfill’ com valor anterior, |
fill_value |
valor a usar quando dados não existentes são introduzidos por reindexing (ao invés de NaN), |
limit |
quando preenchendo com valor anterior ou posterior, intervalo máximo a preencher (em número de elementos), |
tolerance |
quando preenchendo com valor anterior ou posterior, intervalo máximo a preencher para valores inexatos (em distância numérica), |
level |
combina Index simples no caso de MultiIndex; caso contrário seleciona subset, |
copy |
se True, copia dados mesmo que novo índice seja equivalente ao índice antigo; se False, não copia dados quando índices são equivalentes. |
Métodos e propriedades de Index
Método | descrição |
---|---|
append |
concatena outro objeto Index objects, gerando novo Index |
difference |
calcula a diferença de conjunto como um Index |
intersection |
calcula intersecção de conjunto |
union |
calcula união de conjunto |
isin |
retorna array booleano indicando se cada valor está na coleção passada |
delete |
apaga índice, recalculando Index |
drop |
apaga índices passados, recalculando Index |
insert |
insere índice, recalculando Index |
is_monotonic |
retorna True se indices crescem de modo monotônico |
is_unique |
returns True se não existem valores duplicados no Index |
unique |
retorna índices sem repetições |
Bibliografia
- Pandas Pydata.org pandas docs, acessado em julho de 2021.