Python / / 2022. 10. 4. 15:37

Python - Pandas 데이터 전처리

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'])


  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유