1. Series란?
- 1차원 자료구조
- DataFrame(표)의 한 행이나 한 열을 표현한다.
- 각 원소는 index로 접근할 수 있다.
- index는 순번과 지정한 이름 두 가지로 구성된다.⭐
- index명을 명시적으로 지정하지 않으면 순번이 index명이 된다.
- 순번은 0부터 1씩 증가하는 정수.
- 벡터화 연산을 지원
- Series 객체에 연산을 하면 각각의 Series 원소들에 연산이 된다.
- Series를 구성하는 원소들을 다루는 다양한 메소드 제공
2. 시리즈 생성
3. 시리즈 안에서 인덱싱과 슬라이싱
3.1 인덱싱
- index 순번으로 조회
- Series[순번]
- Series.iloc[순번]
- index 이름으로 조회
- Series[index명]
- Series.loc[index명] : 이름으로 조회한다는 것
- Series.index명
- index명이 문자열일 경우
. 표기법
사용가능
- 문자열에 공백이 있으면 불가능.
- index명이 문자열이면 문자열(" ") 로, 정수이면 정수로 호출
- s['name'], s[2], s.loc['name'], s.loc[2]
- 인덱스를 따로 지정하지 않아서 이름과 순번이 같을 경우, 이름이 우선된다.
3.1.1 팬시 인덱싱
- 팬시(fancy) 인덱싱
- Series[index리스트]
- 여러 원소 조회 시 조회할 index를 list/튜플로 전달
3.1.2 Boolean 인덱싱
- Series 의 indexing 연산자에 boolean 리스트를 넣으면 True인 index의 값들만 조회한다.
- Boolean 연산자들을 이용해 원하는 조건의 값들을 조회할 수 있다
- 다중 조건인 경우 반드시 ( )로 조건을 묶어야 한다.
- 파이썬과는 다르게 and, or 예약어는 사용할 수 없다.
3.2 슬라이싱
- Series[start index : end index : step]
- start index 생략 : 0번 부터
- end index
- index 순번일 경우는 포함 하지는다.
- index 명의 경우는 포함한다.
- end index 생략 : 마지막 index까지
- step 생략 : 1씩 증가
- Slicing의 결과는 원본의 참조(View)를 반환
- slicing한 결과를 변경시 원본도 같이 바뀐다.
- Series.copy() : Series를 복사한 새로운 객체 반환
4. shallow copy와 deep copy
4.1 deep copy(깊은 복사)
- 원본의 카피본을 반환하여 값 변경시 원본이 변경되지 않는다.
- 파이썬 리스트는 slicing시 deep copy⭐
- indexing은 deep copy
4.2 shallow copy(얕은 복사)
- 원본을 반환하여 값 변경시 원본에 영향을 준다.
- Series, DataFrame, 넘파이 배열(ndarray)은 slicing 조회시 shallow copy⭐
4.3 copy() 메서드
- Series, DataFrame, ndarray를 복사하여 반환한다.
5. 주요 메서드
5.1 정렬
- 공통 매개변수
- ascending=False (내림차순, 기본-True:오름차순)
- 결측치(NaN)은 가장 큰 값
6. 연산
- Numpy 배열(ndarray)과 마찬가지로 Series 객체과 연산을 하면 Series 내의 원소 별 연산을 한다.
s10 = pd.Series([1,10,5])
s20 = pd.Series([10,1,20])
s10*10
s10>5
s10[s10>5]
s10 + s20
s10 * s20
s10>=s20
np.add(s10, s20)