■ BusinessDay 클래스의 생성자를 사용해 BusinessDay 객체를 만드는 방법을 보여준다. ▶ main.py
|
import pandas as pd businessDay = pd.offsets.BusinessDay(5) print(businessDay) """ <5 * BusinessDays> """ |
▶ requirements.txt
|
numpy==2.1.2 pandas==2.2.3 python-dateutil==2.9.0.post0 pytz==2024.2 six==1.16.0 tzdata==2024.2 |
※ pip install pandas 명령을 실행했다.
■ DatetimeIndex 클래스에서 + 연산자를 사용해 BusinessDay 객체의 오프셋을 더하는 방법을 보여준다. ▶ main.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
|
import pandas as pd datetimeIndex1 = pd.date_range("2012/03/01 00:00:00", periods = 5, freq = "D") print(datetimeIndex1) """ DatetimeIndex(['2012-03-01', '2012-03-02', '2012-03-03', '2012-03-04', '2012-03-05'], dtype='datetime64[ns]', freq='D') """ print() datetimeIndex2 = datetimeIndex1 + pd.offsets.BusinessDay(5) print(datetimeIndex2) """ DatetimeIndex(['2012-03-08', '2012-03-09', '2012-03-09', '2012-03-09', '2012-03-12'], dtype='datetime64[ns]', freq=None) """ |
▶ requirements.txt
|
numpy==2.1.2 pandas==2.2.3 python-dateutil==2.9.0.post0 pytz==2024.2 six==1.16.0 tzdata==2024.2 |
※ pip install pandas
더 읽기
■ Series 클래스의 tz_convert 메소드를 사용해 시계열을 특정 시간대로 변환하는 방법을 보여준다. ▶ main.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
|
import pandas as pd import numpy as np datetimeIndex = pd.date_range("2012/03/01 00:00:00", periods = 5, freq = "3D") series1 = pd.Series(np.random.randn(len(datetimeIndex)), datetimeIndex) print(series1) """ 2012-03-01 -1.639957 2012-03-04 0.449630 2012-03-07 -1.289113 2012-03-10 -0.215940 2012-03-13 0.419875 Freq: 3D, dtype: float64 """ print() series2 = series1.tz_localize("UTC") print(series2) """ 2012-03-01 00:00:00+00:00 -1.639957 2012-03-04 00:00:00+00:00 0.449630 2012-03-07 00:00:00+00:00 -1.289113 2012-03-10 00:00:00+00:00 -0.215940 2012-03-13 00:00:00+00:00 0.419875 Freq: 3D, dtype: float64 """ print() series3 = series2.tz_convert("US/Eastern") print(series3) """ 2012-02-29 19:00:00-05:00 -1.639957 2012-03-03 19:00:00-05:00 0.449630 2012-03-06 19:00:00-05:00 -1.289113 2012-03-09 19:00:00-05:00 -0.215940 2012-03-12 20:00:00-04:00 0.419875 Freq: 3D, dtype: float64 """ |
▶ requirements.txt
|
numpy==2.1.2 pandas==2.2.3 python-dateutil==2.9.0.post0 pytz==2024.2 six==1.16.0 tzdata==2024.2 |
※ pip install pandas
더 읽기
■ Series 클래스의 tz_localize 메소드를 사용해 시계열을 특정 시간대로 설정하는 방법을 보여준다. ▶ main.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
|
import pandas as pd import numpy as np datetimeIndex = pd.date_range("2012/03/01 00:00:00", periods = 5, freq = "3D") series1 = pd.Series(np.random.randn(len(datetimeIndex)), datetimeIndex) print(series1) """ 2012-03-01 -1.639957 2012-03-04 0.449630 2012-03-07 -1.289113 2012-03-10 -0.215940 2012-03-13 0.419875 Freq: 3D, dtype: float64 """ print() series2 = series1.tz_localize("UTC") print(series2) """ 2012-03-01 00:00:00+00:00 -1.639957 2012-03-04 00:00:00+00:00 0.449630 2012-03-07 00:00:00+00:00 -1.289113 2012-03-10 00:00:00+00:00 -0.215940 2012-03-13 00:00:00+00:00 0.419875 Freq: 3D, dtype: float64 """ |
▶ requirements.txt
|
numpy==2.1.2 pandas==2.2.3 python-dateutil==2.9.0.post0 pytz==2024.2 six==1.16.0 tzdata==2024.2 |
※ pip install pandas
더 읽기
■ DatetimeIndexResampler 클래스의 sum 메소드를 사용해 시계열 특정 구간의 합계값을 구하는 방법을 보여준다. ▶ main.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
|
import pandas as pd import numpy as np datetimeIndex = pd.date_range("2012-01-01", periods = 100, freq = "s") series1 = pd.Series(np.random.randint(0, 500, len(datetimeIndex)), index = datetimeIndex) print(series1) """ 2012-01-01 00:00:00 470 2012-01-01 00:00:01 312 2012-01-01 00:00:02 54 2012-01-01 00:00:03 263 2012-01-01 00:00:04 214 ... 2012-01-01 00:01:35 432 2012-01-01 00:01:36 297 2012-01-01 00:01:37 2 2012-01-01 00:01:38 156 2012-01-01 00:01:39 176 Freq: s, Length: 100, dtype: int32 """ print() datetimeIndexResampler = series1.resample("5Min") series2 = datetimeIndexResampler.sum() print(series2) """ 2012-01-01 23670 Freq: 5min, dtype: int32 """ |
※ DatetimeIndexResampler 클래스에는 max 메소드 외에
더 읽기
■ date_range 함수의 periods 인자를 사용해 DatetimeIndex 객체를 만드는 방법을 보여준다. ▶ main.py
|
import pandas as pd datetimeIndex = pd.date_range("20130101", periods = 6) print(datetimeIndex) """ DatetimeIndex(['2013-01-01', '2013-01-02', '2013-01-03', '2013-01-04', '2013-01-05', '2013-01-06'], dtype='datetime64[ns]', freq='D') """ |
▶ requirements.txt
|
numpy==2.1.2 pandas==2.2.3 python-dateutil==2.9.0.post0 pytz==2024.2 six==1.16.0 tzdata==2024.2 |
※ pip install pandas 명령을
더 읽기
■ DatetimeProperties 클래스의 to_period 메소드를 사용해 DataFrame 객체에서 두 날짜 컬럼 값 사이의 월 수를 갖는 신규 컬럼을 추가하는 방법을 보여준다. ▶
더 읽기
■ MonthBegin 클래스를 사용해 DataFrame 객체에서 날짜 컬럼의 값을 기준으로 다음 달 시작일을 갖는 신규 컬럼을 추가하는 방법을 보여준다. ▶ main.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
|
import pandas as pd dataFrame = pd.read_excel("tips.xlsx", index_col = 0) dataFrame["date1"] = pd.Timestamp("2013-01-15") dataFrame["date1_next" ] = dataFrame["date1"] + pd.offsets.MonthBegin() print(dataFrame) """ total_bill tip sex smoker day time size date1 date1_next 0 16.99 1.01 Female No Sun Dinner 2 2013-01-15 2013-02-01 1 10.34 1.66 Male No Sun Dinner 3 2013-01-15 2013-02-01 2 21.01 3.50 Male No Sun Dinner 3 2013-01-15 2013-02-01 3 23.68 3.31 Male No Sun Dinner 2 2013-01-15 2013-02-01 4 24.59 3.61 Female No Sun Dinner 4 2013-01-15 2013-02-01 .. ... ... ... ... ... ... ... ... ... 239 29.03 5.92 Male No Sat Dinner 3 2013-01-15 2013-02-01 240 27.18 2.00 Female Yes Sat Dinner 2 2013-01-15 2013-02-01 241 22.67 2.00 Male Yes Sat Dinner 2 2013-01-15 2013-02-01 242 17.82 1.75 Male No Sat Dinner 2 2013-01-15 2013-02-01 243 18.78 3.00 Female No Thur Dinner 2 2013-01-15 2013-02-01 [244 rows x 9 columns] """ |
더 읽기
■ DatetimeProperties 클래스의 year/month/day 속성을 사용해 DataFrame 객체 컬럼의 값을 설정하는 방법을 보여준다. ▶ main.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
|
import pandas as pd dataFrame = pd.read_excel("tips.xlsx", index_col = 0) dataFrame["date1"] = pd.Timestamp("2013-01-15") datetimeProperties = dataFrame["date1"].dt dataFrame["date1_year" ] = datetimeProperties.year dataFrame["date1_month"] = datetimeProperties.month dataFrame["date1_day" ] = datetimeProperties.day print(dataFrame) """ total_bill tip sex smoker day time size date1 date1_year date1_month date1_day 0 16.99 1.01 Female No Sun Dinner 2 2013-01-15 2013 1 15 1 10.34 1.66 Male No Sun Dinner 3 2013-01-15 2013 1 15 2 21.01 3.50 Male No Sun Dinner 3 2013-01-15 2013 1 15 3 23.68 3.31 Male No Sun Dinner 2 2013-01-15 2013 1 15 4 24.59 3.61 Female No Sun Dinner 4 2013-01-15 2013 1 15 .. ... ... ... ... ... ... ... ... ... ... ... 239 29.03 5.92 Male No Sat Dinner 3 2013-01-15 2013 1 15 240 27.18 2.00 Female Yes Sat Dinner 2 2013-01-15 2013 1 15 241 22.67 2.00 Male Yes Sat Dinner 2 2013-01-15 2013 1 15 242 17.82 1.75 Male No Sat Dinner 2 2013-01-15 2013 1 15 243 18.78 3.00 Female No Thur Dinner 2 2013-01-15 2013 1 15 [244 rows x 11 columns] """ |
▶ requirements.txt
|
defusedxml==0.7.1 et_xmlfile==2.0.0 numpy==2.1.3 odfpy==1.4.1 openpyxl==3.1.5 pandas==2.2.3 python-calamine==0.2.3 python-dateutil==2.9.0.post0 pytz==2024.2 pyxlsb==1.0.10 six==1.16.0 tzdata==2024.2 xlrd==2.0.1 XlsxWriter==3.2.0 |
※ pip install
더 읽기
■ Timestamp 클래스의 생성자를 사용해 Timestamp 객체를 만드는 방법을 보여준다. ▶ main.py
|
import pandas as pd timestamp = pd.Timestamp("2013-01-15") print(timestamp) """ 2013-01-15 00:00:00 """ |
▶ requirements.txt
|
numpy==2.1.2 pandas==2.2.3 python-dateutil==2.9.0.post0 pytz==2024.2 six==1.16.0 tzdata==2024.2 |
※ pip install pandas 명령을 실행했다.
■ DataFrame 클래스의 pivot/plot 메소드를 사용해 장소별 일별 LINE 차트를 그리는 방법을 보여준다. ▶ main.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
import pandas as pd import matplotlib.pyplot as plt sourceDataFrame = pd.read_csv("air_quality_no2_long.csv", parse_dates = ["date.utc"]) renameDataFrame = sourceDataFrame.rename(columns = {"date.utc" : "datetime"}) pivotDataFrame = renameDataFrame.pivot(index = "datetime", columns = "location", values = "value") datetimeIndexResampler = pivotDataFrame.resample("D") targetDataFrame = datetimeIndexResampler.mean() targetDataFrame.plot(style = "-o", figsize = (10, 5)) plt.show() |
▶ requirements.txt
|
contourpy==1.3.0 cycler==0.12.1 fonttools==4.54.1 kiwisolver==1.4.7 matplotlib==3.9.2 numpy==2.1.2 packaging==24.1 pandas==2.2.3 pillow==11.0.0 pyparsing==3.2.0 python-dateutil==2.9.0.post0 pytz==2024.2 six==1.16.0 tzdata==2024.2 |
※ pip install
더 읽기
■ DataFrame 클래스의 index 속성에서 DatetimeIndex 객체를 구하는 방법을 보여준다. ▶ main.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
import pandas as pd sourceDataFrame = pd.read_csv("air_quality_no2_long.csv", parse_dates = ["date.utc"]) renameDataFrame = sourceDataFrame.rename(columns = {"date.utc" : "datetime"}) pivotDataFrame = renameDataFrame.pivot(index = "datetime", columns = "location", values = "value") datetimeIndexResampler = pivotDataFrame.resample("ME") targetDataFrame = datetimeIndexResampler.max() datetimeIndex = targetDataFrame.index print(datetimeIndex.freq) """ <MonthEnd> """ |
▶ requirements.txt
|
numpy==2.1.2 pandas==2.2.3 python-dateutil==2.9.0.post0 pytz==2024.2 six==1.16.0 tzdata==2024.2 |
※ pip install pandas 명령을 실행했다.
더 읽기
■ DatetimeIndexResampler 클래스의 max 메소드를 사용해 시계열 특정 구간의 최대값을 구하는 방법을 보여준다. ▶ main.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
import pandas as pd sourceDataFrame = pd.read_csv("air_quality_no2_long.csv", parse_dates = ["date.utc"]) renameDataFrame = sourceDataFrame.rename(columns = {"date.utc" : "datetime"}) pivotDataFrame = renameDataFrame.pivot(index = "datetime", columns = "location", values = "value") datetimeIndexResampler = pivotDataFrame.resample("ME") targetDataFrame = datetimeIndexResampler.max() print(targetDataFrame) """ location BETR801 FR04014 London Westminster datetime 2019-05-31 00:00:00+00:00 74.5 97.0 97.0 2019-06-30 00:00:00+00:00 52.5 84.7 52.0 """ |
※ DatetimeIndexResampler 클래스에는 max 메소드 외에
더 읽기
■ read_csv 함수의 parse_dates 인자를 사용해 특정 컬럼을 날짜 타입으로 로드하는 방법을 보여준다. ▶ main.py
|
import pandas as pd airQualityNO2DataFrame = pd.read_csv("air_quality_no2_long.csv", parse_dates = ["date.utc"]) renameAirQualityNO2DataFrame = airQualityNO2DataFrame.rename(columns = {"date.utc" : "datetime"}) print(renameAirQualityNO2DataFrame["datetime"].dtype) # datetime64[ns, UTC] |
▶ requirements.txt
|
numpy==2.1.2 pandas==2.2.3 python-dateutil==2.9.0.post0 pytz==2024.2 six==1.16.0 tzdata==2024.2 |
※ pip install
더 읽기
■ to_datetime 함수를 사용해 DataFrame 객체의 특정 컬럼을 날짜 타입으로 변경하는 방법을 보여준다. ▶ main.py
|
import pandas as pd airQualityNO2DataFrame = pd.read_csv("air_quality_no2_long.csv") renameAirQualityNO2DataFrame = airQualityNO2DataFrame.rename(columns = {"date.utc" : "datetime"}) print(renameAirQualityNO2DataFrame["datetime"].dtype) # object renameAirQualityNO2DataFrame["datetime"] = pd.to_datetime(renameAirQualityNO2DataFrame["datetime"]) print(renameAirQualityNO2DataFrame["datetime"].dtype) # datetime64[ns, UTC] |
▶ requirements.txt
|
numpy==2.1.2 pandas==2.2.3 python-dateutil==2.9.0.post0 pytz==2024.2 six==1.16.0 tzdata==2024.2 |
※ pip install
더 읽기
■ to_datetime 함수를 사용해 DataFrame 객체에서 특정 컬럼의 날짜 포맷을 변경하는 방법을 보여준다. ▶ main.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
|
import pandas as pd dataFrame = pd.read_csv("https://s3-us-west-2.amazonaws.com/streamlit-demo-data/uber-raw-data-sep14.csv.gz", nrows = 1000) print("[변경전]") print(dataFrame) print() dataTimeSeries1 = dataFrame["date/time"] dataTimeSeries2 = pd.to_datetime(dataTimeSeries1) print("[변경후]") print(dataFrame) print() """ [변경전] Date/Time Lat Lon Base 0 9/1/2014 0:01:00 40.2201 -74.0021 B02512 1 9/1/2014 0:01:00 40.7500 -74.0027 B02512 2 9/1/2014 0:03:00 40.7559 -73.9864 B02512 3 9/1/2014 0:06:00 40.7450 -73.9889 B02512 4 9/1/2014 0:11:00 40.8145 -73.9444 B02512 .. ... ... ... ... 995 9/2/2014 11:11:00 40.7381 -73.9878 B02512 996 9/2/2014 11:14:00 40.7848 -73.9560 B02512 997 9/2/2014 11:14:00 40.7848 -73.9560 B02512 998 9/2/2014 11:17:00 40.7741 -73.9608 B02512 999 9/2/2014 11:18:00 40.7410 -73.7579 B02512 [1000 rows x 4 columns] [변경후] Date/Time Lat Lon Base 0 2014-09-01 00:01:00 40.2201 -74.0021 B02512 1 2014-09-01 00:01:00 40.7500 -74.0027 B02512 2 2014-09-01 00:03:00 40.7559 -73.9864 B02512 3 2014-09-01 00:06:00 40.7450 -73.9889 B02512 4 2014-09-01 00:11:00 40.8145 -73.9444 B02512 .. ... ... ... ... 995 2014-09-02 11:11:00 40.7381 -73.9878 B02512 996 2014-09-02 11:14:00 40.7848 -73.9560 B02512 997 2014-09-02 11:14:00 40.7848 -73.9560 B02512 998 2014-09-02 11:17:00 40.7741 -73.9608 B02512 999 2014-09-02 11:18:00 40.7410 -73.7579 B02512 [1000 rows x 4 columns] """ |
▶ requirements.txt
|
numpy==2.0.0 pandas==2.2.2 python-dateutil==2.9.0.post0 pytz==2024.1 six==1.16.0 tzdata==2024.1 |
※ pip install
더 읽기
■ perf_counter 함수를 사용해 경과 시간을 구하는 방법을 보여준다. ▶ 예제 코드 (PY)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
import time startTimestamp = time.perf_counter() for _ in range(100): print(time.time()) time.sleep(0.01) elapsedTime = time.perf_counter() - startTimestamp print(f"{elapsedTime:0.2f} 초") """ 1.01 초 """ |
■ korean_lunar_calendar 패키지를 설치하는 방법을 보여준다. 1. 명령 프롬프트를 실행한다. 2. 명령 프롬프트에서 아래 명령을 실행한다. ▶ 실행 명령
|
pip install korean_lunar_calendar |
■ datetime 클래스의 fromtimestamp 메소드를 사용해 struct_time 객체에서 datetime 객체를 구하는 방법을 보여준다. ▶ 예제 코드 (PY)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
|
import time from datetime import datetime sourceDatetime = datetime.now() sourceStructTime = sourceDatetime.timetuple() sourceTimestamp = time.mktime(sourceStructTime) targetDatetime = datetime.fromtimestamp(sourceTimestamp) print(sourceDatetime ) print(sourceStructTime) print(targetDatetime ) """ 2024-06-17 21:00:11.827053 time.struct_time(tm_year=2024, tm_mon=6, tm_mday=17, tm_hour=21, tm_min=0, tm_sec=11, tm_wday=0, tm_yday=169, tm_isdst=-1) 2024-06-17 21:00:11 """ |
■ datetime 클래스의timetuple 메소드를 사용해 datetime 객체에서 struct_time 객체를 구하는 방법을 보여준다. ▶ 예제 코드 (PY)
|
from datetime import datetime sourceDatetime = datetime.now() targetStructTime = sourceDatetime.timetuple() print(sourceDatetime ) print(targetStructTime) """ 2024-06-17 20:58:43.007811 time.struct_time(tm_year=2024, tm_mon=6, tm_mday=17, tm_hour=20, tm_min=58, tm_sec=43, tm_wday=0, tm_yday=169, tm_isdst=-1) """ |
■ dateTime 클래스의 astimezone 메소드를 사용해 표준 시간(UTC)의 datetime 객체에서 지역 시간의 datetime 객체를 구하는 방법을 보여준다. ▶ 예제 코드 (PY)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
from datetime import datetime, timezone, timedelta utcDateTime = datetime.now(timezone.utc) localTimezone = timezone(timedelta(hours = 9)) localDatetime = utcDateTime.astimezone(localTimezone) print(utcDateTime) print(localDatetime) """ UTC+09:00 2024-06-17 11:43:04.892108+00:00 2024-06-17 20:43:04.892108+09:00 """ |
■ timezone 클래스를 사용해 지역 시간대의 timezone 객체를 구하는 방법을 보여준다. ▶ 예제 코드 (PY)
|
from datetime import timezone, timedelta localTimezone = timezone(timedelta(hours = 9)) print(localTimezone) """ UTC+09:00 """ |
■ datetime 클래스의 now 함수를 사용해 표준 시간(UTC)의 datetime 객체를 구하는 방법을 보여준다. ▶ 예제 코드 (PY)
|
from datetime import datetime, timezone utcDateTime = datetime.now(timezone.utc) print(utcDateTime) """ 2024-06-17 11:43:04.892108+00:00 """ |
■ timezone 함수를 사용해 표준 시간(UTC)의 datetime 객체에서 지역 시간의 datetime 객체를 구하는 방법을 보여준다. ▶ main.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
import datetime import pytz localDatetime1 = datetime.datetime.now() utcDateTime = localDatetime1.astimezone(pytz.utc) localDatetime2 = utcDateTime.astimezone(pytz.timezone('Asia/Seoul')) print(localDatetime1) print(utcDateTime ) print(localDatetime2) """ 2024-06-17 20:36:51.328902 2024-06-17 11:36:51.328902+00:00 2024-06-17 20:36:51.328902+09:00 """ |
▶ requirements.txt
※
더 읽기
■ utc 변수를 사용해 지역 시간의 datetime 객체에서 표준 시간의 datetime 객체를 구하는 방법을 보여준다. ▶ main.py
|
import datetime import pytz localDatetime = datetime.datetime.now() utcDateTime = localDatetime.astimezone(pytz.utc) print(utcDateTime) """ 2024-06-17 11:20:02.979143+00:00 """ |
▶ requirements.txt
※
더 읽기