Propriedades básicas

En fase de pruebas Atividades: Esta sección está en validación y puede recibir ajustes.

Antes de qualquer análise, vale “olhar” o DataFrame: tamanho, nomes de colunas, tipos e amostra dos dados. Pandas oferece atalhos para todas essas inspeções.

Para os exemplos, supomos um DataFrame df carregado a partir do JSON de notas à imprensa do MRE (próximo capítulo cobre o carregamento).

Dimensão

df.shape
# (5040, 7)   →  5040 linhas, 7 colunas

shape é uma tupla — útil em mensagens e em validações (assert df.shape[0] > 0).

Colunas e índice

df.columns
# Index(['titulo', 'link', 'data', 'horario',
#        'data_atualizada', 'horario_atualizado', 'paragrafos'],
#       dtype='object')

df.index
# RangeIndex(start=0, stop=5040, step=1)

df.index Rotula as linhas do Data Frame (DF). Os rótulos podem ser qualuqer valor que se mantenha constante, como “strings” e valores inteiros.
df.columns: Mostra os rótulos das colunas do DF. A sequência é imutável e pode ser usada para seleção de dados, renomeações e alinhamento do DF.

Tipos de dados

df.dtypes
# titulo               object
# link                 object
# data                 object
# horario              object
# data_atualizada      object
# horario_atualizado   object
# paragrafos           object
# dtype: object

object é o tipo “string ou misto”. Para conseguir filtrar e ordenar por data, é preciso converter (ver 04 - Tratamento).

dtype PandasO que representa
int64, int32Inteiros
float64, float32Decimais
objectString ou tipos mistos
boolBooleano
datetime64[ns]Data e hora
categoryCategoria (string com poucos valores únicos)

Amostragem

df.head()       # 5 primeiras linhas
df.head(2)      # 2 primeiras linhas
df.tail(3)      # 3 últimas linhas
df.sample(5)    # 5 linhas aleatórias

Útil para ter ideia do conteúdo sem imprimir milhares de linhas.

Sumário rápido

df.info()
# <class 'pandas.core.frame.DataFrame'>
# RangeIndex: 5040 entries, 0 to 5039
# Data columns (total 7 columns):
#  #   Column              Non-Null Count  Dtype
# ---  ------              --------------  -----
#  0   titulo              5040 non-null   object
#  ...

info() mostra: dimensão, nome e tipo de cada coluna, e a quantidade de valores não-nulos — chave para detectar dados faltantes.

Estatísticas descritivas

df.describe()              # só colunas numéricas
df.describe(include="all") # todas as colunas

Para colunas numéricas devolve count, mean, std, min, percentis e max.
Para colunas object mostra count, unique, top (valor mais comum) e freq.

Contagem de valores únicos

Em colunas categóricas, value_counts() é um dos métodos mais usados:

df["data_atualizada"].value_counts().head(10)
# 2023-01-15    8
# 2023-03-22    7
# ...

Combinado com to_datetime (próximo capítulo), permite ver a evolução temporal:

df["ano"] = pd.to_datetime(df["data"]).dt.year
df["ano"].value_counts().sort_index()
# 2008    412
# 2009    389
# ...

Verificação de nulos

df.isna()           # DataFrame booleano (mesmo formato de df)
df.isna().sum()     # quantos nulos por coluna
df.dropna()         # remove linhas com qualquer nulo (ver capítulo 04)

isna().sum() deveria ser o primeiro comando depois de carregar dados de fonte desconhecida.

Resumo

PerguntaComando
Quantas linhas e colunas?df.shape
Quais colunas e tipos?df.dtypes ou df.info()
Como são os dados?df.head(), df.sample()
Resumo estatístico?df.describe()
Tem dados faltantes?df.isna().sum()
Quantos valores únicos numa coluna?df["coluna"].value_counts()

Para mais informaçõe acesse: pandas_documentation