
ゆうき( @BASEBALLY15 )です^^
前回は,『ベイズの定理』を使ってプロ野球の球団の年俸を分析しましたね.
そうですね^^
今回は, 前回のコードを記述する際に,悩んだ部分をご紹介したいと思います.

Today’s Code
使うデータ
今回は,データ分析をする際に,意外と使えるコードをご紹介します.
以下のデータフレームのように,チーム名ごとに番号を付けることが出来ます!
(1つのデータフレームから抜粋しました.)
team | player’s name | annual salary(yen) | |
---|---|---|---|
0 | Yomiuri Giants | 菅野 智之 | 650000000 |
1 | Yomiuri Giants | 坂本 勇人 | 500000000 |
90 | DeNA | 筒香 嘉智 | 400000000 |
---|---|---|---|
91 | DeNA | 山﨑 康晃 | 250000000 |
163 | Hanshin Tigers | 鳥谷 敬 | 400000000 |
---|---|---|---|
164 | Hanshin Tigers | 糸井 嘉男 | 400000000 |
236 | Carp | ジョンソン | 327000000 |
---|---|---|---|
237 | Carp | 菊池 涼介 | 240000000 |
312 | Chunichi Dragons | ビシエド | 300000000 |
---|---|---|---|
313 | Chunichi Dragons | 大島 洋平 | 180000000 |
385 | Yakult Swallows | バレンティン | 440000000 |
---|---|---|---|
386 | Yakult Swallows | 山田 哲人 | 430000000 |
↓
team | player’s name | annual salary(yen) | team_num | |
---|---|---|---|---|
254 | Carp | 安部 友裕 | 41000000 | 1 |
306 | Carp | 藤井 黎來 | 3000000 | 1 |
366 | Chunichi Dragons | 石橋 康太 | 6000000 | 2 |
---|---|---|---|---|
365 | Chunichi Dragons | 友永 翔太 | 6500000 | 2 |
157 | DeNA | 益子 京右 | 4700000 | 3 |
---|---|---|---|---|
162 | DeNA | コルデロ | 2400000 | 3 |
235 | Hanshin Tigers | 石井 将希 | 3000000 | 4 |
---|---|---|---|---|
234 | Hanshin Tigers | 片山 雄哉 | 3000000 | 4 |
435 | Yakult Swallows | 平井 諒 | 8100000 | 5 |
---|---|---|---|---|
431 | Yakult Swallows | 宮本 丈 | 9000000 | 5 |
24 | Yomiuri Giants | デラロサ | 30000000 | 6 |
---|---|---|---|---|
25 | Yomiuri Giants | 藤岡 貴裕 | 29000000 | 6 |
前回と同様に,こちらのサイトのデータを使いたいと思います.
csvファイルにまとめたものを貼っておきます.
それでは,Today’s Codeをご紹介します^^
コード+解説
salary_data["team_num"] = sorted(salary_data["team"].astype("category").cat.codes + 1)
このコードを解説していきます.
- salary_data[“team”] → 上のデータフレームの”team”というカラムを指定する.
- salary_data[“team”] .astype(“category”) → astype ()によって “team”の列をカテゴリー型に変換する.
- salary_data[“team”].astype(“category”).cat.codes + 1 → カテゴリー型に変換した”team”のコード取得する.それに+1することで,番号を1から順番に付けることが出来る.
たったの1文で,番号を付けることが出来るので,すごく簡単ですね^^
このままだと,データフレームの番号がバラバラに表示されるので,以下のコードを記述し,昇順に並び替えておきます.
sorting = salary_data.sort_values("team_num")
これで,1から順番に表示することが出来ます.
ちなみに,上で示したようにチームごとに番号を付けることで,
箱ひげ図などのグラフを描くことが出来ます.
#箱ひげ図を描く
sns.boxplot(salary_data["team_num"], salary_data["annual salary(yen)"])

この結果から,6の” Yomiuri Giants “が1億円以上の選手が多いことが分かります.
このように,箱ひげ図を描くと,各球団の年俸がどれくらいなのかが分かりやすいですね^^
以下に,このコードまでの流れをご紹介しておきます.
全体の流れ
ライブラリ
import numpy as np
import pandas as pd
from pandas import Series, DataFrame
import seaborn as sns
sns.set_style("whitegrid")
import matplotlib.pyplot as plt
%matplotlib inline
コード
#csvファイルの読み込み
filename = "anual_salary.csv"
salary_data = pd.read_csv(filename)
#実行
salary_data
#チーム名に番号をふる
salary_data["team_num"] = salary_data["team"].astype("category").cat.codes + 1
sorting = salary_data.sort_values("team_num")
#実行
sorting
#箱ひげ図を描く
sns.boxplot(salary_data["team_num"], salary_data["annual salary(yen)"])
終わりに
今回は,データフレーム内の項目ごとに番号を付けました.
データを整理する際に便利なので,是非,使ってみてください^^
それでは・・・