반응형

“10 minutes to pandas” 문서를 따라해보며 작성했습니다. 

https://pandas.pydata.org/pandas-docs/stable/user_guide/10min.html



2022. 02. 02  최초작성

2022. 3. 20

 

샘플링

 

특정 주기로 샘플링된 데이터를 원하는 주기로 리샘플링을 할 수 있습니다.

 

import numpy as np
import pandas as pd


# 2022년 1월 1일 0시 0분 0초부터 1초 간격으로 20개를 생성합니다.
rng = pd.date_range("1/1/2022", periods=20, freq="S")
print(rng)
print('\n\n')


# 앞에서 생성한 시간정보를 인덱스로 하여 0 ~ 10 사이의 숫자를 20개 생성합니다.
ts = pd.Series(np.random.randint(0, 10, len(rng)), index=rng)
print(ts)
print('\n\n')


# sum 메소드를 사용하여 2초 간격으로 리샘플링합니다. 예를 들어 0초, 1초 값을 더해서 0초의 값으로, 2초, 3초 값을 더해서 2초의 값으로 ... 사용합니다.
ts_new = ts.resample("2s").sum()
print(ts_new)
print('\n\n')


# first 메소드를 사용하여 2초 간격으로 리샘플링합니다. 예를 들어 0초, 1초 중 0초의 값을 사용하고,  2초, 3초 값 중 2초의 값을 사용하고 ... 사용합니다.
ts_new = ts.resample("2s").first()
print(ts_new)



실행 결과

DatetimeIndex(['2022-01-01 00:00:00', '2022-01-01 00:00:01',
               '2022-01-01 00:00:02', '2022-01-01 00:00:03',
               '2022-01-01 00:00:04', '2022-01-01 00:00:05',
               '2022-01-01 00:00:06', '2022-01-01 00:00:07',
               '2022-01-01 00:00:08', '2022-01-01 00:00:09',
               '2022-01-01 00:00:10', '2022-01-01 00:00:11',
               '2022-01-01 00:00:12', '2022-01-01 00:00:13',
               '2022-01-01 00:00:14', '2022-01-01 00:00:15',
               '2022-01-01 00:00:16', '2022-01-01 00:00:17',
               '2022-01-01 00:00:18', '2022-01-01 00:00:19'],
              dtype='datetime64[ns]', freq='S')



2022-01-01 00:00:00    5
2022-01-01 00:00:01    5
2022-01-01 00:00:02    8
2022-01-01 00:00:03    6
2022-01-01 00:00:04    2
2022-01-01 00:00:05    2
2022-01-01 00:00:06    7
2022-01-01 00:00:07    8
2022-01-01 00:00:08    6
2022-01-01 00:00:09    7
2022-01-01 00:00:10    0
2022-01-01 00:00:11    0
2022-01-01 00:00:12    3
2022-01-01 00:00:13    4
2022-01-01 00:00:14    1
2022-01-01 00:00:15    5
2022-01-01 00:00:16    1
2022-01-01 00:00:17    1
2022-01-01 00:00:18    7
2022-01-01 00:00:19    8
Freq: S, dtype: int64



2022-01-01 00:00:00    10
2022-01-01 00:00:02    14
2022-01-01 00:00:04     4
2022-01-01 00:00:06    15
2022-01-01 00:00:08    13
2022-01-01 00:00:10     0
2022-01-01 00:00:12     7
2022-01-01 00:00:14     6
2022-01-01 00:00:16     2
2022-01-01 00:00:18    15
Freq: 2S, dtype: int64



2022-01-01 00:00:00    5
2022-01-01 00:00:02    8
2022-01-01 00:00:04    2
2022-01-01 00:00:06    7
2022-01-01 00:00:08    6
2022-01-01 00:00:10    0
2022-01-01 00:00:12    3
2022-01-01 00:00:14    1
2022-01-01 00:00:16    1
2022-01-01 00:00:18    7
Freq: 2S, dtype: int64


 

시간대(Time zone)

import numpy as np
import pandas as pd


# 2022년 1월 1일 0시 0분 부터 일 간격으로 5개를 생성합니다.
rng = pd.date_range("1/1/2022 02:00", periods=5, freq="D")
print(rng)
print()

# 앞에서 생성한 시간정보를 인덱스로 하여 무작위 숫자를 5개 생성합니다.
ts = pd.Series(np.random.randn(len(rng)), rng)
print(ts)
print()

# UTC 시간대로 설정합니다.
ts_utc = ts.tz_localize("UTC")
print(ts_utc)
print()

# 다른 시간대로 변경합니다.
# 11:00:00은 서울 시간대로 11시라는 의미이며
# +09:00은 서울 시간대는 UTC 시간 + 9라는 의미입니다.
print(ts_utc.tz_convert('Asia/Seoul'))




시간 범위 표현 간 변환

import numpy as np
import pandas as pd


# 2022년 1월 1일부터 한달 단위로 5개의 날짜를 생성합니다.
rng = pd.date_range("1/1/2022", periods=5, freq="M")
print(rng)
print()


# 앞에서 생성한 시간정보를 인덱스로 하여 숫자 5개를 생성합니다.
ts = pd.Series(np.arange(len(rng)), index=rng)
print(ts)
print()


# 날짜를 한달 간격으로 변경합니다.
ps = ts.to_period(freq='M')
print(ps)
print()


# 날짜를 매달의 첫날로 변경합니다.
print(ps.to_timestamp())

 




Pandas 강좌 1 - Pandas 객체 생성

https://webnautes.tistory.com/1957

 

Pandas 강좌 2 - 데이터 보는 방법

https://webnautes.tistory.com/1958

 

Pandas 강좌 3 - 데이터 선택하는 방법

https://webnautes.tistory.com/1959

 

Pandas 강좌 4 - 연산(Operations)

https://webnautes.tistory.com/1960

 

Pandas 강좌 5 - 연결 및 그룹핑

https://webnautes.tistory.com/1961

 

Pandas 강좌 6 - 시계열(Time series)

https://webnautes.tistory.com/1962

 

Pandas 강좌 7 - 그래프 그리기(Plotting)

https://webnautes.tistory.com/1963

 

Pandas 강좌 8 - Pandas에서 CSV, HDF5, Excel로 저장 및 읽기

https://webnautes.tistory.com/1964

 

Pandas 강좌 9 - 결측치(Missing data)

https://webnautes.tistory.com/1965




반응형

문제 발생시 지나치지 마시고 댓글 남겨주시면 가능한 빨리 답장드립니다.

도움이 되셨다면 토스아이디로 후원해주세요.
https://toss.me/momo2024


제가 쓴 책도 한번 검토해보세요 ^^

+ Recent posts