-
pandas를 이용한 원하는 날짜 및 시간데이터 뽑아오기데이터분석/pandas 2021. 1. 1. 12:40728x90반응형
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반응형