Ordenando colunas em Pandas

Uma das primeiras tarefas a serem consideradas depois de importar inicialmente um conjunto de dados como DataFrame é analisar a ordem das colunas. Como humanos estamos acostumados a ler línguas da esquerda para a direita, o que impacta nossas interpretações dos dados. É muito mais fácil encontrar e interpretar informações quando a ordem da coluna é considerada.

Não há um conjunto padronizado de regras que dite como as colunas devem ser organizadas em um conjunto de dados. No entanto, é uma boa prática desenvolver um conjunto de diretrizes que você siga consistentemente. Isso é especialmente verdadeiro se você trabalhar com um grupo de analistas que compartilham muitos conjuntos de dados.

A seguir, um passo a passo para organizar colunas:

Identifique cada coluna como categórica ou contínua dentro de suas colunas. Coloque os grupos mais importantes de colunas primeiro com colunas categóricas antes das contínuas. Esta prática mostra como ordenar as colunas com esta diretriz. Há muitas ordens possíveis que são sensatas.

Como fazer isso…

Passo 1. Ler o conjunto de dados de filmes:

movies = pd.read_csv("data/movie.csv")def shorten(col):
return col.replace("facebook_likes", "fb").replace(
"_for_reviews", "")
movies = movies.rename(columns=shorten)

Passo 2. Visualizar as colunas pertencentes ao conjunto:

movies.columns

Passo 3. As colunas não parecem ter nenhuma ordem lógica para elas. Organize os nomes de forma sensata nas listas para que a diretriz da seção anterior seja seguida:

cat_core = [
"movie_title",
"title_year",
"content_rating",
"genres",
]
cat_people = [
"director_name",
"actor_1_name",
"actor_2_name",
"actor_3_name",
]
cat_other = [
"color",
"country",
"language",
"plot_keywords",
"movie_imdb_link",
]
cont_fb = [
"director_fb",
"actor_1_fb",
"actor_2_fb",
"actor_3_fb",
"cast_total_fb",
"movie_fb",
]
cont_finance = ["budget", "gross"] cont_num_reviews = [
"num_voted_users",
"num_user",
"num_critic",
]
cont_other = [
"imdb_score",
"duration",
"aspect_ratio",
"facenumber_in_poster",
]

Concatenar todas as listas para obter a ordem final da coluna!

Passo 4. Concatenar todas as listas para obter a ordem final da coluna. Além disso, certifique-se de que esta lista contém todas as colunas do original:

new_col_order = (
cat_core
+ cat_people
+ cat_other
+ cont_fb
+ cont_finance
+ cont_num_reviews
+ cont_other)
set(movies.columns) == set(new_col_order)
True

Passo 5. Passar a lista com a nova ordem de coluna para o operador de indexação do DataFrame para reordenar as colunas:

movies[new_col_order].head()

Como funciona tudo funciona…

Você pode selecionar um subconjunto de colunas a partir de um DataFrame, com uma lista de nomes de colunas específicos. Por exemplo, filmes [[‘movie_title’, ‘director_name’]] cria um novo DataFrame com apenas as colunas movie_title e director_name.

Selecionar colunas por nome é o comportamento padrão do operador de índice para um DataFrame pandas.

O passo 3 organiza perfeitamente todos os nomes das colunas em listas separadas com base em seu tipo (categórico ou contínuo) e pela semelhança de seus dados. As colunas mais importantes, como o título do filme, são as primeiras colocadas.

A etapa 4 concatena todas as listas de nomes de colunas e valida que esta nova lista contém os mesmos valores exatos dos nomes das colunas originais. Os conjuntos Python são desordenados e a declaração de igualdade verifica se cada membro de um conjunto é um membro do outro. Encomendar manualmente colunas nesta receita é suscetível a erros humanos, pois é fácil esquecer erroneamente uma coluna na nova lista de colunas.

O passo 5 completa o reordenamento passando a nova ordem de coluna como uma lista para o operador de indexação. Esta nova ordem é agora muito mais sensata do que a original.

Há mais… Existem diretrizes alternativas para encomendar colunas além da sugestão mencionada anteriormente. O artigo seminal de Hadley Wickham sobre Dados Arrumados sugere colocar as variáveis fixas em primeiro lugar, seguido por variáveis medidas. Como esses dados não vêm de um experimento controlado, há alguma flexibilidade na determinação de quais variáveis são fixas e quais são medidas. Bons candidatos para variáveis medidas são aqueles que gostaríamos de prever, como bruto, o orçamento ou o imdb_score. Por exemplo, nesta ordem, podemos misturar variáveis categóricas e contínuas. Pode fazer mais sentido colocar a coluna para o número de curtidas do Facebook diretamente após o nome daquele ator. Você pode, é claro, apresentar suas próprias diretrizes para a ordem das colunas, pois as partes computacionais não são afetadas por ela.

Obrigado.

Composing a repository of books (i bought), authors (i follow) & blogs (direct ones) for my own understanding.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store