개인 실습: 07-30~07-31

정지호·2022년 7월 30일
0

개인 실습 진행

목록 보기
8/41

1주차 넷플릭스 과제, 비트코인 과제 마무리

실습파일은 깃허브 '프로그래머스 과제' 폴더에 올려두었다(https://github.com/CNU-Jiho-Jeong/jjh98)

- 넷플릭스 과제

* 넷플릭스 데이터(Netflix_titles)가 주어졌을 때, 제일 많은 작품수를 가진 국가 구하기(country column 및 단일 국가인 경우를 기준으로)

Netflix_country = Netflix.groupby('country')
Netflix_country.count().sort_values(by='show_id', ascending=False) # show_id로 정렬해 줌 + 내림차순

Netflix_country.count().sort_values(by='show_id', ascending=False).head(1) # 가장 많은 국가만 출력

  • United States가 가장 많다. 2818개.
  • country를 기준으로 그룹화 시켜 준 후, show_id를 활용해 정렬해준다. ascending=False를 통해 내림차순으로 정렬하여 United States가 가장 위에 오도록 한다. 그림을 보면 알 수 있겠지만, 단일국가의 작품수가 압도적으로 많다.
  • head(1)을 통해 United States만 출력할 수도 있다.

- 비트코인 필수 과제

데이터(Bitcoin.csv)가 주어졌을 때 2016.6 ~ 2017.6 기간의 5-MA(Moving Average) 비트코인 가격 그래프를 그려주세요.

선의 색깔은 노란색(#f2a900) 으로 해야합니다.
x-axis label과 y-axis label은 적절한 텍스트로 추가되어야 합니다.
이동평균의 기준은 Open Column으로 계산합니다.
이외에도 그래프를 알아보기 쉽게 하기 위한 정보(Text, Facet 등)을 추가하는 것도 좋습니다.
💡 이동평균(Moving Average)법은 시계열 데이터를 표현하는 데에 많이 사용하는 방법 중 하나입니다.

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline

Bitcoin = pd.read_csv("Bitcoin.csv") # 비트코인 데이터

start_date = Bitcoin.get(Bitcoin["Date"]=="2016-06-01") # 2016년 6월 부터
date_end = Bitcoin.get(Bitcoin["Date"]=="2017-06-30") # 2017년 6월까지

Bitcoin_date = Bitcoin.iloc[84:626,1:2] 
#iloc: 행 인덱스나 열 인덱스를 지정해주어 특정 값을 추출해 오는 방법 / 데이터프레임.iloc[행 인덱스, 열 인덱스]
# 여기서는 84행~625행까지의 데이터를의 1열(Date) 만 추출

# 이동평균법: 과거로부터 현재까지의 시계열 자료를 대상으로 일정기간별 이동평균을 계산하고 이들의 추세를 파악하여 다음 기간을 예측하는 방법
Bitcoin_open_5MA = Bitcoin["Open"].rolling(window=5).mean()
# rolling 함수: Pandas 이동평균 함수. 현재 열에 대하여 일정크기의 window를 이용하여 그 window 안의 값을 추가 메서드(sum, mean등)를 통해 계산
# window: 계산할 창의 크기. 열 기준으로 계산할 경우 행의 수. 이 문제의 경우도 행의 수.
# mean: 평균계산
Bitcoin_open_5MA = pd.DataFrame(Bitcoin_open_5MA) #데이터프레임화
Bitcoin_open_5MA = Bitcoin_open_5MA.iloc[84:626] # 데이터프레임에서 우리가 필요 정보 추출

Bitcoin_data = pd.concat([Bitcoin_date,Bitcoin_open_5MA], axis=1) # concat: 데이터프레임 합치기. axis = 1은 열 기준. 데이터프레임이 옆으로 붙음
# axis = 0은 행 기준. 데이터프레임이 위/아래로 쌓임.
Bitcoin_data = Bitcoin_data.sort_index(ascending=False) #합쳐진 데이터프레임을 내림차순으로 배열

# 그래프 그려주기
x = Bitcoin_data["Date"]
y = Bitcoin_data["Open"]

plt.plot(x,y,color = "#f2a900") # 선 색은 노란색. 
plt.title("Bitcoin Graph 2016-06-01~2017-06-30")
plt.xlabel("Date")
plt.ylabel("Price")
plt.xticks([i for i in range(0,541,135)]) #list comprehension 활용하여 x축 눈금 설정

plt.show()

- 비트코인 Bonus 과제

위에 주어진 데이터와 더불어 다음 데이터도 주어졌을 때, 2016.6 ~ 2017.6 기간에 해당하는 비트코인의 5-MA 그래프와 이더리움의 5-MA 그래프를 동시에 그려주세요.

선의 색깔은 비트코인 : 노란색(#f2a900), 이더리움 : 검은색(#3c3c3d) 으로 해야합니다.
x-axis label과 y-axis label은 적절한 텍스트로 추가되어야 합니다.
이동평균의 기준은 Open Column으로 계산합니다.
이외에도 그래프를 알아보기 쉽게 하기 위한 정보(Text, Facet 등)을 추가하는 것도 좋습니다.


# 중략(비트코인 문제와 동일한 형식인 부분은 생략했다.)

x = Bitcoin_data["Date"]
y = Bitcoin_data["Open"]
x1 = eth_data["Date"]
y1 = eth_data["Open"]

plt.plot(x,y,label = "Bitcoin", color = "#f2a900") # 선 색은 노란색. 
plt.plot(x1,y1,label = "Ethereum", color = "#3c3c3d") # 선 색은 검은색
plt.title("Bitcoin and Ethereum Graph 2016-06-01~2017-06-30")
plt.xlabel("Date")
plt.ylabel("Price")
plt.legend()
plt.xticks([i for i in range(0,541,135)]) #list comprehension 활용하여 x축 눈금 설정

plt.show()

  • 이동평균법: 과거로부터 현재까지의 시계열 자료를 대상으로 일정기간별 이동평균을 계산하고 이들의 추세를 파악하여 다음 기간을 예측하는 방법
  • iloc: 행 인덱스나 열 인덱스를 지정해주어 특정 값을 추출해 오는 방법. '데이터프레임.iloc[행 인덱스, 열 인덱스]' 과 같이 쓴다. 슬라이싱도 가능하다.
  • rolling 함수: Pandas 이동평균 함수. 현재 열에 대하여 일정크기의 window를 이용하여 그 window 안의 값을 추가 메서드(sum, mean등)를 통해 계산
  • window: 계산할 창의 크기. 열 기준으로 계산할 경우 행의 수. 이 문제의 경우도 행의 수.
  • concat: 데이터프레임 합치기. axis = 1은 열 기준. 데이터프레임이 옆으로 붙음. axis = 0은 행 기준. 데이터프레임이 위/아래로 쌓임.
  • plt.xticks: x축 눈금 설정
profile
정지호

0개의 댓글