分析に役立つ集合演算の作り方 / python

当社は、A事業とB事業に分かれており、A事業で扱う商品とB事業で扱う商品が区分されています。

次のような質問に答えるためどのようにデータを抽出するかを記述しておきます。

①A事業とB事業を合わせた全体の商品一覧

②A事業のうちB事業で扱っていない商品一覧

③B事業のうちA事業で扱っていない商品一覧

④A事業とB事業の両方で扱っている商品一覧

⑤A事業とB事業でだぶっていない商品一覧

 

コードの説明に入る前に集合演算についておさらいをしてみます。
2つのセットの共通点や相違点を探すには、「集合演算」の考え方を利用します。
学生の頃ベン図を学んだかと思いますが、関係性をベン図で描いてみます。

 

a商品~g商品まで7つの商品があります。
A事業とB事業でそれぞれ次のように商品を扱っています。

A事業:a,b,c,d,g
B事業:b,c,d,e,f

 

 

和集合
二つの集合に対して、少なくともどちらかに入っているものを集めた集合を和集合といいます。

差集合
ある集合の要素から別の集合の要素を取り除いたものを差集合といいます。

積集合
二つの集合に対して、両方とも入っているものを集めた集合を積集合といいます。

対称差
二つの集合に対して、どちらか一方だけを満たす要素を集めた集合を対称差といいます。

課題の①~⑤のうち、それぞれがどの集合に相当するのかを当てはめてみます。

①A事業とB事業を合わせた全体の商品一覧・・和集合

②A事業のうちB事業で扱っていない商品一覧・・差集合

③B事業のうちA事業で扱っていない商品一覧・・差集合

④A事業とB事業の両方で扱っている商品一覧・・積集合

⑤A事業とB事業でだぶっていない商品一覧・・対称差

 

それでは、イメージ図ができたところでコードの記述をしていきます。

 

集合演算の作り方

#商品を変数にセットする
itemA={‘a’,’b’,’c’,’d’,’g’}
itemB={‘b’,’c’,’d’,’e’,’f’}

#A事業とB事業を合わせた全体の商品一覧を作る・・①
itemA|itemB
>>> {‘a’, ‘b’, ‘c’, ‘d’, ‘e’, ‘f’, ‘g’}

#A事業のうちB事業で扱っていない商品一覧を作る・・②
itemA-itemB
>>> {‘a’, ‘g’}

#B事業のうちA事業で扱っていない商品一覧を作る・・差集合・・③
itemB-itemA
>>> {‘e’, ‘f’}

#A事業とB事業の両方で扱っている商品一覧を作る・・④
itemA&itemB
>>> {‘b’, ‘c’, ‘d’}

#A事業とB事業でだぶっていない商品一覧を作る・・⑤
itemA^itemB
>>> {‘a’, ‘e’, ‘f’, ‘g’}


 

 

集合と演算子の関係は次の通りです。

課題番号 集合の種類 コード記述の演算子
和集合 「|」
②③ 差集合 「− 」
積集合 「&」
対称差 「^」

 

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です