ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • pandas를 이용한 원하는 날짜 및 시간데이터 뽑아오기
    데이터분석/pandas 2021. 1. 1. 12:40
    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
    반응형
Designed by Tistory.