【pandas】カンマ区切りの複数要素を結合して集計する方法
当ページのリンクには広告が含まれています。
Googleフォームなどのアンケートを行った際に、「複数選択可」な項目を用いた場合は一つの項目内に
A, B, C
のように記載されます。これらの項目を合計して各項目ごとの値を集計する方法をご紹介いたします。
目次
データフレームの作成
まずはpandas
でデータフレームを作成します。今回はExcelファイルでデータフレームを作成しています。
import pandas as pd
df = pd.read_excel("sample.xlsx")
データフレームは下記のような形式を作成しました。
id | Quastion1 |
---|---|
1 | A,B |
2 | A |
3 | C |
4 | A,B,C |
5 | A,C |
値を配列に変換
カンマ区切りの値を分割してリスト形式にする場合にはstr.split()
を用います。
pandasの文字列を区切り文字や正規表現で複数の列に分割 | note.nkmk.me
pandasで文字列の列を区切り文字や正規表現パターンで複数の列に分割するには文字列メソッドstr.split(), str.extract()を使う。 ここでは以下の内容について説明する。 区…
Quastion1
だけを取り出し配列にしました。
df["q1"] = df["Quastion1"].str.split(',')
df["q1"]
0 [A, B]
1 [A]
2 [C]
3 [A, B, C]
4 [A, C]
Name: q1, dtype: object
配列の結合
それぞれの配列を結合します。
q1 = sum(df['q1'], [])
q1
['A', 'B', 'A', 'C', 'A', 'B', 'C', 'A', 'C']
配列の値を集計
collections.Counter()
で値の集計をします。
collections — コンテナデータ型
ソースコード: Lib/collections/__init__.py このモジュールは、汎用の Python 組み込みコンテナ dict, list, set, および tuple に代わる、特殊なコンテナデータ型を実装…
PythonのCounterでリストの各要素の出現個数をカウント | note.nkmk.me
Pythonでリストやタプルの全要素の個数は組み込み関数len()、各要素の個数(要素ごとの出現回数)はcount()メソッドで取得できる。さらに、Python標準ライブラリcollection…
import collections
c = collections.Counter(q1)
c
Counter({'A': 4, 'B': 2, 'C': 3})
集計値をソート
collection
で用意されているmost_common()
を使って多い順に並べました。
c.most_common()
[('A', 4), ('C', 3), ('B', 2)]
これは色々便利に使えそうですね!
コメント