2 minute read

넷플릭스 주식 데이터

import pandas as pd
df = pd.read_csv("https://raw.githubusercontent.com/Datamanim/datarepo/main/nflx/NFLX.csv")
df.head()
Date Open High Low Close Adj Close Volume
0 2002-05-23 1.156429 1.242857 1.145714 1.196429 1.196429 104790000
1 2002-05-24 1.214286 1.225000 1.197143 1.210000 1.210000 11104800
2 2002-05-28 1.213571 1.232143 1.157143 1.157143 1.157143 6609400
3 2002-05-29 1.164286 1.164286 1.085714 1.103571 1.103571 6757800
4 2002-05-30 1.107857 1.107857 1.071429 1.071429 1.071429 10154200

Q103. 매년 5월달의 open가격의 평균값을 데이터 프레임으로 표현하라

만약 date col을 Date.dt.month 로 그룹핑 하게 된다면, 연도를 구분하지 않고 달만을 가지고 그룹핑 하게된다.
지금은 각 년도의 특정 월을 조건으로 그룹핑 해야 하는 것이므로, 날짜 컬럼을 특정 형식으로 변환해야 한다.

# 우선 object 형식 datetime 타입으로 변환
df['Date'] = pd.to_datetime(df.Date)

strftime vs strptime

문자형을 변경하는데에는 위의 두가지 방법이 있으므로 이번 시간에 두가지를 구분해 보도록 하겠다.

변환문자 : ‘%Y-%m-%D %H:%M:%S’

strftime (str f time : string format time)

철자를 구분해서 이해하면 string 타입의 시간이란 뜻이다.
즉, 시간타입을 특정문자 타입으로 변환 시키는 것이다.

문법 : 변수.strftime(‘%시간지시자’)

strptime (str p time : string parse time)

반대로 문자타입을 시간타입으로 변경하는 것이다.

문법 : datetime.strptime(변수, ‘%시간지시자’)
주의. 기존 문자열과 똑같은 시간지시자 사용해야함

df['특정월변환'] = df.Date.dt.strftime('%Y-%m')
df[df.Date.dt.month == 5].groupby('특정월변환').Open.mean()
특정월변환
2002-05      1.155833
2003-05      1.641497
2004-05      4.261143
2005-05      1.951905
2006-05      4.163571
2007-05      3.159351
2008-05      4.435034
2009-05      5.790571
2010-05     14.417071
2011-05     34.650272
2012-05     10.523247
2013-05     31.936429
2014-05     51.121292
2015-05     85.057429
2016-05     92.705715
2017-05    158.255455
2018-05    329.779541
2019-05    359.664548
2020-05    433.880499
2021-05    496.923996
Name: Open, dtype: float64

타입 변환 추가연습

from datetime import datetime

now = datetime.now()
print(f'현재 시간 : {now}, 날짜 타입 : {type(now)}')
현재 시간 : 2023-12-09 23:41:42.338150, 날짜 타입 : <class 'datetime.datetime'>
strfnow = now.strftime('%y-%m-%d %H:%M:%S')
strfnow
'23-12-09 23:41:42'
strpnow = datetime.strptime(strfnow,'%y-%m-%d %H:%M:%S')
strpnow
datetime.datetime(2023, 12, 9, 23, 41, 42)

% 뒤에 쓰는 것을 서식 지시자 라고 하는데, chat gpt 에게 물어보니 종류가 너무 많다.
(%Y-%m-%D %H-%M-%S 만 외우고, 년도 2자리는 그냥 %y라는 것까지만 기억하자..)

%Y: 4자리 연도 (예: 2023)
%y: 2자리 연도 (예: 23)
%m: 2자리 월 (01 ~ 12)
%d: 2자리 일 (01 ~ 31)
%H: 2자리 시간 (00 ~ 23)
%M: 2자리 분 (00 ~ 59)
%S: 2자리 초 (00 ~ 59)
%f: 마이크로초 (000000 ~ 999999)
%a: 요일의 짧은 이름 (예: Sun, Mon)
%A: 요일의 전체 이름 (예: Sunday, Monday)
%b: 월의 짧은 이름 (예: Jan, Feb)
%B: 월의 전체 이름 (예: January, February)
%p: AM 또는 PM
%I: 12시간제 시간 (01 ~ 12)
%w: 요일 (0=일요일, 6=토요일)
%j: 연중 일수 (001 ~ 366)
%U: 연중 주수 (일요일 시작, 00 ~ 53)
%W: 연중 주수 (월요일 시작, 00 ~ 53)
%z: UTC 오프셋 (예: +0100, -0500)
%Z: 시간대 이름 (예: UTC, EST, CST)

Leave a comment