๐ตPandas 4. pd.to_datetime()
๐ต ์ฒ์ ์์ํ ๋ธ๋ก๊ทธ์ ๋๋ฌด ์ ์ด ๋์ ๊ทธ๋ฐ์ง ํ๋ฌ ์ ์ฏค ๊ทธ๋ง ํ๋ฆฌ๋์คํฌ๊ฐ ์๊ฒผ๋ค๐คข. ๊ทธ๋์ โ๊พธ์คํโ ๋ผ๋ ๋๋ง์ ๋ชฉํ์ ์์ฌ์์ด ์๊ฒผ์ง๋ง, ๊ทธ๋๋ ๊ทธ ๊ณต๋ฐฑ๊ธฐ ๋์ ๋ด๊ฐ ํ๊ณ ์ถ์ ๊ฒ์ ๋ฌด์์ธ์ง, ์ง๊ธ ๋ค๋๋ ํ๊ต์์ ์ด๋ค ๊ฒ์ ๋ฐฐ์ฐ๊ณ ๊ณต๋ถํด์ผ ํ ์ง ์ด๊ฒ์ ๊ฒ ์๊ฐํด ๋ณธ ๊ฒ ๊ฐ๋ค. ์ด๋ ๊ฒ ํ๋ฒ ์ํ๋ฉด์ ์ข์ ์์ธ๋ ๊ฐ์ง๊ณ , ์ข์ ํด์๊ธฐ๋ ๊ฐ์ง๋ ๊ฒ ๋์ ๊ฒ๋ง์ ์๋ ๊ฑฐ ๊ฐ๋ค๊ณ ์๊ฐํ๋ค.
๐ต ์ด์ ์ดํ ๋ค๋ฉด ๊ฐ๊ฐ์ด๋ค. ๊ตฐ์ ๋ ํ 2๋ ๋ง์ ๊ฐ๊ฐ์ด๋ผ ๊ธฐ๋ ๋ฐ ๋๋ ค์ ๋ฐ์ด์ง๋ง, ๋ด๊ฐ ํ๊ณ ์ถ์ ๋ฐ์ดํฐ ๊ด๋ จ ๋ถ์ผ๋ฅผ ์ ํด๋์ ์ํ๋ผ์ ๊ธฐ๋ ์ชฝ์ด ์กฐ๊ธ ๋ ํฐ ๊ฒ ๊ฐ๋คใ ใ ํ๊ธฐ ์ค์๋ 12์์ฒ๋ผ ๋ง์ ๋ด์ฉ์ ์ฌ๋ฆฌ๊ธฐ์๋ ์๊ฐ์ด ๋น ๋ฏํ ๊ฒ ๊ฐ์ง๋ง (๊ทธ ์ ๋ช ํ ์ฌ๋ง๋ ์ด๋คโฆ) ํ๊ต ๊ณต๋ถ์ ๊ทธ๋์ ํ๋ ๊ณต๋ถ๋ฅผ ์ฌ๋ฆฌ๋ฉด์ ๋ณต์ตํ๋ ์๊ฐ์ ๊ฐ์ง ์๊ฐ์ด๋ค๐. ์ผ์ฃผ์ผ์ ์ธ๊ฐ ์ด์์ ํฌ์คํ ํ๋ ๊ฒ ์ด๋ฒํ๊ธฐ ๋์ ๋ชฉํ๋ท!!
๐ต ์ด๋ฒ ํฌ์คํ ์์๋ ์๊ณ์ด ๋ถ์์์ ๊ธฐ์ด์ ์ผ๋ก ๋ฐ๋์ ์์์ผํ ์๊ฐ ๊ด๋ จ ํจ์ pd.to_datetime( ) ์ ๋ํด์ ์์๋ณด์.
๐ต ์ฒ๋ฆฌ ๊ธฐ์ค์ year - month - day ์ ํํ์ด๋ค.
1. pd.to_datetime( ) ๊ธฐ๋ณธ ๋ชจ์
๐ต pd.to_datetime(series, format, errors)
- ์ฒ์ ๋ค์ด๊ฐ๋ ์ธ์์ธ series ๋ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ๊ณผ์ ์์ datetime ํํ๋ก ๋ฐ๊พธ๋ ค๊ณ ํ๋ ์ด์ ์ ์ธํ๋ค.
- ๋๋ฒ์งธ ์ธ์ format์ datetime์ ์ํ๋ ๋ชจ์์ ์ง์ ํด์ค๋ค.
- %y : ๋ ๋ (2์๋ฆฌ) - 99, 00, 01 โฆ
- %Y : ๋ ๋ (4์๋ฆฌ) - 1999, 2000 โฆ
- %m : ์ - 05, 08 โฆ
- %d : ๋ ์ง (2์๋ฆฌ) - 07, 15, 21 โฆ
- %H : ์๊ฐ (24์๊ฐ) - 15, 18, 23 โฆ
- %I : ์๊ฐ (12์๊ฐ) - 3, 6, 11 โฆ
- %M : ๋ถ (2์๋ฆฌ) - 23, 56 โฆ
-
%S : ์ด (2์๋ฆฌ) - 36, 59 โฆ
- %a : ์์ผ (์งง์ ์ด๋ฆ) - Mon, Tue, Wed โฆ
- %A : ์์ผ (๊ธด ์ด๋ฆ) - Monday, Tuesday, Wendsday โฆ
-
%w : ์์ผ (์ซ์ / 0์ด ์ผ์์ผ, 1์ด ์์์ผ) - 0, 1, 2 โฆ
- %b : ์ (์งง์ ์ด๋ฆ) - Jan, Feb โฆ
- %B : ์ (๊ธด ์ด๋ฆ) - January, Febrary โฆ
- ๋ง์ง๋ง ์ธ์ errors ๋ ์ค๋ฅ๋ฅผ ๋ถ๋ฌ์ผ์ผํฌ์ง ๊ฒฐ์ ํ๋ ์ธ์์ธ๋ฐ, ๋ณดํต errors = โraiseโ ์ ํํ๋ก ๋ถ๋ฌ์ผ์ผํค๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค.
2. month.day ํํ์ ๋ฐ์ดํฐ๊ฐ ์๋ ๊ฒฝ์ฐ
๐ต ์๋ฅผ ๋ค์ด month ์ day๊ฐ โช.โช ์ ํํ๋ก ๋์ด์๋ค๊ณ ๊ฐ์ ํ์. ์ฆ ์๋์ ๊ฐ์ ํํ์ ๋ฐ์ดํฐํ๋ ์์ด ์๋ ๊ฒ์ด๋ค.
>>
m.d col1 col2
2.26 A 1
2.27 B 3
3.05 A 2
์ด๋ฐ ๊ฒฝ์ฐ์๋ df [ m.d ] . str . replace ( โ.โ , โ-โ ) ํํ๋ก ์ง์ ํด์ month-day ๊ฐ์ ๊ผด๋ก ๋ง๋ค์ด์ค๋ค.
๊ทธ ๋ค์ pd . to_datetime ( โ2022-โ + df [ m.d ] , errors ) ๋ฅผ ์ ์ธํด์ฃผ์.
๊ทธ๋ฌ๋ฉด ์ฐ๋ฆฌ๊ฐ ์ํ๋ 2022-02-26 ๊ฐ์ datetime column ์ด ์๊ธธ ๊ฒ์ด๋ค.
๐ต ์ ์ฒด ์ฝ๋๋ ๋ค์๊ณผ ๊ฐ๋ค.
df[m.d] = df[m.d].str.replace(".", "-")
df['date'] = df.to_datetime("2022-" + df[m.d], errors = 'raise')
df
>>
m.d col1 col2 date
2.26 A 1 2022-02-26
2.27 B 3 2022-02-27
3.05 A 2 2022-03-05
3. year, month, day ๊ฐ ๋ชจ๋ ๊ฐ๊ฐ์ column์ธ ๊ฒฝ์ฐ
๐ต ์๋์ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ํด๋ณด์.
>>
year month day
2022 02 26
2022 02 27
2022 03 05
๊ฐ์ฅ ๋จผ์ ํ ์ผ์ ๊ฐ ์ด์ ๋ฐ์ดํฐ๋ค์ด str ์๋ฃํ์ธ์ง ํ์ธํ๋ ๊ฒ์ด๋ค.
๋ฏผ์ฝ ๋๋ฅธ ์ง๋ฃํ์ด๋ฉด df . astype ( โstrโ ) ์ ์ฌ์ฉํด์ ๊ฐ ๋ฐ์ดํฐ๋ค์ str ํํ๋ก ๋ฐ๊ฟ์ฃผ์.
๊ทธ ๋ค์์๋ pd . to _ datetime (df [ โyearโ ] + โ-โ + df [ โmonthโ ] + โ-โ + df [ โdayโ ], errors = โraiseโ ) ๋ฅผ ์ ์ธํด์ฃผ๋ฉด ๋๋ค.
๐ต ์ ์ฒด ์ฝ๋๋ ์๋์ ๊ฐ๋ค.
df = df.astpe('str)
df['date] = df.to_datetime(df['year'] + '-' + df['month'] + '-' + df['day'], errors = 'raise')
df
>>
year month day date
2022 02 26 2022-02-26
2022 02 27 2022-02-27
2022 03 05 2022-03-05
๐ต ๊ฐ์ฅ ์ค์ํ ์ ์ ํฉ์น ๋ฐ์ดํฐ์ ํํ๊ฐ ๋ฐ๋์ str ํํ์ฌ์ผ ํ๋ค๋ ์ ์ด๋ค. ๋๋ถ๋ถ์ ์๊ณ์ด ๋ฐ์ดํฐ๋ค์ int ์๋ฃํ์ผ ๊ฐ๋ฅ์ฑ์ด ๋๊ธฐ ๋๋ฌธ์ . info( ) ํจ์ ๋ฑ์ ์ฌ์ฉํด์ ๋ฏธ๋ฆฌ ๋ณ๊ฒฝํ๋ ๊ฒ์ด ์ข์ ๊ฒ ๊ฐ๋ค. ์ด๋ ๊ฒ ๋ณ๊ฒฝํ ๋ฐ์ดํฐํ๋ ์์ ๋ค๋ฅธ ๋ฐ์ดํฐ๋ค์ ๋น์ฐํ ์์๋ณต๊ตฌ ํด์ฃผ๋ ํธ์ด ์ข๋ค๐. ๋ค์ ์์ ๋จ์ ์ ์ฒ๋ฆฌ ๊ณผ์ ์ ๊ผญ ์๊ฐํด์ฃผ์!!
Leave a comment