Excelのカウント関数をPythonで実現するには(初心者向け)
Excelで使うカウント関数は非常に高機能で、初心者の人でもわかりやすく使えるのがポイントです。しかし、大人気言語PythonではExcelのカウント関数のように簡潔に書くことはできません。これを実現するために、どうするべきなのか。簡単に紹介します。
扱う状況
pythonのリスト型の変数「customers_list」にデータとして顧客の年齢が[25,40,30,19,32,16,17]として代入されている。
この時、15歳以上、25歳以下の顧客の人数を求めたい。
注意:エクセルの方法は書きません
使う方法や関数
1.sum関数
Pythonに標準搭載されている関数。引数に渡したリスト内の総和を求める
リスト内のデータ型がbool型のみだったときは、Trueの数をカウントしてくれる
利用例1
test_list = [1,2,3,4,5,6]
sum_result = sum(test_list)
print(sum_result)
結果
>>21
利用例2
test_list = [True,False,False,True,True]
sum_result = sum(test_list)
print(sum_result)
結果
>>3
2.リスト内包表記
簡潔にいうと「さまざまな要素を持つリストを一行で生成しちゃおう」というもの
例えば[A,B,C,・・・,X,Y,Z]というアルファベットの大文字がAーZまで全て入っているリストを作る時、全ての要素を列挙して定義すると以下のようになります。
alphabets_list=[A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z]
しかし、先ほどのリスト内包表記を用いると、
alphabet_list=[ chr(i) for i in range(65,91)]
というふうに記述することができます。pythonのコードを書く上でリスト内包表記は処理も早く、コード量を大幅に減らすことができる場合もあるので、非常に有効な手段でしょう。
3.比較演算子
比較演算を行ったときに、比較対象が真であったときにTrueを返し、偽出会った時はFalseを返す、bool型の値を生成する演算子のことを言います
百聞は一見にしかずなので、実際の実行例を見てみましょう。
a = 30
cul_result = 60 > a
print(cul_result)
この実行結果はこうなります。
>>True
30は60よりも当然大きいので、結果は真となり、Trueを返します。
それでは実際に作っってみよう。
色々話す前に、実際のコードを書いていきます。
#顧客の年齢を格納したリスト型の変数を初期化
customers_list=[25,40,30,19,32,16,17]
# 年齢が15歳以上25歳以下ならTrueを返し、それ以外ならFalseを格納したリストを
# リスト内包表記で作成し、それをsum関数でTrueの数を数える。
age_between_15_and_25=sum( [ 15 <= i <= 25 for i in customers_list ] )
# sum関数の結果を表示する。
print(age_between_15_and_25)
実行すると、しっかりと以下のような結果が出ると思います。
>>4
基本的なコードの組み合わせなので、解説は省きますが、これで実装することができます。
もし、必要となる場面があれば、ぜひ使ってみてください。
最後までお読みいただきありがとうございました。
追記(2022年10月1日22:39)
WalfMoon様より、このようなご指摘をいただきました。
実際の実行コードにおいて、こちらのほうでもよいのではないか
#顧客の年齢を格納したリスト型の変数を初期化
customers_list=[25,40,30,19,32,16,17]
# 年齢が15歳以上25歳以下なら、新しいリストの要素として追加する。
# それをリスト内包表記で作成し、それをlen関数で要素数を数える。
age_between_15_and_25=len( [ i for i in customers_list if 15 <= i <= 25] )
print(age_between_15_and_25)
こちらのコードのほうがより直感的でわかりやすい方もいらっしゃるかもしれないので、記事の中に直接記載させていただきます。思慮深いご指摘をくださった、WolfMoon様、ありがとうございました。
(実際にいただいたコードから、少し編集して、先述した内容に合致するように変更しております。)