본문 바로가기
데이터분석/pandas

pandas를 이용한 원하는 날짜 및 시간데이터 뽑아오기

by 디찌s 2021. 1. 1.
728x90
반응형

1.pandas.to_datetime 사용

 

주식데이터에서 특정날짜와 시간을 뽑아와 날짜별로 csv로 저장하려고한다.

 

현재 데이터는 2.csv에 모든 데이터가 저장되어있으며

 

 

 data = pd.read_csv("2.csv",thousands=',', header=None,converters={'date': lambda x: str(x)})

통해서 데이터를 뽑으면

 

이런식으로 데이터가 뽑힌다.

 

이제 이 데이터에서 date와 time을 이용하여 전날 밤 10시부터 다음날 새벽 5시까지에 데이터를 뽑아올것이다.

 

먼저 to_datetime으로 pandas dateframe으로 만들기 위해 정제부터한다.

 

 data['newdate'] = data['date'] + " " + data['time']

일단 date와 time칼럼이 분리되어있으므로 위 코드를 통해 하나로 합쳐준다 그후

 

아래와 같이 데이터를 to_datetime에 넣은후 dateframe으로 만든다.

data['newbt'] = pd.to_datetime(data['newdate'],format='%Y-%m-%d %H:%M:%S', errors='raise')

 

data안에 있는 date들만 뽑아서 분리한다.

datelist =data['date'].unique()

이제 날짜만 뽑은 datelist를 통해서 for문을 돌려 날짜별과 시간대별로 데이터를 뽑아볼것이다.

 

전날 날짜를 구하기위해 datelist에서 date를 뽑아서 하루를 감산하여 구한다.

  for index,date in enumerate(datelist):

        prevdate = (datetime.datetime.strptime(date,'%Y-%m-%d')-datetime.timedelta(1)).date()

 

print(data[(data['newbt'].dt.date == pd.to_datetime(prevdate))& (data['newbt'].dt.hour >= 22)
| (data['newbt'].dt.date == pd.to_datetime(date)) & (data['newbt'].dt.hour < 5) & (data['newbt'].dt.hour >= 0)])

위코드를 통해 데이터를 뽑아보면

 

원하는 시간을 잘 분리한것을 볼수있다 ~

 

 

아래 코드를 사용하여 분초까지 원하는 데이터를 뽑을수있다는것을 참고하여라!~

df['Birth_date']       = df['Birth'].dt.date         # YYYY-MM-DD(문자)
df['Birth_year']       = df['Birth'].dt.year         # 연(4자리숫자)
df['Birth_month']      = df['Birth'].dt.month        # 월(숫자)
df['Birth_month_name'] = df['Birth'].dt.month_name() # 월(문자)

df['Birth_day']        = df['Birth'].dt.day          # 일(숫자)
df['Birth_time']       = df['Birth'].dt.time         # HH:MM:SS(문자)
df['Birth_hour']       = df['Birth'].dt.hour         # 시(숫자)
df['Birth_minute']     = df['Birth'].dt.minute       # 분(숫자)
df['Birth_second']     = df['Birth'].dt.second       # 초(숫자)

 

728x90
반응형

댓글