概要
こんにちは、すのくろです。
今回はプログラミングでよく出てくる基本処理の一つである「if文」について説明したいと思います。
if文の解説は様々なサイトであるかと思いますが、本サイトではデータ分析にうまく適用できるような説明を心がけていきます。
本記事の構成は、以下の通りです。
・前半:if文を作るための基礎知識の説明
・後半:データ分析でのif文の使い方の簡単な例
また、if文を応用したfor文での実践的なデータ分析に関しては他の記事でまとめていますので、
「if文については全然問題なく使えるよ」という方はこの記事は読まなくても良いかもしれません。笑
ここでif文の基本を抑えたい方は続きを読み進めてください。
Pythonを用いたデータ分析のために重要な概念なので、ここでぜひ憶えていただけると幸いです。
それでは解説していきます!
if文の基本の型
初めにif文の基本の型のコードを実際にお見せして、詳細を解説します。
# 基本の作り方
a = 3
if a == 3:
print('aは3')
出力結果↓
aは3
if文の作成の流れは以下の通りです。
- if 条件式 の記載
- 条件式後にコロン(:)で改行
- インデントを入れた中で条件式を満たした場合の実行内容を記載
下の図が先ほどのコード例での各フローのポイントです。
図で見てもらえれば、if文
の流れが理解できるかと思います。
1の条件式については「=」や「<」などを使います。
2のコロン(:)については結構忘れることがあるので、気をつけて下さい。コロンのつけ忘れに気づかずずっとエラーで止まってしまうみたいなこともあります。
3のインデントですが、2の条件式後のコロンがついていれば、改行時に自動でインデントしてくれ流ので問題ないかと思いますが、何度か書き換えていくうちに、インデントが消えたりする場合もあるので、その辺は気をつけるという感じですね。
また、余談ですが、pythonでは、インデント(余白)が非常に大事で、このインデントがないと、if文などを認識してくれません。
また、視覚的にもインデントがあった方が、処理内容がわかりやすいため、今後はインデントを常に意識してコードを書いていけると良いと思います。
条件の分岐(else)
先ほどの例では、ifの条件を満たした場合のみ何かを実行するというコードでした。
次に、もしその条件を満たさない場合や他の条件なども加えた場合のif文についても見ていきましょう。
まずは、「else」を使った条件式を満たさない場合です。
先にコードを示します。
# 条件の分岐 else
x = 1
if x == 2: #条件
print('x は 2 です')
else: #他の場合
print('xは 2 ではない他の数で、')
print('xは', x)
出力結果↓
xは 2 ではない他の数で、
xは 1
雰囲気はわかるとは思いますが、このコードでは何が起きているか簡単に説明します。
上のif文では、xの値が「2」の場合、「2」以外の場合で分岐しています。
今回、xは1なので、条件式に当てはまらず、「else」(その他の場合)の処理が実行されています。
print()文でxが1であることを示した出力をしてくれています。
(初めてif文を自分で実行してみた時に、こうやって実際に意図通りに結果が出力されるのは面白かったのを覚えています。余談でした。)
条件の分岐(elif)
次に、条件が複数ある場合です。
その時は2つ目以降の条件式を「elif」で指定していきます。
else
基本の考え方は通常のif文と同じです。「elif」は「if」の次であれば何個でも使うことは可能です。
以下が、elifを使った場合の処理の流れのイメージです。
ちなみに、他の言語だと「elif」が 「else if」だったりします。
それでは、実際に「elif」を使ったコードをみてみましょう。
# 条件の分岐 else, elif
x = 1
if x == 2: #条件1
print('x は 2 です')
elif x == 3: #条件2
print('x は 3 です')
else: #他の場合
print('xは 2 でも 3 でもない他の数で、')
print('xは', x)
出力結果↓
xは 2 でも 3 でもない他の数で、
xは 1
このように、条件式がifとelifの2つあり、どちらにも当てはまらず最終的にelseの実行文が処理されているのがわかります。
これで、複数の条件を検討したい時などのif文の方法が使えるようになりました!
条件式によく使う記号まとめ
if文の使い方はこれでわかったと思いますが、あとはどんな条件式を作って実行させていきたいかの助けとなる記号例を紹介します。
よく使うのは以下のものです。
- A == B「AがBである時」
- A != B「AがBでない時」
- A >= B「AがB以上の時」
- A <= B「AがB以下の時」
- (A == B) & (C == D)「AがBであり、かつ、CがDである時」(「&」は「and」でもOK)
- (A == B) | (C == D)「AがBである時、または、CがDである時」(「|」は「or」でもOK)
実際にコードにした例を示します。
# |(or, または)の使い方
a = 4
b = 5
if (a == 3) | (b == 2):
print('aは3、または、bは2')
else:
print('aは3ではない、かつ、bは2ではない')
出力結果↓
aは3ではない、かつ、bは2ではない
上記では、aが3でもなく、bが2でもないため、ifの条件式に引っ掛からずelseの処理が行われています。
&(and、かつ)や、|(or、または)はややこしいので使うときに気をつけてもらいたいです。
・「&」では両方の条件を満たさなければ実行できない
・「|」では、どちらかさえ満たせば実行できる
です。うまく使い分けられるとデータ分析でも重宝する場面があるかと思います。
データ分析で使うイメージ例
最後に、よくある文字でのプリント文での処理ではなく、データ分析チックなif文の使い方の簡単な例を説明したいと思います。
# データ分析の例
data = np.random.rand(4, 5)
x = data[0,0]
if data[0,0] >= 2:
data[0, 0] = 3
else:
data[0,0] = 0
print(data)
出力結果↓
[[0. 0.69420973 0.06499066 0.36788356 0.35461583]
[0.27418804 0.77117007 0.03639872 0.31263237 0.040383 ]
[0.87420317 0.30204439 0.19618121 0.69458742 0.48837904]
[0.60320224 0.43153328 0.11457624 0.82468289 0.87997463]]
コードの流れを簡単に説明します。
まず、「data」という行列データがあるとします。
この行列の1行1列目(左上)の値に対してif文を適用しています。
・「もし1行1列目(左上)の値が2以上であれば、そこの値を3に変更しちゃいます。」
・「もし2未満だったら、そこの値は0に変えちゃいます」
といった条件の内容です。
実際に値は2未満なので、出力された新しい「data」では、左上の数が0に変わっています。
こんな雰囲気で、データの中の値を操作する際にif文を使うこともできます。
あくまで今回の例はイメージです。実際にはfor文と組み合わせて色々な処理を回して好きな場合だけ値を取り出していったりなどの活用をします。
また、pandasのデータフレームで処理していく方が簡単でスマートな場合もあるのですが、まずはif文も使えると良いと思います。
まとめ
本記事では、pythonのif文の基本的な使い方と、実際に使っていくイメージを紹介しました。
基本を学んで定着させて、データ分析にも今後生かしていけるようになれば幸いです!
Pythonを中心としたプログラミングをより体系的に学びたいと言う方向けに、おすすめのオンラインスクールを2つ厳選して紹介していますので、こちらもよければご覧ください!
以上、ここまでお読みいただき、ありがとうございました!
コメント