[영화진흥위원회 API] 일별 박스오피스 데이터 활용하기 with Python

2024. 3. 11. 20:08·STUDY

영화진흥위원회(KOFIC)에서 제공하는 API를 활용해 보았다.

 

1. 키 발급

 

영화진흥위원회 오픈API

OPEN API 서비스 영화진흥위원회 영화관입장권통합전산망에서 제공하는 오픈API 서비스로 더욱 풍요롭고 편안한 영화 서비스를 즐겨보세요.

www.kobis.or.kr

먼저 Open API를 활용하기 위해 키를 발급받아준다.

사용 목적과 관리명 정도만 입력하면 간단하게 발급받을 수 있다.

 

몰랐는데 영화 관련 데이터가 생각보다 많이 제공되고 있었다.

네이버 블로거 중에 매주 박스오피스 통계를 제공해주시는 분이 계셔서 가끔 봤었는데

여기서 받아서 쓰시는 건가.. 생각함

 

2. 서비스 정보 확인

 

영화진흥위원회 오픈API

제공서비스 영화관입장권통합전산망이 제공하는 오픈API서비스 모음입니다. 사용 가능한 서비스를 확인하고 서비스별 인터페이스 정보를 조회합니다.

www.kobis.or.kr

내가 사용할 서비스는 일별 박스오피스 API 서비스로

이런 데이터.. 등을 제공한다.

 

3. 2024년 일별 박스오피스 데이터 수집

일별 데이터가 제공되기 때문에 2024년 데이터를 합치기 위해 반복해 주었다.

# 0. 패키지 import
import warnings 
warnings.filterwarnings('ignore')
import pandas as pd
import requests, json
from datetime import datetime,timedelta

# 0. 빈 데이터프레임 생성 --> 가져올 데이터와 concat하기 위해
df1 = pd.DataFrame()

# 1. App_Key 얻기
App_Key = 'App Key'

# 2. document url 
url = "http://www.kobis.or.kr/kobisopenapi/webservice/rest/boxoffice/searchDailyBoxOfficeList.json" 

start = "20240101"
last = "20240309" # 오늘 날짜에서 -1일로 바꾸기

start_date = datetime.strptime(start, "%Y%m%d")
last_date = datetime.strptime(last, "%Y%m%d")

while start_date <= last_date:
    dates = start_date.strftime("%Y%m%d")
    
    params = {
        'key': App_Key,
        'targetDt': dates
    }
    
    response = requests.get(url, params)
    print(response)
    
    data = response.json()['boxOfficeResult']['dailyBoxOfficeList']
    columns = ['rank', 'movieNm','audiCnt','audiAcc','scrnCnt','showCnt']
    df = pd.DataFrame(data)[columns]
    df['date'] = dates	# 언제 박스오피스인지 알기위함
    df1 = pd.concat([df1, df])
    
    start_date += timedelta(days=1)

df1 = df1.astype({ 'rank' : 'int' ,'audiCnt' : 'int' ,'audiAcc' : 'int' ,'showCnt' : 'int','scrnCnt' : 'int'})
df1['date'] = pd.to_datetime(df1['date'])
df1['year'] = df1['date'].dt.year
df1['month'] = df1['date'].dt.month
df1['day'] = df1['date'].dt.day
df1

월별 데이터 같은 것도 좀 보려고 컬럼을 만들어 놨는데 안씀 ㄱ ㅡ

 

4. EDA 및 시각화

데이터를 깊이있게 살펴보진 못했고 궁금했던 부분만 좀 봤다.

 

- 2024년 3월 9일까지 1위를 가장 자주 한 영화는?

# 0. 설정
import seaborn as sns
import matplotlib.pyplot as plt

plt.rc('font', family='Malgun Gothic')
sns.set(font="Malgun Gothic",#"NanumGothicCoding", 
        rc={"axes.unicode_minus":False}, # 마이너스 부호 깨짐 현상 해결
        style='darkgrid')
        
# 2024년 일별 박스오피스 1등을 가장 많이 한 영화는? => 웡카
df1.loc[df1['rank'] == 1].groupby('movieNm')[['rank']].count()

 

- '파묘' 관객 수 추이는?

pamyo = df1.loc[df1['movieNm'] == '파묘'][['date','audiCnt']]
sns.lineplot(x = 'date' , y = 'audiCnt', data = pamyo)
plt.title('파묘 관객 수 추이')
plt.xticks(rotation = 30)
plt.show()

튀는 수치는 주말, 공휴일로 보인다.

 

- '웡카' 관객 수 추이는?

wonka = df1.loc[df1['movieNm'] == '웡카'][['date','audiCnt']]
sns.lineplot(x = 'date' , y = 'audiCnt', data = wonka)
plt.title('웡카 관객 수 추이')
plt.xticks(rotation = 30)
plt.show()

- '괴물' 관객 수 추이는?

monster = df1.loc[df1['movieNm'] == '괴물'][['date','audiCnt']]
sns.lineplot(x = 'date' , y = 'audiCnt', data = monster)
plt.title('괴물 관객 수 추이')
plt.xticks(rotation = 30)
plt.show()

 

- 24년 3월 8일 박스오피스 시각화

# 2024년 3월 8일 박스오피스 순위 데이터 시각화
boxoffice_0308 = df1.loc[df1['date'] == '2024-03-08'] 
boxoffice_0308.sort_values('audiCnt', ascending = False, inplace = True)

sns.barplot(x = 'audiCnt', y = 'movieNm', data = boxoffice_0308)
plt.show()

 

- 24년 3월 8일 한 타임 당 평균 관객 수 (일 관객수/상영횟수)

# 2024년 3월 8일 한 타임 당 평균 관객 수 (일 관객수/상영횟수)
df1['audi_per_hall'] = round(df1['audiCnt'] / df1['showCnt'], 2)

boxoffice_0308_hall = df1.loc[df1['date'] == '2024-03-08'] 
boxoffice_0308_hall.sort_values('audiCnt', ascending = False, inplace = True)

sns.barplot(x = 'audi_per_hall', y = 'movieNm', data = boxoffice_0308_hall)
plt.show()

파묘는 상영관도 가장 많고, 한 회차당 관객 수도 가장 많으니 하루 관객수가 압도적으로 많은 것 같다.

 

반응형

'STUDY' 카테고리의 다른 글

[와이어샤크] 프로토콜별 패킷 살펴보기  (0) 2025.05.01
[NAVER Developers API] 지역 검색 API 활용하기 with Python  (1) 2024.03.09
'STUDY' 카테고리의 다른 글
  • [와이어샤크] 프로토콜별 패킷 살펴보기
  • [NAVER Developers API] 지역 검색 API 활용하기 with Python
진미
진미
  • 진미
    ABC
    진미
  • 전체
    오늘
    어제
    • 분류 전체보기 (65)
      • PROJECT (3)
      • ALGORITHM (43)
      • STUDY (3)
        • 리액트 (7)
        • 파이썬 (2)
      • 기타 (5)
  • 블로그 메뉴

    • 홈
    • 방명록
    • 글쓰기
    • 설정
  • 인기 글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
진미
[영화진흥위원회 API] 일별 박스오피스 데이터 활용하기 with Python
상단으로

티스토리툴바