【データ分析初心者】Python構文~if文、format記法とf文字列

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

はじめに

データ分析データサイエンスの初心者初学者に最初に覚えて欲しいPythonの構文がいくつかあります。

今回はその中の一つである、データ分析でよく使うPython構文であるif文format記法f文字列を紹介します。

このブログでは、①基本をしっかりと示し、②実際のデータ分析でどのように使われるかという具体例を紹介します!

読み終えたあとには、しっかりとその構文が身についていると思います。

if文~基本~

if文とは、英語のifと同じで、もし~の場合、~のように処理するとしたいときに使う構文です。

その条件文を満たす場合は、その下のインデントされた(半角4字下げ)処理が実行され、満たさない場合は、何も処理されません

Google Colaboratoryif文を動かしてみます。

それでは、はじめましょう!!

i100を入れます。

次に、条件文を「もしiが100なら」とし、満たした場合には、「100が入っています。」と表示するようにします。条件文の最後に、を書くことは絶対に忘れないでください。

なお、==一致を表します。

こちらをコードにすると以下のようになります。そして実際に実行してみましょう。

今回、この条件文を満たしますので、その下のインデントされた(半角4字下げ)処理が実行され「100が入ってます。」と表示されました。

なお、このインデントの下げ方ですが、半角スペース4回押す以外に、Tabキー一回だけ押すという方法もあります。

次は、i200にしてみます。どうなるでしょう?

条件文を満たさないので、何も表示されません

せっかくなので、満たさない場合にも何か表示させてみます。

その場合に、elseを使用し、満たさない場合には「100が入っていません」と表示させるようにします。これを実行してみます。

条件文を満たさない場合、「100が入ってません。」が表示されましたね!

また、条件文は2つ以上わけることもできます。

その場合には、elifを使います。iが100なら100が入っていますと表示し、iが200の場合には、200が入っていますと表示されるようにしました。これを実行してみます。

一方、1つ目の条件文、2つ目の条件文どちらも満たしてしまう場合には、どのようになるでしょうか。

最初の条件がiが100以上なら100が入っていますと表示し、次の条件がiが200なら200が入っていますと表示されるようにしました。これを実行してみます。

その場合は、最初の処理だけが実行されます。

もうお分かりかもしれませんが、1つ目の条件文と2つ目の条件文を満たさない場合には、else実行されます。

例えば、以下のような場合です。

if文の基本はこちらで終了です。

番外編 format記法とf文字列

format記法 format()とf文字列 (f’’) も学んでみましょう!

これらもよくデータサイエンティストのコードに出てくるものなので、覚えておきましょう。

まずは、format記法です。

format()を用いて、{}の中に、iに入っている値(100)を表示させてみましょう。

それには、文字列を表すシングルクォーテーションの中に{}を用いたうえで、.format()を使います。

そのコードが以下になります。

このように、format()引数であるiの値100{}の中に表示できました。

次は、f文字列を用いて同じように表示してみます。

fの後に、文字列を表すシングルクォーテーションの中に{}を用いたうえで、{}の中に表示したい引数iをいれます。

そうすると、{}の中に表示したいiの値100が表示されます。

if文~データ分析で実際に使われるような具体例~

次は、データ分析で実際に使われるif文を見てみましょう!

データサイエンス100本ノック(構造化データ加工編)問55を用います。

データサイエンス100本ノック(構造化データ加工編)を知りたい方は下記のブログ記事を参考にしてください。
>>【Google Colabはじめ方】データサイエンス100本ノックーデータサイエンティスト協会

問55 レシート明細データフレーム(df_receipt)の売上金額(amount)を顧客ID(customer_id)ごとに合計し、その合計金額の四分位点を求めよ。その上で、顧客ごとの売上金額合計に対して以下の基準でカテゴリ値を作成し、顧客ID、売上金額合計とともに表示せよ。カテゴリ値は上から順に1〜4とする。結果は10件表示させれば良い。
最小値以上第一四分位未満
第一四分位以上第二四分位未満
第二四分位以上第三四分位未満
第三四分位以上

df_receiptの中身を見てみます。

次に、df_receiptの売上金額amountを顧客IDcustomer_idごとの合計を表示します。

このデータフレームに1〜4カテゴリ値を作成します。そのカテゴリー値は以下の基準で作成します。

最小値以上第一四分位未満   1
第一四分位以上第二四分位未満 2
第二四分位以上第三四分位未満 3
第三四分位以上        4

第一四分位とは、データの25%の値、第二四分位とは、データの50%の値、第三四分位とはデータの75%の値を指します。

データの25%の値をpct25、データの50%の値をpct50、データの75%の値をpct75として、それぞれ以下のようにコードを書きます。

pct25 = np.quantile(df_sales_amount['amount'],0.25)
pct50 = np.quantile(df_sales_amount['amount'],0.50)
pct75 = np.quantile(df_sales_amount['amount'],0.75)

これを前提にpct_groupを作成し、上記基準にカテゴリー値(1~4)を割り振る関数を作成します。

ここで、先ほどの基本で学んだif文を用います!

もし(if)25%以下ならカテゴリー値返します。

そうではなくて(elif)25%より上、50%より下ならカテゴリー値2返します。

そうではなくて(elif)50%より上、75%より下ならカテゴリー値3返します。

そうではなくて(elif)75%以上なカテゴリー値4返します。

というものをコードにすると下記のようになります。

def pct_group(x):
    if x < pct25:
        return 1
    elif pct25 <= x < pct50:
        return 2
    elif pct50 <= x < pct75:
        return 3
    elif pct75 <= x:
        return 4

最後に、df_sales_amount‘pct_group’のカラムを新たに作り、その中に、1~4のカテゴリー値を入れていきます。

df_sales_amount['pct_group'] = df_sales_amount['amount'].apply(lambda x:pct_group(x))

これで、顧客ごとの売上金額合計に対して1~4のカテゴリ値を割り当て、顧客ID、売上金額合計とともに表示できました!

このように、実際のデータ分析では、if文が用いられます。

なお、最後に出てきましたlambda式については、後日説明します。

また、if文には、for文と合わせて用いられたり、lambda式と合わせて用いられたりしますので、そちらについても後日紹介します。

書籍や動画でデータ分析を学びたい方へ

機械学習データサイエンス独学で学びたい方のために、ブログ記事まとめてみました。

書籍、動画などなど、厳選したオススメの方法をまとめています。

興味がある方はご覧ください。