Python で列の内容をフィルタリングする
これまでに DataFrame の各列に対してさまざまな操作を行ってきました。ここでは実際のデータセットを整形してみます。DataFrame voter_df には、過去数年分の Dallas City Council(ダラス市議会)の投票者に関する情報が入っています。この省略版の DataFrame には、投票日、投票者の氏名、役職が含まれます。マネージャーから、このデータを後でレポートに統合できるようクリーニングするよう依頼されています。主な作業は、null のエントリや不自然な文字を取り除き、情報を検証できる特定の投票者の集合を返すことです。
これはデータクリーニングの最初のステップのひとつで、明らかにフォーマット外のものを除去します。このデータセットでは、元データを確認し、VOTER_NAME 列で不自然に見えるものがないかをチェックしてください。
pyspark.sql.functions ライブラリは、エイリアス F で既にインポートされています。
この演習はコースの一部です
PySpark でデータをクレンジングする
演習の手順
VOTER_NAMEの重複しない値を表示します。VOTER_NAMEの長さが 1〜20 文字の行にvoter_dfをフィルタリングします。VOTER_NAMEに_が含まれる行をvoter_dfから除外します。- もう一度、
VOTER_NAMEの重複しない値を表示します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Show the distinct VOTER_NAME entries
voter_df.select(____).distinct().show(40, truncate=False)
# Filter voter_df where the VOTER_NAME is 1-20 characters in length
voter_df = ____('length(VOTER_NAME) > 0 and length(VOTER_NAME) < 20')
# Filter out voter_df where the VOTER_NAME contains an underscore
voter_df = voter_df.filter(~ F.col('VOTER_NAME').____)
# Show the distinct VOTER_NAME entries again
voter_df.____(____).____().____(40, truncate=False)