import pandas as pd
'''
다른 자료형을 시계열 객체로 변환
많은 시간 데이터들은 문자열 또는 숫자로 저장
판다스에서는 시계열 객체 TimeStamp 변환 함수 제공
-문자열을 Timestamp로 변환
-판다스 to_datetime() 함수는 다른 자료형을 판다스 Timestamp를 나타내는 datetime64 자료형으로 변환
--stock-data.csv 불러오기
Date열 데이터 및 타입 확인
'''
data= pd.read_csv('./stock-data.csv')
#Date열의 날자 데이터를 판다스 Timestanmp로 변환 하여 new_Date열에 추가 (to_datetime 메소드 활용)
data['new_Date'] = pd.to_datetime(data['Date'])
#인덱스 설정
data.set_index('new_Date',inplace=True)
data.drop('Date',axis=1,inplace=True)
#data.sort_index(ascending=True,inplace=True )
'''
print(data)
판다스 to_period는 일정한 기간을 나타내는 Period객체로 Timestamp객체 반환
freq 옵션에 기준이 되는 기간을 설정
'''
dates = ['2019-01-01','2020-03-21','2021-06-01']
#문자열 데이터를 판다스 Timestamp로 변환
ts_dates = pd.to_datetime(dates)
#TimeStamp를 Period로 변환
pr_day =ts_dates.to_period(freq='D')
print(pr_day)
pr_month =ts_dates.to_period(freq='M')
print(pr_month)
pr_year =ts_dates.to_period(freq='A')
print(pr_year)
'''
출력 :
PeriodIndex(['2019-01-01', '2020-03-21', '2021-06-01'], dtype='period[D]', freq='D')
PeriodIndex(['2019-01', '2020-03', '2021-06'], dtype='period[M]', freq='M')
PeriodIndex(['2019', '2020', '2021'], dtype='period[A-DEC]', freq='A-DEC')
'''
#date_range 함수, {start:시작 , end: 끝}
#periods: 생성할 타임스탬프 갯수 , freq: 시간 간격 tz : timezond(Asia/Seoul)
#2022-01-01부터 한달 간격으로 각 달의 시작 날짜를 6개 생성 하기
date = pd.date_range('2022-01-01','2022-6-1',freq='MS')
print(date)
#2022-01-01부터 한달 간격으로 각 달의 마지막 날짜 6개 생성하기
date2= pd.date_range('2022-01-01',periods=6,freq='M',tz='Asia/Seoul')
#2022-01-01부터 분기 간격 월의 마지막 날짜 6개 생성하기
'''Period 배열
period_range() 함수는 여러 개의 기간 (Period)이 들어있는 시계열 데이터 생성
period 배열 만들기 - 2022년 1월1일부터 한달 길이 객체 3개 생성해보기
'''
a = pd.period_range('2022-01-01','2022-03-01',freq='M')
print(a)
b= pd.period_range('2022-01-01',periods=3, freq='h')
print(b)
c=pd.period_range('2022-01-01',periods=3,freq='2H')
print(c)
#날짜 데이터 분리 하기
data.reset_index(inplace=True)
data['year']=data['new_Date'].dt.year
data['month']=data['new_Date'].dt.month
data['Day']=data['new_Date'].dt.day
print(data)
#timestamp를 Period로 변환해서 년월일 표기 freq 사용 하기
data['Date_m']=data.new_Date.dt.to_period('M')
data.set_index('Date_m',inplace=True)
data['Date_yr'] = data.new_Date.dt.to_period('A')
print(data)
'''날짜 인덱스 활용
Timestamp열 > 행 인덱스 DatetimeIndex 속성 , (period 열 > 행 인덱스 PeriodIndex 속성)
-시계욜 데이터 인덱싱과 슬라이싱은 날짜 인덱싱 사용
'''
#
data.set_index('new_Date',inplace=True)
print('2018년 출력',data['2018'])
print('2018년 6월 출력',data.loc['2018-06'])
abc = data.loc['2018-06']
print('2018년 6월의 주식 가격중 시작가와 최고가 확인',abc[['Start','High']])
print('---------------------')
print(data.loc['2018-06-15'])
print('----------------------')
print(data['2018-06-25':'2018-06-20'])
'Python' 카테고리의 다른 글
Python - 타이타닉 데이터셋 탐색적 데이터 분석 (0) | 2022.10.11 |
---|---|
Python - Pandas 데이터프레임 응용 (0) | 2022.10.04 |
Python - Seaborn 3 (0) | 2022.10.01 |
Python - folium 사용 지도데이터 (0) | 2022.10.01 |
Python -seaborn 그래프 -2 (0) | 2022.10.01 |