08. 시리즈란 무엇인가
- Pandas 시리즈(Series)가 무엇인지 안다
- 리스트·딕셔너리·인덱스로 시리즈를 만들 수 있다
- 시리즈의 속성과 기본 메서드를 사용한다
import pandas as pd를 먼저 실행하는 것을 잊지 마세요.먼저: 시리즈가 뭔가요?
시리즈(Series)는 라벨(이름표)이 붙은 1차원 데이터입니다. 쉽게 말해, 값들이 한 줄로 늘어서 있고 각 값마다 이름표가 달린 것입니다.
엑셀로 치면 한 개의 열(column)을 떠올리면 됩니다. 0부에서 배운 NumPy 1-D 배열에 "이름표(인덱스)"를 더한 것이라고 봐도 좋습니다.
flowchart TB
subgraph S["Pandas 시리즈 (Series)"]
direction LR
I0["인덱스 0"] --- V0["10"]
I1["인덱스 1"] --- V1["20"]
I2["인덱스 2"] --- V2["30"]
end
classDef idx fill:#e5dbff,stroke:#7048e8,color:#000
classDef val fill:#d0ebff,stroke:#1971c2,color:#000
class I0,I1,I2 idx
class V0,V1,V2 val
🔑 새 용어 — 인덱스(index)
시리즈의 각 값에 붙은 이름표(라벨)를 인덱스라 합니다. 기본은0, 1, 2, …숫자지만, 우리가 원하는 글자로 바꿀 수도 있습니다. 인덱스로 원하는 값을 빠르게 찾습니다.
시리즈 만들기 (1) — 리스트로
가장 기본은 리스트를 pd.Series()로 감싸는 것입니다.
import pandas as pd s = pd.Series([10, 20, 30, 40]) print(s)
실행 결과:
0 10 1 20 2 30 3 40 dtype: int64
왼쪽 0, 1, 2, 3이 인덱스(자동으로 붙은 기본 이름표), 오른쪽이 값입니다. 맨 아래 dtype: int64는 값들의 타입이 정수임을 알려 줍니다. (0부에서 본 dtype과 같은 개념입니다.)
시리즈 만들기 (2) — 사용자 정의 인덱스로
index=로 원하는 이름표를 직접 붙일 수 있습니다.
import pandas as pd sales = pd.Series([100, 250, 175], index=["월요일", "화요일", "수요일"]) print(sales)
실행 결과:
월요일 100 화요일 250 수요일 175 dtype: int64
이제 숫자 대신 요일 이름으로 값을 찾을 수 있습니다.
print(sales["화요일"])
실행 결과:
250
💡 팁: 인덱스에 의미 있는 이름을 붙이면 데이터가 훨씬 읽기 쉬워집니다. "2번째 값"보다 "화요일 매출"이 명확하죠.
시리즈 만들기 (3) — 딕셔너리로
0부에서 배운 딕셔너리를 넘기면, 키가 인덱스, 값이 값이 됩니다. 아주 자연스러운 방법입니다.
import pandas as pd population = pd.Series({ "서울": 940, "부산": 330, "인천": 295 }) print(population)
실행 결과:
서울 940 부산 330 인천 295 dtype: int64
"서울")가 그대로 인덱스가 되었습니다. 이 패턴은 다음 장에서 데이터프레임(표)을 만들 때도 똑같이 쓰입니다.시리즈의 속성 (정보 확인하기)
시리즈가 가진 정보를 들여다보는 속성들입니다. 괄호 ()가 없는 점에 주의하세요(속성은 함수가 아니라 "성질"입니다).
import pandas as pd sales = pd.Series([100, 250, 175], index=["월", "화", "수"]) print(sales.values) # 값들만 (NumPy 배열로) print(sales.index) # 인덱스들 print(sales.dtype) # 데이터 타입 print(sales.shape) # 모양 print(sales.size) # 요소 개수
실행 결과:
[100 250 175] Index(['월', '화', '수'], dtype='object') int64 (3,) 3
| 속성 | 알려 주는 것 |
|---|---|
.values | 값들 (NumPy 배열) |
.index | 인덱스(이름표) 목록 |
.dtype | 값들의 데이터 타입 |
.shape | 모양 (요소 개수) |
.size | 전체 요소 개수 |
sales.values는 맞지만 sales.values()는 틀립니다. 뒤에 나올 메서드는 괄호가 있고(sales.sum()), 속성은 괄호가 없습니다(sales.index). 헷갈리면 "값을 계산해서 돌려주는 동작이면 메서드(괄호 O), 이미 가진 성질이면 속성(괄호 X)"으로 구분하세요.시리즈의 기본 메서드
메서드는 시리즈에 어떤 동작을 시켜 결과를 돌려줍니다. 자주 쓰는 것들:
import pandas as pd scores = pd.Series([85, 92, 78, 90, 88]) print(scores.sum()) # 합계 print(scores.mean()) # 평균 print(scores.max()) # 최댓값 print(scores.min()) # 최솟값 print(scores.describe())# 요약 통계 한 번에!
실행 결과:
433 86.6 92 78 count 5.000000 mean 86.600000 std 5.412947 min 78.000000 25% 85.000000 50% 88.000000 75% 90.000000 max 92.000000 dtype: float64
describe()는 데이터 분석의 친구describe()는 개수·평균·표준편차·최소/최대·사분위수를 한 번에 보여 줍니다. 새 데이터를 받으면 가장 먼저 호출해 보는 습관을 들이면 좋습니다. (count=개수, mean=평균, std=표준편차, 25%/50%/75%=사분위수, 50%는 곧 중앙값입니다.)head()와 tail()로 앞/뒤 일부만 미리 볼 수도 있습니다.
print(scores.head(2)) # 앞 2개 print(scores.tail(2)) # 뒤 2개
실행 결과:
0 85 1 92 dtype: int64 3 90 4 88 dtype: int64
CSV로 1-D 데이터 불러오기
실제 데이터는 보통 파일에서 옵니다. 한 열짜리 CSV를 시리즈로 불러올 수 있습니다.
import pandas as pd # 한 열짜리 CSV를 시리즈로 (squeeze로 1열을 시리즈로 압축) url = "https://raw.githubusercontent.com/mwaskom/seaborn-data/master/tips.csv" tips = pd.read_csv(url) tip_series = tips["tip"] # 'tip' 열 하나만 꺼내면 그게 시리즈 print(tip_series.head()) print(type(tip_series))
실행 결과:
0 1.01 1 1.66 2 3.50 3 3.31 4 3.61 Name: tip, dtype: float64 <class 'pandas.core.series.Series'>
🛠 미니 챌린지
- 좋아하는 과일 3개의 가격을 담은 시리즈를 만드세요. 인덱스는 과일 이름으로 하세요.
- 그 시리즈에서 특정 과일의 가격을 인덱스로 찾아 출력하세요.
- 시리즈
[23, 45, 12, 67, 34, 89]를 만들고, 합계·평균·최댓값을 출력하세요.
✅ 미니 챌린지 해설
import pandas as pd # 1. 과일 가격 시리즈 (딕셔너리로) prices = pd.Series({"사과": 1500, "바나나": 800, "포도": 4000}) print(prices)
실행 결과:
사과 1500 바나나 800 포도 4000 dtype: int64
# 2. 인덱스로 찾기 print(prices["포도"])
실행 결과: 4000
# 3. 통계 메서드 s = pd.Series([23, 45, 12, 67, 34, 89]) print(s.sum()) print(s.mean()) print(s.max())
실행 결과:
270 45.0 89
이 장에서 배운 것
- 시리즈는 라벨(인덱스)이 붙은 1차원 데이터로, 엑셀의 한 열과 같다.
- 리스트·
index=·딕셔너리 세 가지 방법으로 만들 수 있다. - 속성(
.values,.index,.dtype— 괄호 없음)으로 정보를 확인한다. - 메서드(
.sum(),.mean(),.describe()— 괄호 있음)로 계산·요약한다. - 데이터프레임에서 열 하나를 꺼내면 그것이 곧 시리즈다.
✍️ 확인 문제
- 시리즈에서 "인덱스"란 무엇인가요?
s.shape와s.sum()중 하나는 속성, 하나는 메서드입니다. 어느 쪽이 메서드이고, 어떻게 구분하나요?- 새 데이터를 받았을 때 요약 통계를 한 번에 보려면 어떤 메서드를 쓰나요?
다음 장에서는 시리즈를 정렬하고, 연산하고, 원하는 부분을 인덱싱·슬라이싱으로 꺼내는 법을 익힙니다.
👉 09. 시리즈의 속성·메서드와 다루기