Pythonでのcountの使い方とは?Pythonでの要素のカウントについて紹介
- システム
エンジニア - Pythonでのcountの使い方が知りたいです。
- プロジェクト
マネージャー - 文字列のcountなど実際のソースコードを交えて説明しますので、一緒に見ていきましょう。
Pythonでのcountの使い方とは?
今回は、Pythonでのcountの使い方について説明します。
ここでは、以下について紹介します。
・文字列のcount
・正規表現でcount
・listのcount
・dataFrameのcount
Pythonでのcountの使い方に興味のある方はぜひご覧ください。
文字列のcount
Pythonでの文字列に対するcountの使い方を紹介します。
countは以下のように使用します。
1
|
文字列.count('検索文字列'[, 開始位置][, 終了位置])
|
実際のソースコードを見てみましょう。
1
2
3
4
5
6
|
str = 'This is count method sample code.'
# 出現文字のカウント
print(str.count('a')) # 1
print(str.count('e')) # 3
print(str.count('is')) # 2
|
実行結果は以下のようになります。
1
2
3
|
1
3
2
|
開始位置や終了位置を指定することもできます。
1
2
3
4
5
6
|
str = 'This is count method sample code.'
# 出現文字のカウント
print(str.count('a', 0)) # 1
print(str.count('e', 0, 10)) # 0
print(str.count('is', 2, 10)) # 2
|
実行結果は以下のようになります。
1
2
3
|
1
0
2
|
collectionsを使ったcountもできます。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
from collections import Counter
str = 'This is count method sample code.'
counter = Counter(str)
# 出現文字をすべてカウント
print(counter) # Counter({' ': 5, 's': 3, 'o': 3, 'e': 3, 'h': 2, 'i': 2, 'c': 2, 't': 2, 'm': 2, 'd': 2, 'T': 1, 'u': 1, 'n': 1, 'a': 1, 'p': 1, 'l': 1, '.': 1})
# 特定文字の出現数をカウント
print(counter['e']) # 3
# 出現回数の多い順に表示
print(counter.most_common()) # [(' ', 5), ('s', 3), ('o', 3), ('e', 3), ('h', 2), ('i', 2), ('c', 2), ('t', 2), ('m', 2), ('d', 2), ('T', 1), ('u', 1), ('n', 1), ('a', 1), ('p', 1), ('l', 1), ('.', 1)]
# 出現回数の多い3つを表示
print(counter.most_common(3)) # [(' ', 5), ('s', 3), ('o', 3)]
|
実行結果は以下のようになります。
1
2
3
4
|
Counter({' ': 5, 's': 3, 'o': 3, 'e': 3, 'h': 2, 'i': 2, 'c': 2, 't': 2, 'm': 2, 'd': 2, 'T': 1, 'u': 1, 'n': 1, 'a': 1, 'p': 1, 'l': 1, '.': 1})
3
[(' ', 5), ('s', 3), ('o', 3), ('e', 3), ('h', 2), ('i', 2), ('c', 2), ('t', 2), ('m', 2), ('d', 2), ('T', 1), ('u', 1), ('n', 1), ('a', 1), ('p', 1), ('l', 1), ('.', 1)]
[(' ', 5), ('s', 3), ('o', 3)]
|
このようにPythonでは、文字列に対して出現要素のcountができます。
正規表現でcount
Pythonでは文字列に対して、正規表現でcountできます。
実際のソースコードを見てみましょう。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
import re
str = 'This is count method sample code.'
# 数字
print(len(re.findall('[0-9]', str))) # 0
# アルファベット大文字
print(len(re.findall('[A-Z]', str))) # 1
# アルファベット小文字
print(len(re.findall('[a-z]', str))) # 26
# アルファベット
print(len(re.findall('[a-zA-Z]', str))) # 27
# 任意の1文字
print(len(re.findall('.', str))) # 33
|
実行結果は以下のようになります。
1
2
3
4
5
|
0
1
26
27
33
|
このようにPythonでは、文字列に対して正規表現でcountできます。
listのcount
Pythonでは、listに対してもcountを使用できます。
実際のソースコードを見てみましょう。
1
2
3
4
5
6
7
|
# listの生成
list = ['a', 'b', 'b', 'c', 'c', 'c', 'd', 'd', 'd', 'd']
print(list.count('a')) # 1
print(list.count('b')) # 2
print(list.count('c')) # 3
print(list.count('d')) # 4
|
実行結果は以下のようになります。
1
2
3
4
|
1
2
3
4
|
listに対しては、開始位置と終了位置の指定はできません。指定すると、実行時エラーになります。
1
2
3
4
|
# listの生成
list = ['a', 'b', 'b', 'c', 'c', 'c', 'd', 'd', 'd', 'd']
print(list.count('a', 0, 3))
|
実行結果は以下のようになります。
1
2
3
4
|
Traceback (most recent call last):
File "Main.py", line 4, in <module>
print(list.count('a', 0, 3))
TypeError: count() takes exactly one argument (3 given)
|
文字列と同じように、collectionsでcountできます。
1
2
3
4
5
6
7
8
9
10
11
|
from collections import Counter
# listの生成
list = ['a', 'b', 'b', 'c', 'c', 'c', 'd', 'd', 'd', 'd']
# 出現要素のカウント
counter = Counter(list)
print(counter) # Counter({'d': 4, 'c': 3, 'b': 2, 'a': 1})
print(len(counter)) # 4
print(counter.most_common()) # [('d', 4), ('c', 3), ('b', 2), ('a', 1)]
print(counter.most_common(3)) # [('d', 4), ('c', 3), ('b', 2)]
|
実行結果は以下のようになります。
1
2
3
4
|
Counter({'d': 4, 'c': 3, 'b': 2, 'a': 1})
4
[('d', 4), ('c', 3), ('b', 2), ('a', 1)]
[('d', 4), ('c', 3), ('b', 2)]
|
listに対して、特定文字を検索するには以下のように記述します。
1
2
3
4
5
6
7
|
# listの生成
list = ['red', 'green', 'blue', 'white', 'black', 'yellow', 'purple', 'pink']
# bで始まる要素をカウント
print(sum([str.startswith('b') for str in list]))
# eで終わる要素をカウント
print(sum([str.endswith('e') for str in list]))
|
実行結果は以下のようになります。
1
2
|
2
3
|
dataFrameのcount
Pythonでは、dataFrameに対してカウントする方法を紹介します。
事前に、以下のCSVを準備しておきます。
1
2
3
4
5
6
7
|
name,age,gender
taro,20,male
hanako,32,female
jiro,43,male
ichiro,17,male
takako,35,female
hiroko,26,female
|
実際のソースコードを見てみましょう。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
import pandas as pd
df = pd.read_csv('sample.csv')
# データの表示
print(df)
# ageの条件でカウント
print(sum(df['age'] < 35)) # 4
# genderの条件でカウント
print(sum(df['gender'] == 'male')) # 3
print(sum(df['gender'] == 'female')) # 3
# age かつ genderの条件でカウント
print( sum((df['gender'] == 'male') & (df['age'] < 35)) ) # 2
|
実行結果は以下のようになります。
1
2
3
4
5
6
7
8
9
10
11
|
name age gender
0 taro 20 male
1 hanako 32 female
2 jiro 43 male
3 ichiro 17 male
4 takako 35 female
5 hiroko 26 female
4
3
3
2
|
条件を満たす要素がカウントされていることが分かります。
- システム
エンジニア - 実際のソースコードでの表示の仕方もあり、Pythonでのcountの使い方がよく理解できました。
- プロジェクト
マネージャー - 文字列を入力した後に実際のソースコードでどのように表示されているかを確認することで、Pythonでのcountの使い方をより理解することができるでしょう。
まとめ
いかがでしたでしょうか。Pythonでのcountの使い方について説明しました。文字列やlistおよびdataFrameのカウント方法について紹介しました。
ぜひご自身でPythonのソースコードを書いて、理解を深めてください。
FEnet.NETナビ・.NETコラムは株式会社オープンアップシステムが運営しています。
株式会社オープンアップシステムはこんな会社です
秋葉原オフィスには株式会社オープンアップシステムをはじめグループのIT企業が集結!
数多くのエンジニアが集まります。
-
スマホアプリから業務系システムまで
スマホアプリから業務系システムまで開発案件多数。システムエンジニア・プログラマーとしての多彩なキャリアパスがあります。
-
充実した研修制度
毎年、IT技術のトレンドや社員の要望に合わせて、カリキュラムを刷新し展開しています。社内講師の丁寧なサポートを受けながら、自分のペースで学ぶことができます。
-
資格取得を応援
スキルアップしたい社員を応援するために資格取得一時金制度を設けています。受験料(実費)と合わせて資格レベルに合わせた最大10万円の一時金も支給しています。
-
東証プライム上場企業グループ
オープンアップシステムは東証プライム上場「株式会社オープンアップグループ」のグループ企業です。
安定した経営基盤とグループ間のスムーズな連携でコロナ禍でも安定した雇用を実現させています。
株式会社オープンアップシステムに興味を持った方へ
株式会社オープンアップシステムでは、開発系エンジニア・プログラマを募集しています。
年収をアップしたい!スキルアップしたい!大手の上流案件にチャレンジしたい!
まずは話だけでも聞いてみたい場合もOK。お気軽にご登録ください。
Python新着案件New Job
-
マルチロガーソフト開発/東京都豊島区/【WEB面談可/C#経験者/20代後半~40代の方活躍中/経験年数不問】/在宅勤務
月給41万~50万円東京都豊島区(池袋駅) -
マルチロガーソフト開発/東京都豊島区/【WEB面談可/C#経験者/20代前半の方活躍中/経験1年以上の方活躍中】/在宅勤務
月給29万~34万円東京都豊島区(池袋駅) -
商品化予定の振動センサーの運用保守/Python/東京都都内/【WEB面談可】
月給50万~60万円東京都都内(-駅) -
商品化予定の振動センサーの可視化UI開発のテスター/Python/東京都都内/【WEB面談可】
月給25万~35万円東京都都内(-駅) -
商品化予定の振動センサーの運用保守/Python/東京都都内/【WEB面談可】
月給50万~60万円東京都都内(-駅) -
商品化予定の振動センサーの可視化UI開発のテスター/Python/東京都都内/【WEB面談可】
月給25万~35万円東京都都内(-駅)