유용한 Series 메서드
describe(), value_counts(), unique(), map()을 사용해 Series를 빠르게 요약하고 변환합니다.
유용한 Series 메서드은(는) CoddyKit의 무료 Pandas & NumPy Academy 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Pandas & NumPy Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Pandas & NumPy Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
describe()로 빠르게 요약하기
s.describe()는 한 번의 호출로 통계 요약을 생성합니다. 여기에는 개수, 평균, 표준 편차, 최솟값, 25번째 백분위수(Q1), 중앙값(Q2), 75번째 백분위수(Q3), 최댓값이 포함됩니다. 문자열 Series에서는 대신 개수, 고유값 개수, 최빈값, 빈도를 반환합니다. 데이터세트를 처음 살펴볼 때 열의 분포를 빠르게 파악하는 가장 좋은 방법입니다.
import pandas as pd
ages = pd.Series([25, 32, 19, 45, 28, 31, 22, 40])
print(ages.describe())
# count 8.000000
# mean 30.250000
# std 8.406...
# min 19.000000
# 25% 24.250000
# 50% 29.500000
# 75% 34.750000
# max 45.000000빈도표를 위한 value_counts()
s.value_counts()는 고유값을 인덱스로, 각 값의 출현 횟수를 데이터로 갖는 새로운 Series를 반환하며, 출현 횟수가 많은 순서로 정렬합니다. 원시 횟수 대신 비율을 얻으려면 normalize=True를 전달하십시오. 범주형 열의 분포를 파악할 때 가장 먼저 실행해 볼 만한 메서드입니다.
import pandas as pd
colors = pd.Series(['red', 'blue', 'red', 'green', 'blue', 'red'])
print(colors.value_counts())
# red 3
# blue 2
# green 1
print(colors.value_counts(normalize=True).round(2))
# red 0.50 blue 0.33 green 0.17unique()와 nunique()
s.unique()는 중복되지 않는 값을 처음 나타난 순서대로 담은 NumPy 배열을 반환합니다. 빈도순으로 정렬하는 value_counts와는 다릅니다. s.nunique()는 중복되지 않는 값의 개수를 정수로 반환하며, 이는 열의 카디널리티입니다. 두 메서드 모두 기본적으로 NaN을 제외합니다. NaN을 고유한 값으로 세려면 nunique(dropna=False)를 사용하십시오.
import pandas as pd
s = pd.Series(['apple', 'banana', 'apple', 'cherry', 'banana'])
print(s.unique()) # ['apple' 'banana' 'cherry']
print(s.nunique()) # 3요소별 변환을 위한 map()
s.map()은 함수, 딕셔너리 또는 다른 Series를 모든 요소에 적용합니다. 딕셔너리를 전달하면 각 값이 해당 딕셔너리 값으로 대체되고, 딕셔너리에 없는 값은 NaN이 됩니다. 함수를 전달하면 요소별로 함수가 적용됩니다. map은 범주형 레이블을 다시 코딩하거나 조회표를 적용할 때 적합합니다.
import pandas as pd
grades = pd.Series(['A', 'B', 'C', 'A', 'B'])
gpa = {'A': 4.0, 'B': 3.0, 'C': 2.0}
print(grades.map(gpa))
# 0 4.0
# 1 3.0
# 2 2.0
# 3 4.0
# 4 3.0사용자 지정 함수를 위한 apply()
s.apply(func)은 각 요소에 Python 호출 가능 객체를 적용하고 그 결과를 모읍니다. map()과 달리 스칼라가 아닌 객체를 반환할 수도 있는 더 복잡한 함수를 위한 메서드입니다. 단순한 요소별 변환에는 map() 또는 벡터화 표현식을 우선 사용하고, 로직을 직접 벡터화하기에 너무 복잡할 때 apply()를 사용하십시오.
import pandas as pd
sentences = pd.Series(['Hello world', 'Pandas is great', 'Data science'])
word_counts = sentences.apply(lambda x: len(x.split()))
print(word_counts)
# 0 2
# 1 3
# 2 2sort_values()와 sort_index()
s.sort_values()는 데이터 값을 오름차순으로 정렬한 Series를 반환합니다. 내림차순으로 정렬하려면 ascending=False를 전달하십시오. s.sort_index()는 인덱스 레이블을 기준으로 정렬합니다. 두 메서드 모두 기본적으로 원본 Series를 수정하지 않습니다. 원본을 직접 수정하려면 inplace=True를 전달할 수 있지만, 연산을 연결하는 최신 Pandas 코드에서는 일반적으로 권장되지 않습니다.
import pandas as pd
s = pd.Series([30, 10, 50, 20], index=['d', 'a', 'c', 'b'])
print(s.sort_values())
# a 10
# b 20
# d 30
# c 50
print(s.sort_index())
# a 10
# b 20
# c 50
# d 30멤버십 테스트를 위한 isin()
s.isin(values)는 요소가 제공된 목록이나 집합에 포함되는 위치에서 True가 되는 불리언 Series를 반환합니다. 여러 | 조건을 사용하는 것보다 읽기 쉽고, 큰 집합에서는 훨씬 빠릅니다. 특정 그룹에 속한 행을 필터링하거나 조회 목록과 일치하는 레코드에 표시할 때 자주 사용됩니다.
import pandas as pd
countries = pd.Series(['DE', 'US', 'FR', 'UK', 'US', 'DE'])
nordics = ['DE', 'FR']
print(countries.isin(nordics))
# 0 True 1 False 2 True 3 False 4 False 5 True
print(countries[countries.isin(nordics)])범위 필터링을 위한 between()
s.between(left, right, inclusive='both')는 값이 [left, right] 범위 안에 있는 위치에서 True가 되는 불리언 Series를 반환합니다. 기본적으로 양쪽 끝값을 모두 포함합니다. (s >= left) & (s <= right)를 작성하는 것보다 간결하고 의도를 명확하게 전달합니다. 연령대나 가격대 같은 숫자 범위를 필터링할 때 유용합니다.
import pandas as pd
scores = pd.Series([45, 72, 83, 91, 55, 68])
pass_mask = scores.between(60, 100)
print(pass_mask)
# 0 False 1 True 2 True 3 True 4 False 5 True
print(scores[pass_mask].values) # [72 83 91 68]빠른 확인을 위한 head()와 tail()
s.head(n)는 처음 n개 요소(기본값 5개)를 반환하고, s.tail(n)은 마지막 n개 요소를 반환합니다. 긴 Series를 수천 개의 행으로 출력하지 않고 시작과 끝을 간단히 살펴볼 때 데이터를 탐색하는 과정에서 매우 자주 사용됩니다. 이 메서드들은 새로운 Series(일부분)를 반환하므로 원본을 수정하지 않습니다.
import pandas as pd
s = pd.Series(range(100))
print(s.head(3))
# 0 0
# 1 1
# 2 2
print(s.tail(3))
# 97 97
# 98 98
# 99 99이름 변경을 위한 rename()
s.rename('new_name')은 name 속성이 다른 새로운 Series를 반환합니다. 인덱스 레이블의 이름을 바꾸려면 딕셔너리나 함수를 전달합니다: s.rename(index={'old': 'new'}). Series를 DataFrame으로 결합하기 전에 이름을 바꾸는 것이 중요합니다. Series의 name이 열 머리글이 되기 때문입니다. 원시 값을 다시 할당하지 말고 항상 이름을 변경하십시오.
import pandas as pd
s = pd.Series([1, 2, 3], index=['a', 'b', 'c'], name='original')
renamed = s.rename('updated').rename(index={'a': 'x', 'b': 'y', 'c': 'z'})
print(renamed)
# x 1
# y 2
# z 3
# Name: updatedidxmin()과 idxmax()
s.idxmin()은 최솟값의 인덱스 레이블을 반환하고, s.idxmax()는 최댓값의 레이블을 반환합니다. 인덱스에 날짜나 제품 이름처럼 의미 있는 레이블이 있을 때는 argmin/argmax보다 유용합니다. 단순한 위치 번호가 아니라 실제 식별자를 얻을 수 있기 때문입니다.
import pandas as pd
scores = pd.Series({'Alice': 88, 'Bob': 73, 'Carol': 95, 'Dan': 60})
print('Best:', scores.idxmax(), scores.max()) # Carol 95
print('Worst:', scores.idxmin(), scores.min()) # Dan 60빠른 확인
이 과목에서 배운 유용한 Series 메서드에 대한 이해도를 확인해 보십시오.
과목 요약
이 과목에서는 describe()를 한 번 호출하여 통계 요약을 제공하는 방법, value_counts()로 고유 값의 빈도표를 만드는 방법, 그리고 map()은 딕셔너리를 사용해 값을 변환하고 apply()는 각 요소에 사용자 지정 함수를 실행하는 방법을 배웠습니다. 다음으로 Pandas 데이터 분석의 2차원 핵심 자료 구조인 DataFrame을 다룹니다.
자주 묻는 질문
“유용한 Series 메서드” 강의는 무료인가요?
네 — “유용한 Series 메서드” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Pandas & NumPy Academy 강의 전체를 잠금 해제할 수 있습니다. Pandas & NumPy Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“유용한 Series 메서드”에서 뭘 배우나요?
describe(), value_counts(), unique(), map()을 사용해 Series를 빠르게 요약하고 변환합니다. 브라우저에서 직접 실행하는 실습 코드로 Pandas & NumPy Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Pandas & NumPy Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Pandas & NumPy Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 4번째 강의입니다.
“유용한 Series 메서드” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Pandas & NumPy Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Pandas & NumPy Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- Series 만들기
- 레이블 기반 및 위치 기반 접근
- Series의 벡터화 연산
- 유용한 Series 메서드