ComeçarComece de graça

Modificando colunas do DataFrame

Anteriormente, você filtrava todas as linhas que não estivessem em conformidade com algo que se assemelhasse a um nome. Agora, com base no seu trabalho anterior, seu gerente pediu que você criasse duas novas colunas - first_name e last_name. Ela pede que você divida a coluna VOTER_NAME em palavras em qualquer caractere de espaço. Você tratará a última palavra como last_name, e todas as outras palavras como first_name. Você usará algumas funções novas neste exercício, incluindo .split(), .size() e .getItem(). O .getItem(index) usa um valor inteiro para retornar o item numerado adequadamente na coluna. As funções .split() e .size() estão na biblioteca pyspark.sql.functions.

Observe que essas operações são sempre um pouco específicas para o caso de uso. O fato de seus dados estarem em conformidade com um formato geralmente é mais importante do que os detalhes específicos do formato. Raramente uma tarefa de limpeza de dados é destinada apenas a uma pessoa - a correspondência com um formato definido permite o compartilhamento mais fácil dos dados posteriormente (ou seja, Paulo não precisa se preocupar com nomes - Maria já limpou o conjunto de dados).

O DataFrame do eleitor filtrado que você usou no exercício anterior está disponível em voter_df. A biblioteca pyspark.sql.functions está disponível sob o pseudônimo F.

Este exercício faz parte do curso

Limpeza de dados com o PySpark

Ver curso

Instruções do exercício

  • Adicione uma nova coluna chamada splits que contém a lista de nomes possíveis.
  • Use o método getItem() e crie uma nova coluna chamada first_name.
  • Obtenha a última entrada da lista splits e crie uma coluna chamada last_name.
  • Elimine a coluna splits e mostre a nova voter_df.

Exercício interativo prático

Experimente este exercício completando este código de exemplo.

# Add a new column called splits separated on whitespace
voter_df = voter_df.withColumn(____, F.____(voter_df.VOTER_NAME, '\s+'))

# Create a new column called first_name based on the first item in splits
voter_df = voter_df.withColumn(____, voter_df.splits.getItem(____)

# Get the last entry of the splits list and create a column called last_name
voter_df = voter_df.withColumn(____, voter_df.splits.getItem(F.____('splits') - ____))

# Drop the splits column
voter_df = voter_df.____('splits')

# Show the voter_df DataFrame
voter_df.show()
Editar e executar o código