コメント行の削除
上司から、新しいデータセットに対して複雑なパース処理を行うよう依頼されました。これは ImageNet データセットのアノテーションデータで、特に犬種と画像内での識別に焦点を当てています。本格的な分析に入る前に、不正確・不正なデータをいくつか取り除く必要があります。文書の一般的なスキーマは不明なため、まずは行全体を 1 列に取り込んで、すばやく分析できるようにしたいと考えています。
最初の手順として、データセット内のすべてのコメント行を削除します。
spark コンテキストと、ベースとなる CSV ファイル(annotations.csv.gz)が利用可能です。col 関数も使用できます。
この演習はコースの一部です
PySpark でデータをクレンジングする
演習の手順
annotations.csv.gzファイルを DataFrame に読み込み、行数をカウントします。区切り文字には | を指定します。- 先頭が # で始まる行の数をクエリします。
- ファイルを別の DataFrame として再読み込みし、オプションでコメント文字を指定してコメント行を除外します。
- 新しい DataFrame の行数を数え、差分が想定どおりか確認します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Import the file to a DataFrame and perform a row count
annotations_df = spark.read.____('____', sep=____)
full_count = annotations_df.____
# Count the number of rows beginning with '#'
comment_count = annotations_df.____(col('_c0').____('#')).count()
# Import the file to a new DataFrame, without commented rows
no_comments_df = ____.____.____('____', ____=____, comment='____')
# Count the new DataFrame and verify the difference is as expected
no_comments_count = no_comments_df.count()
print("Full count: %d\nComment count: %d\nRemaining count: %d" % (____, ____, ____))