chicago_df['Date'].head()
chicago_df['Date'] = pd.to_datetime(chicago_df['Date'], format ='%m/%d/%Y %H:%M:%S %p')
pd.to_datetime()으로 위의 문자열 형식인 Date콜럼을 datetime형식으로 바꿔준다
format은 지금 적혀 있는 숫자들이 월/일/연도 시간:분:초 AM/PM인것을 컴퓨터에게 알려주고
컴퓨터가 알아듣는 방식으로(datetime 형식으로) 바꾸라는 의미다
이렇게 바꿔줌으로써 할 수 있는 것들이 많아진다
chicago_df['Date'].head()
그렇게 해서 바꿔진게 이런 모습이고 이런 모습을 ISO 포맷이라고 하며
국제적으로 널리 사용되는 날짜 및 시간 표현 방법이다
이 밖에도 이러한 형식들이 있지만 아무래도 위의 방식을 보편적으로 사용한다
형식 | 지정자형식 | 예 |
%m/%d/%Y | mm/dd/yyyy | 02/21/2018 |
%m/%d/%y | mm/dd/yy | 02/21/18 |
%d/%m/%Y | dd/mm/yyyy | 21/02/2018 |
%d/%m/%y | dd/mm/yy | 21/02/18 |
%d-%m-%Y | dd-mm-yyyy | 21-02-2018 |
%d-%m-%y | dd-mm-yy | 21-02-18 |
%m-%d-%Y | mm-dd-yyyy | 02-21-2018 |
%m-%d-%y | mm-dd-yy | 02-21-18 |
%Y-%m-%d | yyyy-mm-dd | 2018-02-21 |
%f/%e/%Y | m/d/yyyy | 2/21/2018 |
%f/%e/%y | m/d/yy | 2/21/18 |
%e/%f/%Y | d/m/yyyy | 21/2/2018 |
%e/%f/%y | d/m/yy | 21/2/18 |
%f-%e-%Y | m-d-yyyy | 2-21-2018 |
%f-%e-%y | m-d-yy | 2-21-18 |
%e-%f-%Y | d-m-yyyy | 21-2-2018 |
%e-%f-%y | d-m-yy | 21-2-18 |
%b %e, %Y | Mth d, yyyy | Feb 21, 2018 |
%B %e, %Y | Month d, yyyy | February 21, 2018 |
%b %d, %Y | Mth d, yyyy | Feb 21, 2018 |
%B %d, %Y | Month d, yyyy | February 21, 2018 |
%Y-%m-%d %H:%M:%S | yyyy-mm-dd hh:mm:ss | 2018-02-21 12:00:00 |
%H:%M:%S | hh:mm:ss | 12:00:00 |
%Y-%m-%d %I:%M:%S %p | yyyy-mm-dd HH:MM:SS tt | 2018-10-29 10:02:48 AM |
%Y-%m-%d %I:%M:%S %p | yyyy-mm-dd HH:MM:SS tt | 2018-10-29 07:30:20 PM |
chicago_df.iloc[0,1]
Timestamp('2006-04-02 13:00:00')
그래서 이런 날짜를 가져왔는데 해당 날짜의 요일을 알 수 있을까?
파이썬 표준 라이브러리 datetime의 weekday를 사용하면 알 수 있다
chicago_df.iloc[0,1].weekday()
6
해당 방식은 0부터 월요일이다
암호같이 숫자로 말고 바로 알려주는건 없을까?
chicago_df['day_name'] = chicago_df['Date'].dt.day_name()
chicago_df['day_name'].value_counts()
이번엔 판다스라이브러리의 속성 중 하나인 dt.day_name()를 사용하면
암호처럼 숫자가 아니라 문자로 알려준다
resample( )
각 년도별 몇개의 범죄 데이터를 가지고 있는지 확인하려 한다
이럴때는 resample 함수를 사용 하면 좋다 그리고
resample 함수를 사용하려면 인덱스가 datetime 이어야 한다
chicago_df.set_index('Date', inplace=True)
chicago_df.resample('Y').size()
chicago_df.resample('YS').size()
resample( ) 파라미터 안에 문자열
Y를 넣어주면 좌측처럼 나오게 되고
YS를 넣어주면 우측처럼 나오게 된다
Y는 Year를 뜻하며
S 는 Start를 뜻한다
범죄 발생 건수를 예측하고 싶다
범죄 발생 건수에 대한 콜럼은 없다
그렇다면 해당하는 콜럼부터 만들어야 한다
df_prophet = chicago_df.resample('D').size().to_frame().reset_index().rename(columns = { 'Date' : 'ds', 0 : 'y' } )
resample( )을 이용하여 D Day 날짜별로 리샘플링을 한뒤에
.size( )를 이용하여 각 날짜별로 발생한 데이터의 수를 구하고
to_frame( )을 이용하여 데이터프레임으로 변환시켜준 뒤에
reset_index( )를 이용하여 인덱스로 내려가있던 날짜와 시간을 콜럼으로 다시 올려주고
Prophet는 콜럼의 이름을 ds와 y로 설정해야 하니까
rename(columns = { 'Date': 'ds', 0: 'y' })를 통해서 콜럼의 이름을 ds와 y로 바꿔주자
prophet = Prophet()
prophet.fit(df_prophet)
prophet.make_future_dataframe( periods = 365 )
future = prophet.make_future_dataframe( periods = 365,freq = 'd' )
forecast = prophet.predict(future)
prophet.plot(forecast)
plt.show()
prophet.plot_components(forecast)
plt.show()
'Python > PANDAS' 카테고리의 다른 글
Pandas - 중복된 값들 합산 .pivot_table( ) (0) | 2024.04.11 |
---|---|
Pandas - column 변경 .rename( ) .columns= (0) | 2024.04.11 |
Pandas - 정렬한 Series 를 DataFrame으로 .to_frame( ) (0) | 2024.04.09 |
Pandas - 데이터프레임 내 리스트 포함 .isin( ) (0) | 2024.04.09 |
Pandas - 데이터프레임 함수 적용 .Apply( ) (0) | 2024.04.09 |