[Pandas] Series ⑤ 함수

Hunie_07·2026년 3월 4일

Pandas

목록 보기
5/12
post-thumbnail

📌 Series 관련 함수

Series size, shape, unique, count, value_counts 함수

  • size : 시리즈 원소 개수 반환
  • shape : 튜플형태로 shape 반환
  • unique() : 유일한 값만 ndarray로 반환
  • count() : NaN을 제외한 개수를 반환
  • mean() : NaN을 제외한 평균
  • value_counts() : NaN을 제외하고 각 값들의 빈도를 반환

예시 시리즈

s = pd.Series([1,2,1,1,2,3,1,1,3,5,2,4,2,3,5, np.nan,5,3,2,1,4,2])
s

- 출력

0     1.0
1     2.0
2     1.0
3     1.0
4     2.0
5     3.0
6     1.0
7     1.0
8     3.0
9     5.0
10    2.0
11    4.0
12    2.0
13    3.0
14    5.0
15    NaN
16    5.0
17    3.0
18    2.0
19    1.0
20    4.0
21    2.0
dtype: float64

1️⃣ size, shape

  • 시리즈의 크기

size

s.size

- 출력

22

shape

s.shape

- 출력

(22,)

2️⃣ unique()

  • 시리즈의 유일한 값 반환 (중복 값 제외)
s.unique()

- 출력

array([ 1.,  2.,  3.,  5.,  4., nan])

3️⃣ count()

  • NaN 을 제외한 개수를 반환
s.count()

- 출력

np.int64(21)

4️⃣ mean()

  • 데이터의 평균값 (자동으로 NaN 값 제외)
s.mean()

- 출력

np.float64(2.5238095238095237)
  • .values 를 활용하여 mean() 을 사용하면 NaN 값이 포함되어 결과값이 NaN 이 된다.
  • 이 때, np.nanmean() 을 사용하면 NaN 값을 제외하고 계산한다.
s.values.mean()

- 출력

np.float64(nan)

5️⃣ value_counts()

  • 그룹화된 원소별 개수
s.value_counts()

- 출력

1.0    6
2.0    6
3.0    4
5.0    3
4.0    2
Name: count, dtype: int64

6️⃣ 날짜 인덱스 생성

  • 판다스 패키지의 date_range 함수 (날짜생성)
  • pd.date_range(start=None, end=None, periods=None, freq='D')
    • start : 시작날짜
    • end : 끝날짜
    • periods : 날짜 생성기간
    • freq : 날짜 생성 주기, 기본값은 'D' (Day)
    • start 는 필수 옵션 / endperiods 는 둘 중 하나가 있어야 함

freq 옵션 종류


1) 일 간격 날짜 생성

  • freq 미지정시 기본값이 D 하루 주기다.
# 1
pd.date_range(start='2024-12-07', end='2024-12-31')
# 2
pd.date_range(start='2024-12-07', end='2024-12-31', freq='D')

- 출력

DatetimeIndex(['2024-12-07', '2024-12-08', '2024-12-09', '2024-12-10',
               '2024-12-11', '2024-12-12', '2024-12-13', '2024-12-14',
               '2024-12-15', '2024-12-16', '2024-12-17', '2024-12-18',
               '2024-12-19', '2024-12-20', '2024-12-21', '2024-12-22',
               '2024-12-23', '2024-12-24', '2024-12-25', '2024-12-26',
               '2024-12-27', '2024-12-28', '2024-12-29', '2024-12-30',
               '2024-12-31'],
              dtype='datetime64[us]', freq='D')

2) 주 간격 날짜 생성

  • 지정한 일자가 포함된 주의 요일 시작 일자 기준으로 일주일 주기로 생성
  • freq='W' : 일요일 기준으로 일주일 주기로 생성
  • freq='W-MON' : 월요일 기준으로 일주일 주기로 생성

freq='W'

  • 2025년 12월 7일은 일요일으로, 일요일 기준 2025-12-07 부터 출력된다.
pd.date_range(start='2025-12-07', end='2025-12-31', freq='W')

- 출력

DatetimeIndex(['2025-12-07', '2025-12-14', '2025-12-21', '2025-12-28'],
					dtype='datetime64[us]', freq='W-SUN')

freq='W-SUN'

pd.date_range(start='2025-12-07', end='2025-12-31', freq='W-MON')

- 출력

DatetimeIndex(['2025-12-08', '2025-12-15', '2025-12-22', '2025-12-29'],
					dtype='datetime64[us]', freq='W-MON')

3) 월 간격 날짜 생성

  • freq='ME' : 월말 날짜 기준 주기
  • freq='MS' : 월초 날짜 기준 주기
  • freq='BME' : 업무 월말 날짜 기준 주기
  • freq='BMS' : 업무 월초 날짜 기준 주기

freq='ME'

pd.date_range(start='2023-12-08', end='2025-12-31', freq='ME')

- 출력

DatetimeIndex(['2023-12-31', '2024-01-31', '2024-02-29', '2024-03-31',
               '2024-04-30', '2024-05-31', '2024-06-30', '2024-07-31',
               '2024-08-31', '2024-09-30', '2024-10-31', '2024-11-30',
               '2024-12-31', '2025-01-31', '2025-02-28', '2025-03-31',
               '2025-04-30', '2025-05-31', '2025-06-30', '2025-07-31',
               '2025-08-31', '2025-09-30', '2025-10-31', '2025-11-30',
               '2025-12-31'],
              dtype='datetime64[us]', freq='ME')

freq='MS'

  • 월초 기준으로 다음 달부터 출력되는 모습이다.
pd.date_range(start='2023-12-08', end='2025-12-31', freq='MS')

- 출력

DatetimeIndex(['2024-01-01', '2024-02-01', '2024-03-01', '2024-04-01',
               '2024-05-01', '2024-06-01', '2024-07-01', '2024-08-01',
               '2024-09-01', '2024-10-01', '2024-11-01', '2024-12-01',
               '2025-01-01', '2025-02-01', '2025-03-01', '2025-04-01',
               '2025-05-01', '2025-06-01', '2025-07-01', '2025-08-01',
               '2025-09-01', '2025-10-01', '2025-11-01', '2025-12-01'],
              dtype='datetime64[us]', freq='MS')

freq='BME'

  • 주말 등을 제외하고 업무 날짜 기준 월말부터 출력한다.
pd.date_range(start='2023-12-08', end='2025-12-31', freq='BME')

- 출력

DatetimeIndex(['2023-12-29', '2024-01-31', '2024-02-29', '2024-03-29',
               '2024-04-30', '2024-05-31', '2024-06-28', '2024-07-31',
               '2024-08-30', '2024-09-30', '2024-10-31', '2024-11-29',
               '2024-12-31', '2025-01-31', '2025-02-28', '2025-03-31',
               '2025-04-30', '2025-05-30', '2025-06-30', '2025-07-31',
               '2025-08-29', '2025-09-30', '2025-10-31', '2025-11-28',
               '2025-12-31'],
              dtype='datetime64[us]', freq='BME')

freq='BMS'

pd.date_range(start='2023-12-08', end='2025-12-31', freq='BMS')

- 출력

DatetimeIndex(['2024-01-01', '2024-02-01', '2024-03-01', '2024-04-01',
               '2024-05-01', '2024-06-03', '2024-07-01', '2024-08-01',
               '2024-09-02', '2024-10-01', '2024-11-01', '2024-12-02',
               '2025-01-01', '2025-02-03', '2025-03-03', '2025-04-01',
               '2025-05-01', '2025-06-02', '2025-07-01', '2025-08-01',
               '2025-09-01', '2025-10-01', '2025-11-03', '2025-12-01'],
              dtype='datetime64[us]', freq='BMS')

4) 분기 주기 날짜 생성

  • freq='QE' : 분기 끝 날짜 기준 주기
  • freq='QS' : 분기 시작 날짜 기준 주기
  • freq='BQE' : 업무 분기 끝 날짜 기준 주기
  • freq='BQS' : 업무 분기 시작 날짜 기준 주기

freq='QE'

pd.date_range(start='2023-12-08', end='2025-12-31', freq='QE')

- 출력

DatetimeIndex(['2023-12-31', '2024-03-31', '2024-06-30', '2024-09-30',
               '2024-12-31', '2025-03-31', '2025-06-30', '2025-09-30',
               '2025-12-31'],
              dtype='datetime64[us]', freq='QE-DEC')

freq='QS'

pd.date_range(start='2023-12-08', end='2025-12-31', freq='QS')

- 출력

DatetimeIndex(['2024-01-01', '2024-04-01', '2024-07-01', '2024-10-01',
               '2025-01-01', '2025-04-01', '2025-07-01', '2025-10-01'],
              dtype='datetime64[us]', freq='QS-JAN')

5) 연 주기 날짜 생성

  • freq='YE' : 일년 끝 날짜 기준 주기
  • freq='YS' : 일년 시작 날짜 기준 주기
  • freq='BYE' : 업무 일년 끝 날짜 기준 주기
  • freq='BYS' : 업무 일년 시작 날짜 기준 주기

freq='YE'

pd.date_range(start='2023-12-08', end='2025-12-31', freq='YE')

- 출력

DatetimeIndex(['2023-12-31', '2024-12-31', '2025-12-31'], 
					dtype='datetime64[us]', freq='YE-DEC')

freq='YS'

pd.date_range(start='2023-12-08', end='2025-12-31', freq='YS')

- 출력

DatetimeIndex(['2024-01-01', '2025-01-01'], dtype='datetime64[us]', freq='YS-JAN')

6) 시간 주기 날짜 생성

  • freq='h' : 시간 주기
  • freq='bh' : 업무 시간 주기
  • freq='min' : 분 주기
  • freq='s' : 초 주기
  • periods= : 설정한 수 만큼 날짜를 생성

freq='h'

pd.date_range(start='2026-02-25', periods=10, freq='h')

- 출력

DatetimeIndex(['2026-02-25 00:00:00', '2026-02-25 01:00:00',
               '2026-02-25 02:00:00', '2026-02-25 03:00:00',
               '2026-02-25 04:00:00', '2026-02-25 05:00:00',
               '2026-02-25 06:00:00', '2026-02-25 07:00:00',
               '2026-02-25 08:00:00', '2026-02-25 09:00:00'],
              dtype='datetime64[us]', freq='h')

freq='bh'

  • 업무시간은 09:00 ~ 17:00 로 설정되어있다.
pd.date_range(start='2026-02-25', periods=10, freq='bh')

- 출력

DatetimeIndex(['2026-02-25 09:00:00', '2026-02-25 10:00:00',
               '2026-02-25 11:00:00', '2026-02-25 12:00:00',
               '2026-02-25 13:00:00', '2026-02-25 14:00:00',
               '2026-02-25 15:00:00', '2026-02-25 16:00:00',
               '2026-02-26 09:00:00', '2026-02-26 10:00:00'],
              dtype='datetime64[us]', freq='bh')

0개의 댓글