[Pandas] Series
Pandas Series, pandas.Series, 1차원 pandas
정의
pandas.Series 는 1차원 레이블 배열. NumPy ndarray + Index 의 결합. Pandas DataFrame 의 한 열이 곧 Series.
import pandas as pd
s = pd.Series([10, 20, 30], index=['a', 'b', 'c'], name='score')
핵심 속성
| 속성 | 의미 |
|---|---|
s.values | numpy array |
s.index | Index 객체 |
s.dtype | 데이터 타입 |
s.name | Series 이름 (DataFrame 의 열 이름이 됨) |
s.size | 원소 수 |
s.shape | (n,) |
생성
python
import pandas as pd
# list 로
s1 = pd.Series([1, 2, 3])
# dict 로 (key → index)
s2 = pd.Series({'a': 10, 'b': 20, 'c': 30})
# scalar broadcast
s3 = pd.Series(0, index=['x', 'y', 'z'])
print(s1.tolist(), '|', s2.to_dict(), '|', s3.tolist()) 결과
[1, 2, 3] | {'a': 10, 'b': 20, 'c': 30} | [0, 0, 0]인덱싱
python
s = pd.Series([10, 20, 30, 40], index=['a', 'b', 'c', 'd'])
print(s['b']) # label 로
print(s.iloc[1]) # 정수 위치
print(s[['a', 'c']].values) # 여러 label
print(s[s > 15].values) # boolean mask 결과
20
20
[10 30]
[20 30 40]벡터 연산
NumPy 처럼 element-wise 연산이 빠르다.
python
s = pd.Series([1, 2, 3, 4])
print((s * 10).tolist())
print((s + s).tolist())
print(s.mean(), s.sum(), s.std()) 결과
[10, 20, 30, 40]
[2, 4, 6, 8]
2.5 10 1.2909944487358056index 정렬
두 Series 를 연산할 때 index 가 자동 정렬 된다.
python
a = pd.Series([1, 2, 3], index=['x', 'y', 'z'])
b = pd.Series([10, 20, 30], index=['y', 'z', 'w'])
print(a + b) 결과
w NaN
x NaN
y 12.0
z 23.0
dtype: float64매칭되지 않은 index 는 NaN. 이 동작이 SQL 의 outer join 과 유사.
DataFrame 으로 변환
s = pd.Series([10, 20, 30], name='score')
df = s.to_frame() # 1열짜리 DataFrame
df2 = pd.DataFrame({'score': s, 'grade': ['A', 'B', 'A']})
참고
이 글의 용어 (3개)
- [Pandas] 개요pandas
- 정의 pandas 는 Python 의 데이터 분석/조작 라이브러리. 두 가지 핵심 자료형을 중심으로 동작한다. - : 1차원 레이블 배열 (NumPy array + index) …
- [Pandas] DataFramepandas
- 정의 은 2차원 레이블 테이블. 각 열이 , 모든 열이 같은 (행 라벨) 를 공유. SQL 테이블 / Excel 시트 / R data.frame 의 Python 대응체. 생성 <…
- [Pandas] Indexpandas
- 정의 는 행 / 열 라벨을 보관하는 객체. / 의 모든 라벨은 Index. 정렬, 정합성, 빠른 lookup 의 기반. 기본은 RangeIndex (0, 1, 2, ...) 지만…
💬 댓글