Coding/EDA / Post-COVID Video Games Worldwide (2021-2025).md

Post-COVID Video Games Worldwide (2021-2025)

조회

https://www.kaggle.com/datasets/otegbolamarvellous/post-covid-video-games-worldwide-2021-2025

이거 했음.


전처리

결측값 처리

meta_df_na = meta_df.query('User_Score.isna()').index
meta_df.loc[meta_df_na]

결측값 있는 칼럼이 저기말고 없는데, 확인해보니까 그 뭐라고 해야 되지? 리뷰가 너무 적어서 평점을 모을 수 없는? 그런 게임들이었음. 그런건 tbd라고 하는데 저기다가 그거 때려박으면 평점이 문자가 돼서 문제가 터져요.

 

meta_df['User_Score'] = pd.to_numeric(meta_df['User_Score'], errors='coerce')

그래서 이렇게만 함. 결측값은 계산할때 뺄 예정임.

 

플랫폼 개수로 범주화

# 1. 콤마(,)로 나누고(split), 양쪽 공백을 제거(strip)한 리스트의 길이를 측정
meta_df['Platform_classification'] = meta_df['Platform'].apply(
    lambda x: 'Singleplatform' if len(str(x).split(',')) == 1 else 'Multiplatform'
)

# 결과 확인
print(meta_df['Platform_classification'].value_counts())

게임 발매 플랫폼이 하나인거, 여러개인걸로 나눴다.

 

발매년도

# 일단 datetime으로 변환부터 합시다
meta_df['Release_Date'] = pd.to_datetime(meta_df['Release_Date'], dayfirst=True, errors='coerce')
meta_df['Year'] = meta_df['Release_Date'].dt.year # 응 년도 만들거야

발매일을 날짜로 변환한 다음 발매년도만 따로 뺐다. 저게 날짜 형식이 DD/MM/YYYY로 되어있어서 dayfirst 준 거임.

 

평점 범주화

def metascore_classificaion(score):
    if score >= 90:
        return 'Universal acclaim'
    elif score >= 75:
        return 'Generally favorable reviews'
    elif score >= 50:
        return 'Mixed or average reviews'
    elif score >= 20:
        return 'Generally unfavorable reviews'
    else:
        return 'Overwhelming dislike'

def userscore_classificaion(score):
    if score >= 9:
        return 'Universal acclaim'
    elif score >= 7.5:
        return 'Generally favorable reviews'
    elif score >= 5:
        return 'Mixed or average reviews'
    elif score >= 2:
        return 'Generally unfavorable reviews'
    else:
        return 'Overwhelming dislike'

그 메타크리틱 평점이 전문가랑 유저랑 나뉜거 아시죠? 유저 평점은 0~10이고 전문가 평점은 0~100입니다. 기준은 같은데 커트라인이 10배 줄어요 유저 점수가. 기준은 검색해서 매겼음.

 

meta_df['Metascore_classification'] = meta_df['Metascore'].apply(metascore_classificaion)
meta_df['Userscore_classification'] = meta_df['User_Score'].apply(userscore_classificaion)

근데 이거 만들어놓고 범주로는 한번도 뭐 한 게 없음…ㅋㅋㅋㅋ


본게임은 지금부터다

갓겜과 똥겜

평론가 평점이 90점 이상인 게임

# 일단 메타크리틱 평점이 90점 이상인 것만 따로 뻅시다.
meta_god_df = meta_df.query('Metascore >= 90')

meta_god_df

저기 엘든링 있던데? 

 

유저 평점도 9점 이상인 게임

# 평론가와 유저가 다 만족한 게임이 있을까?
meta_god_df.query('User_Score >= 9')

대체 발더스게이트는 얼마나 갓갓겜인거임???

 

유저 평점은 9점 미만인 게임

# 평론가와 유저 반응이 다른 게임
meta_god_df.query('User_Score < 9')

저기서 해본건 데이브 더 다이버 말고 없는듯... 데더다도 사냥하는건 재밌는데 문제가요... 초밥 운영이... 여기 초밥 먹으려고 며칠 굶고오나 손님들 성질이 조낸 급함...

 

평론가 평점이 20점 미만인 게임

# DDONG게임
meta_ddong_df = meta_df.query('Metascore < 20')

meta_ddong_df

일단 평론가 평점이 20점 미만인게 없음… 제일 낮은게 31점입니다. 변수명에 똥은 뭐냐고요? 아무리 그래도 shit을 변수명으로 쓸 순 없잖아… 그래서 ddong쓴거임.

 

유저 평점이 2점 미만인 게임

meta_ddong_df = meta_df.query('User_Score < 2')

meta_ddong_df

콩코드 유명하지... 지들이 왜 개쳐망했는지는 알까?

 

전문가 평점 50점 미만+유저 평점 2점 미만

# 50점 미만은 꽤 있다.
meta_ddong_df = meta_df.query('Metascore < 50')

meta_ddong_df
meta_ddong_df.query('User_Score < 2')

이게 전문가 평점이랑 유저 평점이랑 엇갈리는 경우도 있고 아닌경우도 있긴 있습니다. 근데 여기서는 공통분모가 없음.

 

플랫폼이 하나인가? 여러개인가?+PC에서도 발매됐는가?

meta_df.groupby(['Platform_classification','PC_included']).size()
Platform_classification  PC_included  
Multiplatform            PC_included      1579
                         PC_unincluded      71
Singleplatform           PC_included       179
                         PC_unincluded     177
dtype: int64

멀티플랫폼인 경우 대부분 PC도 포함한다. 그리고 플랫폼이 하나인 경우에는 PC판만 내거나, 콘솔 독점이거나… 요즘 근데 닌텐도 말고는 독점으로 잘 안 내지 않나?

 

sns.countplot(data=meta_df, x='Platform_classification', hue='PC_included', palette="icefire")
plt.legend(['PC판 미발매', 'PC판 발매'])
plt.xlabel('단일 플랫폼 여부 및 PC판 발매 여부')
plt.ylabel('발매 게임 수')
plt.title('단일 플랫폼 여부 및 PC판 발매여부에 따른 게임 수', fontsize=20)
plt.show()

요즘 스팀이나 에픽에서도 뭐 많이 할 수 있으니께... 게임패드요? PC에 연결 되는것도 많다. 가끔 스팀 맞춤 대기열 보면 원래 모바일게임으로 나왔던 게 갑자기 스팀으로 나오는 경우도 있다. 명조도 스팀으로 나왔고.

 

meta_df.groupby(['Year','Platform_classification','PC_included']).size()
Year  Platform_classification  PC_included  
2021  Multiplatform            PC_included      334
                               PC_unincluded     18
      Singleplatform           PC_included       20
                               PC_unincluded     36
2022  Multiplatform            PC_included      366
                               PC_unincluded     17
      Singleplatform           PC_included       41
                               PC_unincluded     37
2023  Multiplatform            PC_included      382
                               PC_unincluded     23
      Singleplatform           PC_included       26
                               PC_unincluded     49
2024  Multiplatform            PC_included      359
                               PC_unincluded     10
      Singleplatform           PC_included       62
                               PC_unincluded     34
2025  Multiplatform            PC_included      138
                               PC_unincluded      3
      Singleplatform           PC_included       30
                               PC_unincluded     21
dtype: int64

년도별로는 이렇게 된다. 멀티플랫폼인 게임은 23년도에, 싱글플랫폼인 게임은 24년도에 많이 발매됐다.

 

닌텐도도 멀티플랫폼이 있나요?

결론부터 말하자면 있긴 있다. 근데 자사 퍼스트파티나 세컨드파티가 멀티플랫폼으로 나오는 건 아니고... 얘네들 그런쪽으로 문호개방 안함... 대신 다른 게임사에서 저희 스위치로도 게임 내고 싶습니다! 하면 그건 웰컴이다. 가끔 모바일로 나오는건 중국산 짝퉁게임이거나 공식에서 내는 외전이거나.

nintendo_df = meta_df.query("Publisher.str.contains('Nintendo')", engine='python')
nintendo_df

어우 진여생 어우

 

sns.countplot(nintendo_df, x = 'Platform_classification', hue='Platform_classification', palette="icefire", legend=True)
plt.title('닌텐도도 멀티플랫폼이 있나요?', fontsize=20)
plt.xlabel('멀티플랫폼 여부')
plt.ylabel('발매 게임 수')
plt.legend()
plt.show()

퍼블리셔가 닌텐도면서 멀티플랫폼인 건 찐 극소수다.

 

년도별 갓겜/똥겜

년도별 갓겜

meta_god_loc = meta_df.groupby('Year')['Metascore'].idxmax()
meta_df.loc[meta_god_loc][['Title', 'Metascore', 'User_Score']].reset_index(drop=True)

아스트로봇 유명하데… 난 안해봤지만.

 

meta_god_loc = meta_df.groupby('Year')['User_Score'].idxmax()
meta_df.loc[meta_god_loc][['Title', 'Metascore', 'User_Score']].reset_index(drop=True)

공통분모 발더스게이트.. 대체 이 게임은 어떤 게임이길래 평론가와 유저들이 갓겜을 연호한것이냐... (안해봄)

 

년도별 똥겜

meta_ddong_loc = meta_df.groupby('Year')['Metascore'].idxmin()
meta_df.loc[meta_ddong_loc][['Title', 'Metascore', 'User_Score']].reset_index(drop=True)

? 저거 주술회전 전화항명인가?

 

meta_ddong_loc = meta_df.groupby('Year')['User_Score'].idxmin()
meta_df.loc[meta_ddong_loc][['Title', 'Metascore', 'User_Score']].reset_index(drop=True)

문명 7은 대체 무슨 일이 있었던것이며...

 

장르별 점수(내림차순)

meta_genre_loc = meta_df.groupby('Genre')['Metascore'].idxmax()
meta_df.loc[meta_genre_loc][['Genre', 'Title', 'Metascore', 'User_Score']].reset_index(drop=True).sort_values('Metascore', ascending=False)

장르별로 놓고 봤을때 왕눈하고 엘든링, 발더스게이트, 파타 모르가…저거 뭐임? 쟈들이 공통 1위다. 그 중에서도 발더스게이트는 유저 스코어도 9점을 넘겼다. 당신들 대체 뭘 만든겁니까.

 

best_idx = meta_df.dropna(subset=['User_Score']).groupby('Genre')['User_Score'].idxmax()
best_genre_df = meta_df.loc[best_idx]

best_genre_df[['Genre', 'Title', 'Metascore', 'User_Score']].reset_index(drop=True).sort_values('User_Score', ascending=False)

33원정대도 갓겜이라고 하더군요... (안해봄)

 

장르별 점수(오름차순)

meta_genre_loc = meta_df.groupby('Genre')['Metascore'].idxmin()
meta_df.loc[meta_genre_loc][['Genre', 'Title', 'Metascore', 'User_Score']].reset_index(drop=True).sort_values('Metascore')

 

best_idx = meta_df.dropna(subset=['User_Score']).groupby('Genre')['User_Score'].idxmin()
best_genre_df = meta_df.loc[best_idx]

best_genre_df[['Genre', 'Title', 'Metascore', 'User_Score']].reset_index(drop=True).sort_values('User_Score')

0.5점은 대체...

 

리뷰 많은 순

most_review = meta_df.sort_values('Critic_Review_Count', ascending=False)
most_review[['Title', 'Critic_Review_Count', 'User_Review_Count', 'Metascore', 'User_Score']]

일단 비평가 리뷰는 왕눈이 제일 많다. 여기서 유저 리뷰도 5000개 이상인 게임들만 묶어서 보면

# 유저 리뷰가 5000개 이상인 게임들만 골라봤음
most_review = meta_df.sort_values('Critic_Review_Count', ascending=False)
most_review.query('User_Review_Count >= 5000')[['Title', 'Critic_Review_Count', 'User_Review_Count', 'Metascore', 'User_Score']]

그래도 왕눈이 제일 많다. 제작진이 과학상자를 던져준 탓에 구하라는 하이랄은 안 구하고 과학상자 갖고 노는 게임… ㅋㅋㅋㅋ 누가 그걸로 고질라 만들었더만.

 

most_review = meta_df.sort_values('User_Review_Count', ascending=False)
most_review[['Title', 'Critic_Review_Count', 'User_Review_Count', 'Metascore', 'User_Score']]

넥슨이 공들여서 만들었는데 카잔도 리뷰좀 해줘라... 유저 리뷰는 33원정대, 엘든링, 발더스게이트 3 셋 다 2만개를 넘어갔다. 이 중에서도 비평가 리뷰가 100개 이상인 게임들만 보면

# 비평가 리뷰가 100개 이상인 게임
most_review = meta_df.sort_values('User_Review_Count', ascending=False)
most_review.query('Critic_Review_Count >= 100')[['Title', 'Critic_Review_Count', 'User_Review_Count', 'Metascore', 'User_Score']]

메트로이드 프라임은 왜 리뷰가 없는겨…

'Coding > EDA' 카테고리의 다른 글

얘! clinvar도 EDA가 된단다! (1)  (0) 2026.02.15
Ramen ratings  (0) 2026.02.11
또 ChEMBL을 털어보았다  (0) 2026.01.28
캐글 EDA-마! 서퍼티파이! (2)  (0) 2026.01.20
캐글 EDA-마! 서퍼티파이!  (0) 2026.01.19

댓글

홈으로 돌아가기

검색 결과

"search" 검색 결과입니다.