네이버 검색 트렌드는 주 단위로 특정 검색어에 대한 검색량을 제공하고 있음
주별 검색량을 검색 기간 사이의 최소검색량, 최대검색량을 기준으로 0~100 사이의 수로 scaling하여 보여줌
이 주 단위의 데이터를 차후 데이터 분석 프로젝트(종속변수 예측)에서 입력변수로 사용할 때 단순히 한 주의 검색량을 하나의 값으로 일괄적으로 넣기보단
한 주와 연속되는 다른 주의 검색량 사이 직선 상에 1일 간격으로 점을 찍어 예측의 정확도를 더 높이고자 일 단위로 가공하고자 함
주 리스트 만들기
In [3]:
##1년은 52주로 구성됨
week = list(range(1, 53)) #range 함수의 첫 번째 파라매터에는 시작할 숫자, 두 번째 파라매터에는 끝나는 숫자보다 1 큰 수를 넣어줌
In [ ]:
week
In [120]:
len(week)
Out[120]:
각 주의 대표일 리스트 만들기
In [103]:
##한 주는 7일로 구성되어 있으므로 첫 번째 주의 가운데 날인 4번째 일을 그 주의 대표값(일)로 표시 (두 번째 주의 대표일은 11일)
representative_day = list(range(4, 365, 7))#range의 세 번째 파라매터에는 간격이 들어감
In [ ]:
representative_day
In [119]:
len(representative_day)
Out[119]:
In [9]:
##나중에 날짜에 대한 기능을 배우면 이 인덱스로 날짜 갖다 붙이기 가능
난수생성기
In [1]:
import random
In [2]:
random.randint(0, 10) #0~10 사이의 정수 난수 생성(0과 10 포함)
Out[2]:
난수 생성으로 검색량 리스트 만들기
In [10]:
search = [] #비어있는 리스트 생성
In [11]:
## 52주(1년) 동안의 주간 검색량 생성
for i in range(0, 52) :
search = search + [random.randint(0, 100)] #검색량 트렌드 데이터가 0~100 사이로 검색량을 나타내므로 0과 100 사이의 숫자 생성
In [ ]:
search
In [118]:
len(search)
Out[118]:
In [128]:
from pandas import DataFrame
In [129]:
###예시
#dataframe 2차원같은 자료구조
#키는 컬럼 안에 들어가는애들은 리스트형식 으로 하면 예쁜 모양으로 그려짐
data = {
'state': ['Ohio', 'Ohio', 'Ohio', 'Nevada', 'Nevada'],
'year': [2000, 2001, 2002, 2001, 2002],
} #사전객체
In [130]:
frame = DataFrame(data)
In [131]:
frame
Out[131]:
In [122]:
data = {
'week': week,
'day': representative_day,
'search_volume': search,
}
In [123]:
frame = DataFrame(data)
In [124]:
frame
Out[124]:
1과 7 사이에 2개의 수 더 늘리기
In [159]:
a = [1, 7]
In [160]:
a
Out[160]:
In [161]:
b = (a[1]-a[1-1])/3
In [162]:
a1 = a[1-1] + b
In [163]:
a1
Out[163]:
In [164]:
a2 = a1 + b
In [165]:
a2
Out[165]:
In [166]:
a3 = a2 + b
In [167]:
round(a3, 5) == a[1]
Out[167]:
In [168]:
final = [a[1-1]] + [a1] + [a2]
In [169]:
final
Out[169]:
실제 데이터로 생성
In [170]:
final = []
part = []
In [171]:
for i in range(1, 52) :
b = (search[i] - search[i-1])/7
a1 = search[i-1] + b
a2 = a1 + b
a3 = a2 + b
a4 = a3 + b
a5 = a4 + b
a6 = a5 + b
part = [search[i-1]] + [a1] + [a2] + [a3] + [a4] + [a5] + [a6]
final = final + part
In [172]:
final
Out[172]:
In [173]:
len(final)
Out[173]:
나중에 plot을 배우면 더 직관적으로 이해하기 좋을 것 같음
난수 생성으로 일 리스트 만들기
In [176]:
day = list(range(4,361)) #첫째주의 중간 일인 4일부터 마지막주(52주)의 중간 일인 361일 전날까지에 대해서 산출한 것이므로
In [ ]:
day
In [76]:
len(day)
Out[76]:
In [178]:
full_data = {
'day': day,
'search volume': final,
}
In [179]:
full_frame = DataFrame(full_data)
In [ ]:
full_frame