【問15~問17】データサイエンス100本ノック 解説

※アフィリエイト広告を利用しています。

ファイル

はじめに

問15~問17のコードの説明を初心者や初学者でもわかるような方法でまとめました。

データサイエンス100本ノックのはじめ方は、ブログ記事を参考にしてください。
>>【Google Colabはじめ方】データサイエンス100本ノックーデータサイエンティスト協会

問15 顧客データフレーム(df_customer)から、ステータスコード(status_cd)の先頭がアルファベットのA〜Fで始まり、末尾が数字の1〜9で終わるデータを全項目抽出し、10件だけ表示せよ。

抽出するには、.query()を使用します。

先頭がアルファベットのA〜Fで始まるデータは、^[A-F]になります(詳細は問13をご覧ください)。

末尾が数字の1〜9で終わるデータは、[1-9]$になります(詳細は問14をご覧ください)。

この2つを満たすコードは、Pythonの正規表現である、任意の1文字を表す前の文字が0回以上繰り返されるのを表すを使用します。

よって、^[A-F].*[1-9]$となります。

なお、^[A-F].+[1-9]$でも同じ結果でます。

df_customer.query('status_cd.str.contains("^[A-F].*[1-9]$")',engine='python').head(10)

問16 店舗データフレーム(df_store)から、電話番号(tel_no)が3桁-3桁-4桁のデータを全項目表示せよ。

抽出するには、.query()を使用します。

今回は、(df_store)から、電話番号(tel_no)が3桁3桁4桁のデータを全項目表示します。

それには、Pythonの正規表現である、範囲を表す[]連続する値の範囲を指定する繰り返す回数を表す{}を使用します。

( )内には、特定の文字列を含む要素を持つ行を抽出する、str.contains()を使います。

今回のtel_noは、数字で構成されていますが、調べてみると文字列型です。そのため、引用符が必要です。

なお、文字列の中でシングルクォーテーションを使いたい場合はダブルクォーテーションで囲むか、ダブルクォーテーションを使いたい場合はシングルクォーテーションで囲むというのを忘れないでください。

そして、.query()で文字列メソッドを使う場合、第2引数に「engine=’python’」を指定しないとエラーがでます!

df_store.query('tel_no.str.contains("[0-9]{3}-[0-9]{3}-[0-9]{4}")',engine='python')

*上の表は一部だけ表示

問17 顧客データフレーム(df_customer)を生年月日(birth_day)で高齢順にソートし、先頭10件を全項目表示せよ。

(df_customer)を生年月日(birth_day)をソートするには、sort_values()というメソッドを使用します。また、高齢順なので、df_customer.sort_values(‘カラム名’, ascending=True)となります。

なお、ascending=True昇順(例:数字なら増える順)、ascending=False降順(例:数字なら減る順)に並び替えられ、ascending=Trueは省略することもできます

また、先頭10件を表示は.head(10)です。

df_customer.sort_values('birth_day').head(10)

Pythonのコードやライブラリーについて知りたい場合

Pythonデータ分析よく使われている言語です。

この機会にPythonコードの打ち方・ライブラリーについてもっと知りたいと思った方は、以下のブログ記事をご覧ください。

独学でデータ分析をしている方へ

機械学習データサイエンスデータ分析独学で学ぶには、どうしたらよいかをまとめてみましたので、興味がある方はこちらのブログ記事をご覧ください。