はじめに
kaggleにて,steam-games-dataset というデータセットが公開されているのを見つけました.
SteamのAPIを使って,steamのゲームのデータを集めているみたいです.
これを使って隙間時間で遊んでいたので,記事にします.
このデータセットで何か手軽に遊べる良いお題はないでしょうか?
今回はsteamにあるゲームの傾向分析をしてみたいと思います.
コードはkaggleで公開しています.
データの把握
データの種類は中々豊富です.
df.columns
Index(['AppID', 'Name', 'Release date', 'Estimated owners', 'Peak CCU',
'Required age', 'Price', 'DLC count', 'About the game',
'Supported languages', 'Full audio languages', 'Reviews',
'Header image', 'Website', 'Support url', 'Support email', 'Windows',
'Mac', 'Linux', 'Metacritic score', 'Metacritic url', 'User score',
'Positive', 'Negative', 'Score rank', 'Achievements', 'Recommendations',
'Notes', 'Average playtime forever', 'Average playtime two weeks',
'Median playtime forever', 'Median playtime two weeks', 'Developers',
'Publishers', 'Categories', 'Genres', 'Tags', 'Screenshots', 'Movies'],
dtype='object')
steamゲーマーとして高評価率やレビュー数などは当てにならないと思っているので,ゲームの"人気度"の指標は同時接続数のピークにしようと思います.
quantiles = df['Peak CCU'].quantile([0.1 * i for i in range(1, 11)])
0.1 0.0
0.2 0.0
0.3 0.0
0.4 0.0
0.5 0.0
0.6 0.0
0.7 0.0
0.8 1.0
0.9 7.0
1.0 872138.0
同時接続ピーク数の下位10%から10%刻みで見ています.
上位10%のゲームの同時接続ピーク数は7ユーザで,残りの90%のゲームは同時接続7人未満であることが分かります.
残酷な現実……!
今は人に遊ばれているゲームの傾向分析をしたいので,上位10%だけを使いましょう.
8436個です.
threshold = df['Peak CCU'].quantile(0.9)
popular_games = df[df['Peak CCU'] >= threshold]
ゲームのカテゴリの傾向
カテゴリの組み合わせを単純にカウントしています.
# Categories
categories = popular_games['Categories'].dropna().str.split(',')
all_categories = list(itertools.chain(*categories))
category_counter = Counter(all_categories)
カウント順に上位20件を並べています.
Most common categories:
Single-player: 7826
Steam Achievements: 5419
Steam Cloud: 4299
Multi-player: 2959
Steam Trading Cards: 2770
Full controller support: 2690
Co-op: 1691
PvP: 1644
Online PvP: 1458
Partial Controller Support: 1278
Online Co-op: 1222
Remote Play Together: 899
Steam Leaderboards: 791
Remote Play on TV: 791
Shared/Split Screen: 757
Steam Workshop: 732
In-App Purchases: 638
Remote Play on Tablet: 628
Cross-Platform Multiplayer: 573
Shared/Split Screen PvP: 506
遊ばれているゲームの指標と言うよりは,よく見かける要素ランキングって感じですね.実際そうなんですが.
6割くらいのゲームには実績が実装されていて,3割くらいのゲームはトレーディングカードに対応している……と考えると,中々体感に合いますね (超主観的評価).
ゲームのタグの傾向
タグも見てみます
# Tags
tags = popular_games['Tags'].dropna().str.split(';')
all_tags = list(itertools.chain(*tags))
tag_counter = Counter(all_tags)
Most common tags:
Singleplayer: 5837
Action: 3792
Adventure: 3723
Indie: 3489
Multiplayer: 2736
Strategy: 2670
Simulation: 2522
RPG: 2518
Casual: 2402
2D: 2230
Atmospheric: 2185
Story Rich: 2112
Open World: 1604
Fantasy: 1565
Co-op: 1513
Early Access: 1455
First-Person: 1427
Great Soundtrack: 1427
Funny: 1363
Exploration: 1333
アクション,アドベンチャーが多いですね.
ゲームの本数なので開発難度順に並ぶかと思いきや,ちゃんと人気の出る順で並んでいる,という印象です.
同接7人出るようなゲームが母数だからですかね?
さいごに
kaggleで見つけたデータセットでちょっとだけ遊んでみました.
がっつりkaggleのコンペに挑むような時間の余裕がない!といった人も,これくらいのお遊びノートブックを公開するくらいなら楽しめるのではないでしょうか.