| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 블루아카이브 토픽모델링
- SBERT
- CTM
- 다항분포
- 조축회
- 붕괴 스타레일
- 피파온라인 API
- 데이터넥스트레벨챌린지
- Roberta
- Tableu
- 블루 아카이브
- 트위치
- 포아송분포
- 구글 스토어 리뷰
- geocoding
- KeyBert
- 데이터리안
- 개체명 인식
- NLP
- 클래스 분류
- 토픽 모델링
- LDA
- Optimizer
- 원신
- 데벨챌
- BERTopic
- 코사인 유사도
- 자연어 모델
- 옵티마이저
- 문맥을 반영한 토픽모델링
- Today
- Total
분석하고싶은코코
던전앤파이터 상급던전 입장권 분석(2) 본문
이번에는 지난번 게시글에 이어서 DB에 저장된 데이터를 가져와 데이터를 분석하는 부분을 포스팅합니다.
이번 데이터 분석은 2월 28일 ~ 3월 26일까지의 데이터를 통해서 분석하였고 이후 데이터 분석에 대한 추가 확인 작업을 위해서 4월3일 ~ 4월 11일의 데이터를 추가적으로 수집하여 진행하였습니다.
지난번에 이어지는 부분이니 지체하지 않고 바로 본론으로 긔긔!!
기본 작업
기본 모듈 & 한글 시각화 설정
import mysql.connector
import pandas as pd
import numpy as np
pd.options.display.float_format = '{:.0f}'.format
import matplotlib.pyplot as plt
import matplotlib.ticker as ticker
import matplotlib.dates as mdates
import seaborn as sns
import re
import time
import datetime
import warnings
warnings.filterwarnings('ignore')
# matplot 한글 설정
import platform
import matplotlib.pyplot as plt
from matplotlib import font_manager, rc
if platform.system() == "Darwin": # MAC
rc("font", family = "Arial Unicode MS")
print("Hangul Setting OK for Mac")
elif platform.system() == "Windows": # WINDOW
print("Fail : Window Hangul setting have to custom this section")
raise
else: # COLAB
plt.rc('font', family='NanumBarunGothic')
print("Hangul Setting OK for Colab")
plt.rcParams["axes.unicode_minus"] = False
SQL
# Mysql 초기화
def init_mysql():
aws = mysql.connector.Connect(
database = 'df',
host = "본인 DB host 정보 입력",
port = 3306,
user = 'sold_table',
password = '1234'
)
return aws
# Pandas read_sql함수 사용하여 DB에서 데이터프레임 형태로 데이터 가져오기
def db_get_data(query):
aws = init_mysql()
df = pd.read_sql(query, aws)
aws.close()
return df
# 등록, 판매 기록 데이터 가져오기
def get_regi_df():
query = "select distinct * from ticket_history where itemName like '%입장권%';"
df = db_get_data(query)
return df
def get_sold_df():
query = "select distinct * from sold_history where itemName like '%입장권%';"
df = db_get_data(query)
return df
# DB 데이터 가져오기
sold_history = get_sold_df()
regi_history = get_regi_df()
지난번 포스팅에서 중복된 데이터가 등록되지 않게 코드를 수정하기는 했지만 이전 코드에서 등록될때 중복된 데이터들이 DB에 등록되고 있었기 때문에 각 테이블에서 데이터를 가져올때 distinct를 사용해서 데이터를 가져왔습니다.
가져온 데이터 다듬기
# 데이터 분석에 사용할 칼럼 필터링
regi_df = regi_history[['auctionNo', 'regDate', 'itemId', 'itemName', 'count', 'unitPrice']]
sold_df = sold_history[sold_history.columns]
# 타입 변경
sold_df['soldDate'] = pd.to_datetime(sold_df['soldDate'])
sold_df = sold_df.set_index('soldDate').sort_index()
regi_df['regDate'] = pd.to_datetime(regi_df['regDate'])
regi_df = regi_df.set_index('regDate').sort_index()
datasets = [regi_df, sold_df]
for data in datasets:
data['unitPrice'] = data['unitPrice'].astype('int')
data['count'] = data['count'].astype('int')
데이터 분석
# X축 이름 축소를 위한 함수
def rename_xticks(col):
if col == '':
print('Get blank String')
return col
if '마스터' in col:
rename = re.sub('마스터', 'M', col)
elif '익스퍼트' in col:
rename = re.sub('익스퍼트', 'E', col)
elif '노멀' in col:
rename = re.sub('노멀', 'N', col)
return re.sub('(입장권)','', rename)
# 던전별 입장권 판매 등록, 완료 데이터 시각화
def print_tickets(sold_df, regi_df, plt_title = ''):
# 경매장 판매
sold_tmp = sold_df[['unitPrice', 'itemName']]
sold_tmp['hue'] = '판매'
# 경매장 등록
regi_tmp = regi_df[['unitPrice', 'itemName']]
regi_tmp['hue'] = '등록'
# 그래프 그려줄 데이터
hist_df = pd.concat([sold_tmp, regi_tmp])
hist_df['itemName'] = hist_df['itemName'].apply(rename_xticks) # X축 표시를 위한 이름 축소
#그래프 그리기
plt.figure(figsize=(30,10))
sns.set_palette("Paired")
sns.countplot(data = hist_df, x = 'itemName', hue = 'hue', order = hist_df['itemName'].value_counts().index)
#라벨 제거
plt.xlabel('')
plt.ylabel('')
#제목 설정
if plt_title == '':
plt.title('입장권별 경매장 등록/판매 수량', fontsize= 30, pad = 15)
else:
plt.title(plt_title, fontsize= 30, pad = 15)
# 축 설정
if len(hist_df['itemName'].unique()) > 5: # X축 레이블이 5개 이상이면 이름 45도 회전
plt.xticks(rotation = 45)
plt.xticks(fontsize=25)
plt.yticks(fontsize=25)
#범주 설정
plt.legend(prop={'size':25})
plt.show()

각 입장권에 대한 판매와 등록 수량에 대한 시각화입니다. 마이스터 실험실 마스터 입장권의 판매와 등록 수량이 다른 입장권들에 비해서 압도적으로 많은 수량임을 확인할 수 있습니다. 마이스터 실험실 마스터 콘텐츠가 가장 활발하게 유저들이 즐기고 있다는 것을 확인할 수 있고 그 외 상급던전들은 입장 명성에 따라 판매/등록 수량이 감소하고 있는 모습을 볼 수 있습니다. 다만 의외인 점은 마이스터 실험실 익스퍼트가 파괴된 죽은 자의 성 마스터보다 높은 명성을 요구함에도 판매 수량이 적은것은 가격대비 파괴된 죽은 자의 성 마스터가 더 좋기 때문으로 보입니다. (판매와 등록에 차이가 발생하는 이유는 이전 포스팅에서 등록한 부분에 있는데 24시간 정보 수집이 불가능하기 때문입니다... 판매 기록은 이전 데이터가 많지 않다면 가져올 수 있지만 등록에 대한 API를 호출하기 전에 아이템 등록과 판매가 모두 완료됐다면 해당 정보를 가져올 수 없기 때문에 발생하는 데이터 수의 차이라고 생각하시면 됩니다.)
티켓별로 유저들의 반응을 확인해보기 위해서 데이터를 티켓별로 분리작업을 했습니다. 이번 프로젝트에서는 모든 입장권에 대해서 살펴보지는 않고 마이스터 실험실 마스터 입장권에 대한 데이터만 들여다 보기로 했습니다.
# 입장권별로 데이터 분리
trade_types = ["regi", 'sold']
ticket_dfs = {trade_type : [] for trade_type in trade_types}
for name in sold_df['itemName'].unique():
for trade_type in trade_types:
# 등록인지 판매인지 구분
if trade_type == 'regi':
df = regi_df
elif trade_type == 'sold':
df = sold_df
# 거래 타입에 맞춰 해당 데이터프레임에서 입장권 데이터 분리
target = df[df['itemName'] == name]
ticket_dfs[trade_type].append({name : target})
# 각 입장권의 등록, 판매 수량 출력
# print(f"{trade_type} {name}, : ",len(target))
# print()
입장권의 분포
def print_ticket_hist(df_num):
df_key = list(ticket_dfs['regi'][df_num].keys())[0] # itemName정보 가져오기 key값으로 들고있음.
# 마이스터 실험실 마스터 입장권 경매장 등록, 판매 데이터 중 가격에 대한 정보만 가져오기
regi_hist = ticket_dfs['regi'][df_num][df_key][['unitPrice']]
sold_hist = ticket_dfs['sold'][df_num][df_key][['unitPrice']]
# 그래프 그리기
fig, ax1 = plt.subplots(figsize=(20,10))
# 등록그래프
sns.histplot(regi_hist['unitPrice'], color='r', alpha=0.2, label='판매등록', ax = ax1)
# X축 공유하는 그래프
ax2 = ax1.twinx()
sns.histplot(sold_hist['unitPrice'], color='b', alpha=0.2, label='판매완료', ax = ax2)
# 제목 추가, 라벨 표시 형태 설정
plt.title(df_key + " 등록/판매 분포" , fontsize=20, pad = 15)
plt.ticklabel_format(axis='x',useOffset=False, style='plain')
# x,y 축 이름 제거
ax1.set_xlabel('')
ax1.set_ylabel('')
ax2.axis('off')
# 폰트 크기 설정
ax1.tick_params(axis='both', which='major', labelsize=15)
# 범례 추가
lines, labels = ax1.get_legend_handles_labels()
lines2, labels2 = ax2.get_legend_handles_labels()
ax2.legend(lines + lines2, labels + labels2, fontsize=15)
plt.show()

그래프를 보면 등록과 판매가 된 수량에 대한 분포가 대부분 겹쳐있고 종 모양의 정규분포를 이루고 있는 모습을 확인할 수 있습니다. 이를 통해서 마이스터 실험실 마스터 입장권에 대한 수요와 공급이 충분히 많고 균형가격에 40~80만원 사이에서 형성하고 있을 것이다라는 것을 알 수 있습니다.
그렇다면 보다 유저들의 반응을 살펴보기 위해서 데이터를 수집한 기간내에 마이스터 실험실 입장권에 대한 수요와 가격의 흐름을 어떤지 시각화를 통해 확인해보겠습니다.
수량&가격 시각화 함수
def print_ticket_lineplot(df_num, trade_type):
df_key = list(ticket_dfs['regi'][df_num].keys())[0] # itemName정보 가져오기 key값으로 들고있음.
if trade_type == 'regi':
df = ticket_dfs['regi'][df_num][df_key]
title_keyword = '등록'
elif trade_type == 'sold':
df = ticket_dfs['sold'][df_num][df_key]
title_keyword = '판매'
#공백 기간 설정
blank_date1 = '2023-03-23 05:59:59'
blank_date2 = '2023-04-03 18:00:00'
# 1시간당 판매 수량
cnt = df[['count']].resample('1H').sum()
nan_index = cnt[ (cnt.index > blank_date1) & (cnt.index < blank_date2)].index
cnt['count'].loc[nan_index] = np.NaN
# 1시간당 평균 거래 금액
price = df[['unitPrice']].resample('1H').mean()
# 그래프 그리기
fig, ax1 = plt.subplots(figsize=(16,5))
plt.title(f'마이스터 실험실(마스터) 입장권 {title_keyword} 수량 및 가격', fontsize=16, pad =15)
x = cnt.index
y1 = cnt['count']
y2 = price['unitPrice']
# 수량 그래프 그리기
color = 'tab:red'
ax1.set_xlabel('date', fontsize = 15)
ax1.set_ylabel('수량', fontsize = 15, color=color)
ax1.plot(x, y1, color=color, label='수량')
ax1.tick_params(axis='y', labelcolor=color)
ax2 = ax1.twinx()
# 가격 그래프 그리기
color = 'tab:blue'
ax2.set_ylabel('가격', fontsize = 15, color=color)
ax2.plot(x, y2, color=color, label='가격')
ax2.tick_params(axis='y', labelcolor=color)
ax1.tick_params(axis='both', which='major', labelsize=12)
ax2.tick_params(axis='y', which='major', labelsize=12)
# 라벨 제거
ax1.set_xlabel('')
ax1.set_ylabel('')
ax2.set_ylabel('')
# 범례 표시
lines, labels = ax1.get_legend_handles_labels()
lines2, labels2 = ax2.get_legend_handles_labels()
ax2.legend(lines + lines2, labels + labels2, loc='best', fontsize=12, frameon=True)
plt.show()
등록 수량 시각화
print_ticket_lineplot(11, 'regi')

판매 수량 시각화
print_ticket_lineplot(11, 'sold')

판매 수량과 가격에 대한 그래프를 보면 수량은 어느정도 일정한 주기성을 보이고 있는게 확인이 됩니다. 4월 3~4일 부근에 수량이 급격하게 상승한 부분이 있는데 이는 그 시간에 '1회용 완전 성장권'을 이벤트로 공급되면서 급격한 증가가 있었음을 알 수 있습니다. 이러한 수량의 주기성을 시계열 분해를 통해서 좀 더 자세히 알아보겠습니다.
시계열 분해(Prophet)
# prophet을 사용하기 위한 데이터프레임 만들기 함수
def make_prophet_df(dataset, target_col, trade_type):
# 가격, 수량에 맞춘 리샘플 데이터프레임 만들기
if target_col == 'count':
df = dataset[target_col].resample('1H').sum()
elif target_col == 'unitPrice':
df = dataset[target_col].resample('1H').mean()
# prophet 모듈은 중간에 비어있는 기간이 있어 정확한 파악이 어려워 기간 분리
# 23일 점검 전까지 데이터 사용
df = df['2023-03-01 06:00:00':'2023-03-23 05:59:59']
df = df.reset_index()
# 등록, 판매에 맞추어 컬럼명 변경
if trade_type == 'regi':
df = df.rename(columns = {'regDate' : 'ds'})
elif trade_type == 'sold':
df = df.rename(columns = {'soldDate' : 'ds'})
df = df.rename(columns = {target_col : 'y'})
return df
# prophet을 사용하여 추세 그래프 출력
def print_item_components(df, target_col, auction_type):
# prophet 사용하기 위한 데이터프레임 가져오기
prophet_df = make_prophet_df(df, target_col, auction_type)
# Prophet 모델 만들기 - 하이퍼파라미터는 GridSearchCV를 통해서 가장 잘 예측하는 값으로 사용.
model = prophet.Prophet(
changepoint_prior_scale = 0.1,
seasonality_mode = 'multiplicative' ,
seasonality_prior_scale = 12,
weekly_seasonality = 17,
daily_seasonality = 12,
yearly_seasonality = False
)
# 데이터 모델 적용
model.fit(prophet_df)
# 추세 그래프를 그리기 위해 하루치 예측 데이터 만들기
future = model.make_future_dataframe(periods=24, freq='H')
# 예측 및 데이터에 대한 추세 그래프 그리기
forecast = model.predict(future)
model.plot_components(forecast)
plt.show()
return
trade_dataset = {'regi' : regi_df, 'sold' : sold_df}
for trade_type, auction_df in trade_dataset.items():
print(trade_type + " 시계열 분해")
print_item_components(auction_df, 'count', trade_type)
print()

순서대로 추세, 주간, 시간대별 시계열 분해에 대한 정보입니다. 추세는 앞선 그래프에서 확인했듯 하락하는 추세였지만 다시 상승하는 추세임을 보여줍니다. 주간 그래프를 통해서는 일요일이 수요가 가장 높고 그 뒤를 화요일 저녁, 수요일, 토요일 저녁에 수요가 많음을 확인할 수 있었습니다. 일요일은 아무래도 주말이다 보니 수요가 많을 것이고 화요일은 주간 컨텐츠가 초기화되는 시기라 입장권을 구할 수 있는 곳이 많이 없어 교환 가능 입장권에 대한 수요가 많은 것으로 확인할 수 있습니다. 그 뒤로 수,토요일에 수요가 많은 이유는 수요일에는 레기온, 차원회랑, 토요일에는 바칼 레이드 컨텐츠 오픈이 되기 때문에 많이 유저들이 접속했기 때문에 공급이 많아져 수요량이 증가했을 것으로 보입니다. 시간대별로 보면 점심시간 이후로 높은 수요량을 보여주긴 하지만 확실히 퇴근 시간에 수요가 크게 감소하지만 이후로 꾸준히 상승하고 11~12시를 기점으로 다시 감소한느 모습을 확인할 수 있었습니다.
이번에는 수량과 가격그래프로 다시 돌아가 가격에 대해서 들여다 보겠습니다. 가격은 특정한 주기성이 보이지 않고 등락을 꾸준히 하고 있었는데 4월 8일 이후로 가격 하락없이 꾸준한 상승을 하고 있고 수집기간 내에 최고 가격을 갱신하고 있는 모습을 볼 수 있습니다. 이는 인플레이션을 의심해볼 수 있는 형태입니다. 게임에는 골드라는 인게임 재화에 대한 가치가 따로 존재합니다. 이 가치가 하락하면서 입장권의 가격이 상승했을 수 있기 때문에 이를 확인해보기로 했습니다. 골드에 대한 가치는 아이템매니아의 일별 평균 거래 가격을 가져왔습니다.(인게임 재화 현금거래는 불법..!)
# 아이템 매니아 골드 시세 가져오기 - xmltodict, selenium, webdriver_manager 모듈 설치 필요
def get_gold_trend():
# 크롤링 py 실행 -> gold_price.csv 생성
!python get_gold_trend.py
# 데이터 가져오기
gold_price = pd.read_csv('gold_price.csv')
#데이터 정리
gold_price = gold_price.rename(columns={
'@date' : 'date',
'@price' : 'price'
})
gold_price['price'] = gold_price['price'].astype(int)
gold_price = gold_price.drop(list(filter(lambda x : x not in ['date','price'], gold_price.columns)), axis=1)
gold_price['date'] = pd.to_datetime(gold_price['date'])
gold_price['price'] = gold_price['price'].astype(int)
gold_price.set_index('date', inplace=True)
return gold_price
# 골드 시세 가져오기 - 구글 크롬 드라이버 자동 설치됨.(약 10M)
gold_price = get_gold_trend()
get_gold_trand.py
from urllib import parse
import pandas as pd
import xmltodict
import warnings
warnings.filterwarnings('ignore')
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
driver = webdriver.Chrome( service=Service(ChromeDriverManager().install()) )
url = 'http://trade.itemmania.com/_xml/gamemoney_avg.xml.php?gamecode=281&servercode=12189&count=90'
driver.get(url)
html = driver.page_source
driver.close()
dict_type = xmltodict.parse(html)
gold_info = dict_type['html']['body']['div']
gold_info_df = pd.DataFrame(gold_info[0]['quotation']['data'])
gold_info_df.to_csv('gold_price.csv', index=False)
시각화
# 골드 시세와 입장권 시각화
def print_gold_ticket(ticket_df, gold_df, daily_price, trade_type):
# 등록과 판매의 데이터 시작일이 다름.
# 판매 이력의 경우 판매 수량 자체가 적을 경우 API에서 받아오는 시작일이 좀 더 과거일 수 있기 떄문에 따로 설정.
start_day = format((ticket_df.index.min()) - (datetime.timedelta(days=1)), '%Y-%m-%d')
gold_df = gold_df[start_day:]
# 그래프 그리기
fig, ax1 = plt.subplots(figsize=(16,5))
# 골드 가치 그래프
color = 'tab:red'
ax1.set_xlabel('date', fontsize = 15)
ax1.set_ylabel('GOLD_VLAUE', fontsize = 15, color=color)
ax1.plot(gold_df, color=color, label='골드 가치')
ax1.tick_params(axis='y', labelcolor=color)
ax2 = ax1.twinx()
# 입장권 가격 그래프
color = 'tab:blue'
color2 = 'xkcd:sky blue'
ax2.set_ylabel('TICKET_PRICE', fontsize = 16, color=color)
ax2.scatter(x = ticket_df.index, y = ticket_df, color='skyblue', label='시간대 평균 가격') # 시간대 평균 가격 Scatter
ax2.plot(daily_price, color='b', label='하루 평균 가격') # 하루 평균 가격 line
ax2.tick_params(axis='y', labelcolor=color)
ax1.tick_params(axis='both', which='major', labelsize=12)
ax2.tick_params(axis='y', which='major', labelsize=12)
ax1.set_xlabel('')
ax1.set_ylabel('')
ax2.set_ylabel('')
trade_keyword = '판매' if trade_type == 'sold' else '등록'
plt.title('골드 가치 - 마이스터 실험실 마스터 입장권 가격('+ trade_keyword + ')', fontsize=17, pad = 12)
# 범례
lines, labels = ax1.get_legend_handles_labels()
lines2, labels2 = ax2.get_legend_handles_labels()
ax2.legend(lines + lines2, labels + labels2, loc='best', frameon=True)
plt.show()
# 골드, 티켓 그래프 시각화 함수
# 데이터 프레임만 넘겨주면 시간별 가격, 하루 평균 가격으로 데이터프레임 만들어 시각화 함수에 전달
def compare_gold(ticket_price_df, gold_df, trade_type):
# index : 11 -> 마이스터 실험실 마스터 입장권
df_key = list(ticket_dfs[trade_type][11].keys())[0] # itemName정보 가져오기 key값으로 들고있음.
df = ticket_dfs['regi'][11][df_key]
ticket_price = df['unitPrice'].resample('1H').mean()
daily_price = df[['unitPrice']].resample('1D').mean()
now = time.localtime()
today = time.strftime('%Y-%m-%d', now)
gold_df = gold_df[: today]
print_gold_ticket(ticket_price, gold_df, daily_price, trade_type)
# 골드와 입장권 가격 정보 시각화
print('REGIT TICKET AUCTION')
compare_gold(regi_df, gold_price, "regi")
print()
print('SOLD TICKET AUCTION')
compare_gold(sold_df, gold_price, "sold")


판매 그래프를 보면 골드 가치와 입장권의 가격은 음의 상관임을 확인할 수 있습니다. 그런데 앞서 이야기한 인플레이션 의심 형태를 보였던 기간에는 오히려 골드가격이 상승했음에도 입장권 가격은 꾸준한 상승이 있었습니다. 이는 골드 가치가 입장권 가격에 영향을 주는 요소임인 맞지만 이러한 골드 상승보다 더 크게 영향을 주는 요소가 있음을 의미합니다. 이를 확인하기 위해서 입장권의 수요와 공급량에 대해서 확인해보기로 했습니다. 수요와 공급에 대해서 보는게 의미가 있는 것은 이 기간이 뮤즈관련 성장 이벤트가 종료된 직후라 교환 불가 입장권에 대한 공급량이 크게 감소하여 교환 가능 입장권의 수요량도 감소했을 것이기 때문입니다.

이벤트 전에는 약 공급(등록)량이 판매(수요)량의 94% 수준이었는데 이벤트 종료 후에는 약 84%로 10% 하락했음을 확인하였습니다. 이를 통해서 알 수 있는 것은 골드 가치가 입장권 가격과 음의 상관을 갖고 있는 요소이나 입장권의 공급량이 더 강한 상관을 갖고 있음을 확인할 수 있었습니다.
이러한 데이터 분석을 통해서 알 수 있었던 점은 다음과 같습니다.
1. 마이스터 실험실 마스터는 아직도 많은 유저들의 수요가 존재하는 던전이다. 가격의 등락에 상관없이 꾸준한 수요량을 보여주고 있다는 것이 이를 말해준다.
2. 입장권은 골드 가치에 영향을 받는 것은 맞지만 그보다 공급량에 더 큰 영향을 받고 있는 모습을 확인할 수 있었다.
3. 마이스터 실험실 마스터 입장권을 제외한 나머지 상급 던전 입장권들은 입장 명성이 낮아질수록 수요가 낮아지고 있는 모습을 확인할 수 있었는데 마이스터 실험실 익스퍼트보다 파괴된 죽은 자의 성 마스터의 수요가 더 많은 모습을 확인할 수 있었다. 이는 드랍되는 아이템에 큰 차이가 없지만 가격이 약 2배 저렴한 파죽마를 유저들이 선택하고 있던 것이었다. 게다가 이 데이터는 최근 패치된 파죽성 난이도 너프 이전 지표이기에 앞으로도 지켜볼만한 데이터라 할 수 있다.
이번 프로젝트로 공부할 수 있었던 것들은 DB를 통해서 데이터를 관리하는 방법, 데이터 분석을 위해서는 다양한 지식들이 필요하다. 이렇게 크게 두 가지인것 같다.
분석에 있어서는 '아는만큼 보인다'라는 말이 모든 것을 표현할 수 있는 느낌이었다.
프로그래밍 스킬에 대한 공부도 중요하지만 도메인 지식과 그 외의 지식들에 대해서도 관심을 갖고 공부해야겠구나를 느낄 수 있는 프로젝트였따...
'데이터분석' 카테고리의 다른 글
| 던전앤파이터 상급던전 입장권 분석(1) (0) | 2023.04.17 |
|---|---|
| 다양한 시계열 예측 모델(ARIMA, Prophet, LSTM) 정리 (0) | 2023.03.26 |
| 딥러닝을 통한 게임 봇 탐지를 위한 판단 근거 분석 기법 (0) | 2023.03.21 |
| 온라인 게임에서의 이상 징후 탐지 기법 조사 및 분류 (0) | 2023.03.20 |
| Riot API 활용해서 TFT 시즌8 데이터 분석 해보기 - (1) 크롤링 (0) | 2023.03.03 |