Como filtrar estados americanos por letras específicas
Quando você trabalha com dados de endereços nos Estados Unidos, aparecerá uma situação em que precisa isolar certos estados por algum padrão. Filtrar por abreviação ou nome completo começa com a letra L é algo que aparece com frequência em tarefas de limpeza de dados. O problema começa quando os dados não estão padronizados — uns vêm como "LA", outros como "Louisiana", e alguns vêm com letras maiúsculas e outros minúsculas. Não existe uma lista oficial de algo chamado "estados com a letra l" no Brasil porque nenhum estado brasileiro começa com L. Os nomes dos estados são Amazonas, Acre, Alagoas, Amapá, Bahia, Ceará, Espírito Santo, Goiás, Maranhão, Mato Grosso, Mato Grosso do Sul, Minas Gerais, Pará, Paraíba, Paraná, Pernambuco, Piauí, Rio de Janeiro, Rio Grande do Norte, Rio Grande do Sul, Rondônia, Roraima, Santa Catarina, São Paulo, Sergipe, Tocantins e o Distrito Federal. Nenhum começa com L.
estados com a letra l: a lista real
Os estados americanos que começam com L na verdade são bem poucos. Só Louisiana. Em termos de abreviação postal, só LA. Se a busca for pelo nome completo, Illinois e Indiana também entram porque começam com I, não L, então na verdade só Louisiana se encaixa estritamente na letra L. Aqui está a lista completa de estados que contêm a letra L em qualquer posição, que é o cenário mais comum na prática:
Contendo a letra L em qualquer posição: Illinois, Louisiana, Maryland, Oklahoma, Connecticut, Delaware, Massachusetts, Vermont, Washington, Kansas. São dez estados. Se o requisito for estritamente começar com a letra L, aí cai para apenas Louisiana.
Como fazer o filtro na prática
A maioria das pessoas que mexe com dados usa pandas no Python ou planilhas do Excel ou Google Sheets. Vou cobrir os dois casos porque cada um tem seus problemas específicos. No pandas, o filtro mais direto funciona assim:
import pandas as pd
df = pd.read_csv("dados_enderecos.csv")
filtro = df["estado"].str.upper().str.startswith("L")
resultado = df[filtro] Isso funciona desde que a coluna estado contenha o nome completo. Se a coluna tiver abreviações como LA, KS, IL, aí o startswith ainda funciona porque LA começa com L, KS não, IL começa com I.
O problema que eu encontrei recentemente foi com dados vindos de um sistema legado que misturava abreviações com nomes completos na mesma coluna. Havia linhas com "LA", outras com "Louisiana", outras com "la" em minúsculo, e algumas com "LA." com ponto final. O filtro simples de startswith quebrava com esses pontos finais e minúsculas. A solução que funcionou foi limpar os dados antes de filtrar:
👉 Clique no botão abaixo para saber mais sobre o assunto!
df["estado"] = df["estado"].str.upper().str.replace(".", "").str.strip()
df["estado"] = df["estado"].replace({"LA": "Louisiana", "IL": "Illinois", "KS": "Kansas"})
filtro = df["estado"].str.startswith("L") Essa normalização reduziu os falsos negativos de cerca de 12% para menos de 1%. Os dados brutos que eu estava tratando vinham de três fontes diferentes, e a divergência de formatação era enorme.
O jeito planilha para quem não programa
Se você está usando Excel ou Google Sheets, o processo é parecido mas mais rudimentar. No Excel, use uma coluna auxiliar com a fórmula =NÍLIGA(ESQUERDA(A2;1)) para extrair a primeira letra. Depois filtre essa coluna pela letra L. No Google Sheets a função é =MAIÚSCULA(EXT.TEXTO(A2;1;1)). O detalhe que todo mundo esquece é que dados importados de CSV às vezes vêm com espaços invisíveis ou caracteres especiais Unicode. No Excel, dê um clique direito na coluna e use "Texto para Colunas" com delimitador de vírgula ou ponto e vírgula conforme o arquivo. Isso remove espaços à esquerda que não aparecem visualmente mas quebram filtros.
No Google Sheets, use =ARRAYFORMULA(NORMALIZAR(A:A)) para limpar espaços em todas as linhas de uma vez. A função NORMALIZAR remove espaços extras mas não resolve caracteres especiais como o hífen ordinal ou aspas latinas que às vezes aparecem em bancos de dados mal tratados.
Pitfalls comuns que ninguém avisa
O primeiro erro comum é confundir estados brasileiros com americanos. Se o seu dataset tem código do IBGE ou siglas de estado brasileiro e você aplica um filtro por L, vai dar vazio. Nenhum estado brasileiro tem sigla ou nome começando com L. Verifique o contexto do dataset antes de aplicar o filtro. O segundo erro é não considerar que oDistrict of Columbia, Washington D.C., não é estado e não começa com L. Em datasets americanos, D.C. às vezes aparece na mesma coluna que estados, e isso não deve ser filtrado junto.
O terceiro erro é assumir que startswith é suficiente. Em datasets grandes, às vezes a letra L aparece no meio do campo por erro de digitação ou porque o campo é uma string composta como "São Luís - MA". Um filtro ingênuo pegaria isso. Use regex com início de string delimitado: ^L no pandas com str.contains(r"^L", regex=True) para ser mais preciso.
Alternativa quando os dados são muito sujos
Se o seu dataset tem tantos problemas de formatação que nem normalização resolve, considere usar a biblioteca fuzzywuzzy ou rapidfuzzy para combinar nomes que estão perto mas não iguais. Eu usei essa abordagem em um projeto onde 15% dos valores de estado estavam escritos de formas variadas como "Lousiana", "Louisiana ", "LA - USA", e apenas startswith não capturava nada confiável. O resultado foi aceitar combinações com similaridade acima de 85% contra a lista canônica de nomes de estados americanos. Isso resolveu o problema mas aumentou o tempo de processamento de 3 segundos para cerca de 40 segundos em um dataset de 50 mil linhas. Para volumes maiores, essa abordagem não escala bem e aí a normalização prévia com regras manuais continua sendo a opção mais rápida.
O download da lista completa dos estados americanos filtrados por letra pode ser feito a partir de qualquer dataset público do Census Bureau ou do USPS. O link direto para a tabela oficial com nomes e abreviações é census.gov/geographies/reference-maps-and-tables.html. Lá você encontra a lista completa em CSV e JSON, pronta para importação. A lição prática é simples: antes de filtrar, normalize. O tempo gasto com limpeza de dados costuma ser três vezes maior que o tempo do filtro em si, mas é o único jeito de garantir que o resultado não tenha buracos invisíveis.