ComeçarComece de graça

Uma junção perigosa

Neste exercício, vamos fazer uma junção por latitude e longitude para trazer outro conjunto de dados que mede o quão caminhável é um bairro. Precisamos ter cuidado para garantir que as colunas usadas na junção sejam do mesmo tipo de dado e que estejamos juntando com a mesma precisão (número de casas decimais), caso contrário a junção não vai funcionar!

Abaixo, você verá que df['latitude'] e df['longitude'] têm uma precisão maior do que walk_df['longitude'] e walk_df['latitude']. Vamos precisar arredondá-las para a mesma precisão para que a junção funcione corretamente.

Este exercício faz parte do curso

Feature Engineering com PySpark

Ver curso

Instruções do exercício

  • Converta walk_df['latitude'] e walk_df['longitude'] para o tipo double usando cast('double') na coluna e substituindo a coluna no lugar com withColumn().
  • Arredonde as colunas no lugar com withColumn() e round('latitude', 5) e round('longitude', 5).
  • Crie a condição de junção onde walk_df['latitude'] corresponde a df['latitude'] e walk_df['longitude'] corresponde a df['longitude'].
  • Faça a junção de df e walk_df com join(), usando a condição acima e o tipo de junção left. Salve o dataframe resultante como join_df.

Exercício interativo prático

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

# Cast data types
walk_df = ____.withColumn('longitude', ____.cast('double'))
walk_df = ____.withColumn(____, ____.cast('double'))

# Round precision
df = df.withColumn('longitude', round(____, 5))
df = df.withColumn(____, round(____, 5))

# Create join condition
condition = [____ == ____, ____ == ____]

# Join the dataframes together
join_df = ____.join(____, on=____, how=____)
# Count non-null records from new field
print(join_df.where(~join_df['walkscore'].isNull()).count())
Editar e executar o código