![見出し画像](https://assets.st-note.com/production/uploads/images/87556186/rectangle_large_type_2_8c170824a43b5cc68b36aa5c0a564d2e.jpeg?width=1200)
ゲームソフトの売上げ本数のデータを分析してみる2【python】
前回のゲームソフトの売上げ本数のデータから、引き続き色々と調べます。
Jupyter Notebookでファイルを開きます。
import pandas as pd
df = pd.read_csv("C:\\Users\\csv_file\\vgsales.csv") # csvファイルの読込
では機種別の売上げから見ていきましょう。
PlatformでPS3だけを抽出して、PS3のランキングを作成。
df.drop("Rank",axis=1,inplace=True) # "Rank"の列を削除
df[df["Platform"] == "PS3"] # "Platform"の"PS3"を抽出
df_ps3 = df[df["Platform"] == "PS3"] # 抽出したdfをdf_ps3に
df_ps3.sort_values("Global_Sales", ascending=False) # "Global_Sales"を降順に並べ替え
df_ps3
![](https://assets.st-note.com/img/1663854358264-DJ6xHkPbmM.png?width=1200)
インデックスを順位として、見るために振り直します。
import numpy as np # numpyをインポート
df_ps3.index = np.arange(1, len(df_ps3)+1) # indexを1から
df_ps3.head(10) # 上から10個を表示
df_ps3_top10 = df_ps3.head(10) # そのdfをdf_ps3_top10に
![](https://assets.st-note.com/img/1663856098320-rfe62oTBHI.png?width=1200)
"Global_Sales"の売上げをグラフにします。
ここでseabornをインポートして、sns.set()でグラフを見やすくします。
import numpy as np # numpyをインポート
import matplotlib.pyplot as plt # matplotlib.pyplotをインポート
import seaborn as sns # seabornをインポート
sns.set() # snsのスタイルを適用
x = np.arange(10) # 変数xに1から10までの数列をを生成
y = df_ps3_top10['Global_Sales'] # 変数yに'Global_Sales'を
plt.title("Top10",{"fontsize": 20}) # タイトル名
plt.xlabel("Ranking",{"fontsize": 14}) # x軸のタイトル
plt.ylabel("Sales", {"fontsize": 14}) # y軸のタイトル
plt.bar(x, y, tick_label=np.arange(1, 11, 1)) # 棒グラフ描画、各棒に数字を振る
plt.grid(axis='x') # 背景の縦軸を非表示
plt.rcParams['figure.figsize'] = (7 ,8) # グラフのサイズ変更
plt.show()
![](https://assets.st-note.com/img/1663897313214-olYIR140nC.png?width=1200)
1位 Grand Theft Auto V 2140万本
2位 Call of Duty: Black Ops II 1403万本
3位 Call of Duty: Modern Warfare 3 1346万本
4位 Call of Duty: Black Ops 1273万本
5位 Gran Turismo 5 1077万本
6位 Call of Duty: Modern Warfare 2 1069万本
7位 Grand Theft Auto IV 1057万本
8位 Call of Duty: Ghosts 959万本
9位 FIFA Soccer 13 824万本
10位 Battlefield 3 723万本
半分がCoDシリーズで、新作のたびにヒットしていますね。
ではこのデータから、地域別に売上げ本数を見ます。
dropメソッドで"Year"と"Global_Sales"の列を削除します。
df_ps3_top10_area = df_ps3_top10.drop(["Year","Global_Sales"],axis=1)
df_ps3_top10_area
![](https://assets.st-note.com/img/1663920612872-CW5p6tEkGO.png?width=1200)
pandasのメソッドのplot.barで地域別に1位から5位までを、棒グラフにします。
stacked=Falseで横並びに。
matplotlibだとコードが長くなりますが、pandasだと1行で書けます。
df_ps3_top10_area[:5].plot.bar(stacked=False,rot=0,width=.7).grid(axis='x')
![](https://assets.st-note.com/img/1663921890962-sFtWPw6fGg.png?width=1200)
1位 Grand Theft Auto V
2位 Call of Duty: Black Ops II
3位 Call of Duty: Modern Warfare 3
4位 Call of Duty: Black Ops
5位 Gran Turismo 5
このグラフから北アメリカとヨーロッパが日本の何倍とあって、市場の大きさが伺えます。英語圏というのも大きいですね。
日本市場は単純にプレイヤー数が少ないのもあって、各バーは短いです。
それでも日本で100万本近く売れたGTA5は凄いです。
今度は、日本で売れたゲームのランキングTop10を見ましょう。
dfの"JP_Sales"を降順に並べ替えます。
最初と同じようにして、df_jp_top10を作りました。
df_jp = df.sort_values("JP_Sales",ascending=False)
df_jp.index = np.arange(1, len(df_jp)+1)
df_jp_top10 = df_jp.head(10)
df_jp_top10
![](https://assets.st-note.com/img/1663931071357-qsHSThFXyt.png?width=1200)
JP_Sales
1位 ポケモン赤/ポケモン緑 1022万本
2位 ポケモン金/ポケモン銀 720万本
3位 スーパーマリオブラザーズ 681万本
4位 ニュースーパーマリオブラザーズ 650万本
5位 ポケモンダイヤモンド/ポケモンパール 604万本
6位 ポケモンブラック/ポケモンホワイト 565万本
7位 ポケモンルビー/ポケモンサファイア 538万本
8位 おいでよ どうぶつの森 533万本
9位 もっと脳を鍛える大人のDSトレーニング 532万本
10位 モンスターハンターポータブル 3rd 487万本
日本だとポケモンシリーズが一番売れているゲームみたいですね。
出るたびにミリオンは、間違いないといったところでしょうか。
そしてやはり任天堂は強いです。
ではこのランキングから地域別に売上げ本数をグラフ化します。
df_jp_top10_area = df_jp_top10.drop(["Year", "Global_Sales"], axis=1)
df_jp_top10_area
![](https://assets.st-note.com/img/1663933353160-xDIhDLucqH.png?width=1200)
1位から5位までを描画。
ランキングは"Jp_Sales"を順にしています。
df_jp_top10_area[:5].plot.bar(stacked=False, rot=0, width=.7).grid(axis='x')
![](https://assets.st-note.com/img/1663933604504-hTePCF2kua.png?width=1200)
1位 ポケモン赤/ポケモン緑
2位 ポケモン金/ポケモン銀
3位 スーパーマリオブラザーズ
4位 ニュースーパーマリオブラザーズ
5位 ポケモンダイヤモンド/ポケモンパール
1位の『ポケモン赤/ポケモン緑』の日本の売上げ本数が、北アメリカとヨーロッパの間にあって、大きな差がありません。
2位の『ポケモン金/ポケモン銀』も、1位と同じ感じです。
3位の『スーパーマリオブラザーズ』 の、北アメリカの売上げ本数がとてつもなく高いです。一体どういう事なんでしょう?
こんなに売れていたとは、思いもよらなかったです。
次は私の好きなゲーム『メタルギアソリッド』シリーズが、どれくらい売れたのかを調べてみようと思います。
まずはdfの"Name"で"Metal Gear Solid"と一致すdfを出力。
df[df["Name"] == "Metal Gear Solid"]
![](https://assets.st-note.com/img/1664004714999-veSCKj8Iet.png?width=1200)
なぜか2つあります。
調べてみると『メタルギア ゴーストバベル』っていう名前で、GBにて発売されたみたいです。
まったく知らなかったです。そしてあまり売れてないみたいです。
このdfから"Publisher"の正確な名前がわかりました。
"Konami Digital Entertainment"
次にdfの"Publisher"で"Konami Digital Entertainment"と、一致するdfを出力。
df_konami = df[df["Publisher"] == "Konami Digital Entertainment"]
![](https://assets.st-note.com/img/1664004715323-oXZFMrk2Ld.png?width=1200)
Konamiのゲームが832個あります。
この中から"Name"に"Metal Gear Solid"が含まれるdfトップ5を出力します。
str.contains()を使います。
df_konami[df_konami["Name"].str.contains("Metal Gear Solid", case=False)].head(5)
df_mgs_top5 = df_konami[df_konami["Name"].str.contains("Metal Gear Solid", case=False)].head(5)
df_mgs_top5.index = np.arange(1, len(df_mgs_top5)+1)
df_mgs_top5
![](https://assets.st-note.com/img/1664005048598-ly9V4LXbfg.png?width=1200)
このランキングから地域別に売上げ本数をグラフ化します。
ランキングは"Global_Sales"の順。
df_mgs_top5_area = df_mgs_top5.drop(["Year", "Global_Sales"], axis=1)
df_mgs_top5_area.plot.bar(stacked=False, rot=0, width=.7).grid(axis='x')
![](https://assets.st-note.com/img/1664005158876-ZKN03SIRHg.png?width=1200)
Global_Sales
1位 Metal Gear Solid 2: Sons of Liberty 605万本
2位 Metal Gear Solid 4: Guns of the Patriots 603万本
3位 Metal Gear Solid 603万本
4位 Metal Gear Solid 3: Snake Eater 423万本
5位 Metal Gear Solid V: The Phantom Pain 338万本
1、2、3位のGlobal_Salesは、ほとんど変わらないですね。北アメリカでは初代『Metal Gear Solid』が一番売れてます。
日本だと大体同じ本数売れている、という感じですね。
ヨーロッパだと『Metal Gear Solid 2』が一番売れて200万本越えです。
『Metal Gear Solid V』は全体的に少なくなったという感じでしょうか。
よく見ると『Metal Gear Solid 3』のヨーロッパの売上げが0になってます。
『Metal Gear Solid 3』のOtherのグラフが異様に長いので、もしかしたらOtherに加算されてるかもしれないです。
以上です。
この記事が気に入ったらサポートをしてみませんか?