日本のイベントをまとめたデータフレーム【df_event】があります。
df_event["協賛会社"]、df_event["運営会社"]、df_event["管理会社"]のデータをmatplotlibで可視化したいと思っています。
それぞれのイベントの["協賛会社"]、["運営会社"]、["管理会社"]の数を調べて3つ並べた箱ひげ図を作成したいと考えています。
下記コードで作成してみたのですが、同一ページ内で列名を変えて書いていくと行がどんどん増えてしまい、正しい処理ができなくなってしまいます。(単純に数を数えるだけなら現行のコードでいいのですが、、)【現在の処理状況】
各列の要素を会社名から会社数を数えた数字に置き換えたSiries(例えばdf_event["協賛会社数"]など)を作るにはどのような方法がありますでしょうか?
何かアドバイスをいただけたらと思います。。
【現状】
python
1from io import StringIO 2import pandas as pd 3import japanize_matplotlib 4 5 6data = StringIO(""" 7イベント名,都道府県名,費用(万円),協賛会社,運営会社,管理会社 8〇〇祭り,北海道,780,A社,B社、E社,H社、P社 9□□大会,北海道,467,B社、F社、H社、K社、L社,J社、K社、D社,A社 10△△パーティー,東京都,428,C社、D社,N社,B社、O社 11●●祭,神奈川県,591,E社、F社、A社、C社,O社、F社,C社 12✖︎✖︎生誕祭,大阪府,227,G社、B社,F社、H社、D社,L社 13■■ディナーショー,大阪府,74,C社、N社、Q社,H社、A社,D社、J社、M社 14▲▲イベント,沖縄,356,D社、E社、F社,B社、K社,E社、F社|列1|列2|列3| 15""") 16df_event = pd.read_csv(data) 17 18tmpa = df_event['協賛会社'].str.split('、', expand=True).unstack().rename('協賛会社') 19tmpa = tmpa.reset_index(level=0).dropna() 20df_event = df_event.drop(columns=['協賛会社']).merge(tmpa, left_index=True, right_index=True, how='right') 21company = df_event.groupby('イベント名').count()["協賛会社"]
【理想の形】
|イベント名|都道府県名|費用(万円)|協賛会社|運営会社|管理会社|協賛会社数|運営会社数|管理会社数|
|:--|:--:|--:|
||||
〇〇祭り|北海道|780|A社|B社、E社|H社、P社|1|2|2
□□大会|北海道|467|B社、F社、H社、K社、L社|J社、K社、D社|A社|5|3|1
△△パーティー|東京都|428|C社、D社|N社|B社、O社|2|1|2
●●祭|神奈川県|591|E社、F社、A社、C社|O社、F社|C社|4|2|1
✖︎✖︎生誕祭|大阪府|227|G社、B社|F社、H社、D社|L社|2|3|1
■■ディナーショー|大阪府|74|C社、N社、Q社|H社、A社|D社、J社、M社|3|2|3
▲▲イベント|沖縄|356|D社、E社、F社|B社、K社|E社、F社|3|2|2
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2020/02/25 08:52
2020/02/25 09:03
退会済みユーザー
2020/02/25 10:37
2020/02/25 10:52
退会済みユーザー
2020/02/25 11:22