【pandas】カンマ区切りの複数要素を結合して集計する方法

当ページのリンクには広告が含まれています。
  • URLをコピーしました!

Googleフォームなどのアンケートを行った際に、「複数選択可」な項目を用いた場合は一つの項目内に

A, B, C

のように記載されます。これらの項目を合計して各項目ごとの値を集計する方法をご紹介いたします。

この記事のサンプルコード

目次

データフレームの作成

まずはpandasでデータフレームを作成します。今回はExcelファイルでデータフレームを作成しています。

import pandas as pd

df = pd.read_excel("sample.xlsx")

データフレームは下記のような形式を作成しました。

idQuastion1
1A,B
2A
3C
4A,B,C
5A,C

値を配列に変換

カンマ区切りの値を分割してリスト形式にする場合にはstr.split()を用います。

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()で値の集計をします。

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)]

これは色々便利に使えそうですね!

この記事のサンプルコード

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次