始める無料で始める

危険な結合

この演習では、緯度(Latitude)と経度(Longitude)で結合して、地域の歩きやすさを測る別のデータセットを取り込みます。結合に使う列のデータ型が同じであること、そして同じ精度(小数点以下の桁数)で結合していることを必ず確認しましょう。そうしないと結合はうまくいきません!

以下では、df['latitude']df['longitude'] の精度が walk_df['longitude']walk_df['latitude'] より高いことがわかります。結合を正しく行うため、同じ精度に丸める必要があります。

この演習はコースの一部です

PySparkで学ぶ特徴量エンジニアリング

コースを見る

演習の手順

  • withColumn() で列を置き換えながら、walk_df['latitude']walk_df['longitude']cast('double') を使って double 型に変換します。
  • withColumn()round('latitude', 5)round('longitude', 5) を用いて、これらの列をその場で丸めます。
  • walk_df['latitude']df['latitude'] に一致し、walk_df['longitude']df['longitude'] に一致するという結合条件を作成します。
  • 上記の条件と left 結合タイプを使って join()dfwalk_df を結合し、結合後のデータフレームを join_df として保存します。

実践的なインタラクティブ演習

このサンプルコードを完成させて、この演習に挑戦してみましょう。

# 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())
コードを編集して実行