filtrar

Selecionando Apenas Colunas Numéricas no Python + Listando Todas as Colunas de um Dataframe (Pandas)

Recentemente fui analisar várias colunas de um dataframe no Python, mas as funções que estava utilizando eram todas numéricas. Ou seja, as colunas que não eram numéricas estavam atrapalhando meu código. Para resolver este problema, descobri que era possível selecionar somente as colunas numéricas no Python com uma função bem simples: (mais…)

Anúncios

Filtros no R

Já falei várias vezes sobre como filtrar os dados no R (Excluindo linhas de uma tabela no R tem algo parecido), segue mais um exemplo:

## Filtrando apenas as linhas com a coluna mes igual a 3
## na tabela dados_modelo
dados_modelo[(dados_modelo$mes == 3),];

## Filtrando apenas as linhas com a coluna mes igual a 3, 4 ou 5
## na tabela dados_modelo
dados_modelo[dados_modelo$mes %in% c(3,4,5,6,7,8,9,10,11),];

## Filtrando apenas as linhas com a coluna mes igual a 3, 4, 5, ..., 10
dados_modelo[dados_modelo$mes %in% c(3:10),];

## Filtrando apenas as linhas com a coluna estado igual a SP
dados_modelo[dados_modelo$estado == "SP"),];

Excluindo linhas de uma tabela no R

Mais uma dica rápida que saiu enquanto eu fazia minha tese…

Estava preparando uma base de dados no R, quando vi que precisava excluir as linhas que tivesse o campo referente ao mês com valor igual a 1 ou igual a 5. Sempre fiz isso no SAS com um if bem simples, mas não lembrava no R, talvez já tenha feito aqui, mas quem lê o blog sabe que não é lá tão organizado. Enfim, a lógica no R é tão simples quanto a do SAS, mas não tão intuitiva (ao menos para mim). Veja o antes e depois de uma tabela chamada dados retirando as linhas nas quais o campo s seja igual a 1 ou 5 e quais os códigos utilizar em algumas linguagens que já mencionamos aqui (é tão simples que vou colocar tudo junto mesmo):

excluir-linhas

No R com um indexador lógico (! indicando negação):

dados[(dados$mes!=5 & dados$mes!=1),];

No R com subset:

subset(dados, mes != 1 & mes != 5)

Da forma que escrevemos acima, você vai obter uma nova tabela, mas ela não está sendo salva com nome algum. Se você quiser, pode facilmente criar uma nova:

tabela_nova = subset(dados, mes!=1 & mes !=5)

No SAS com data step:

data dados_v2;
    set dados;
    if mes ne 1 and mes ne 5; *ou if mes <> 1;
run;

No SAS com proc sql:

proc sql;
    create table dados_v2 as
    select * from
    dados where mes <> 1 and mes <> 5; 
run;

No SQL:

select * from dados where mes <> 1 and mes <> 5;