データフレーム番号付け

ゆうき( @BASEBALLY15 )です^^

前回は,『ベイズの定理』を使ってプロ野球の球団の年俸を分析しましたね.

そうですね^^

今回は, 前回のコードを記述する際に,悩んだ部分をご紹介したいと思います.

Today’s Code

使うデータ

今回は,データ分析をする際に,意外と使えるコードをご紹介します.

以下のデータフレームのように,チーム名ごとに番号を付けることが出来ます!

(1つのデータフレームから抜粋しました.)

teamplayer’s nameannual salary(yen)
0Yomiuri Giants菅野 智之650000000
1Yomiuri Giants坂本 勇人500000000
90DeNA筒香 嘉智400000000
91DeNA山﨑 康晃250000000
163Hanshin Tigers鳥谷 敬400000000
164Hanshin Tigers糸井 嘉男400000000
236Carpジョンソン327000000
237Carp菊池 涼介240000000
312Chunichi Dragonsビシエド300000000
313Chunichi Dragons大島 洋平180000000
385Yakult Swallowsバレンティン440000000
386Yakult Swallows山田 哲人430000000

teamplayer’s nameannual salary(yen)team_num
254Carp安部 友裕410000001
306Carp藤井 黎來30000001
366Chunichi Dragons石橋 康太60000002
365Chunichi Dragons友永 翔太65000002
157DeNA益子 京右47000003
162DeNAコルデロ24000003
235Hanshin Tigers石井 将希30000004
234Hanshin Tigers片山 雄哉30000004
435Yakult Swallows平井 諒81000005
431Yakult Swallows宮本 丈90000005
24Yomiuri Giantsデラロサ300000006
25Yomiuri Giants藤岡 貴裕290000006

前回と同様に,こちらのサイトのデータを使いたいと思います.

csvファイルにまとめたものを貼っておきます.

それでは,Today’s Codeをご紹介します^^

コード+解説

salary_data["team_num"] = sorted(salary_data["team"].astype("category").cat.codes + 1)

このコードを解説していきます.

  1. salary_data[“team”] → 上のデータフレームの”team”というカラムを指定する.
  2. salary_data[“team”] .astype(“category”) → astype ()によって “team”の列をカテゴリー型に変換する.
  3. 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)"])

終わりに

今回は,データフレーム内の項目ごとに番号を付けました.

データを整理する際に便利なので,是非,使ってみてください^^

それでは・・・

Q &A

コメントを残す

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

CAPTCHA