[판다스] 시리즈

밍키·2020년 8월 11일
1

판다 판다 판다스

목록 보기
2/12
post-thumbnail

1. Series란?


  • 1차원 자료구조
  • DataFrame(표)의 한 행이나 한 열을 표현한다.
  • 각 원소는 index로 접근할 수 있다.
    • index는 순번과 지정한 이름 두 가지로 구성된다.⭐
      • index명을 명시적으로 지정하지 않으면 순번이 index명이 된다.
    • 순번은 0부터 1씩 증가하는 정수.
  • 벡터화 연산을 지원
    • Series 객체에 연산을 하면 각각의 Series 원소들에 연산이 된다.
  • Series를 구성하는 원소들을 다루는 다양한 메소드 제공

2. 시리즈 생성


  • 구문
    • pandas.Series(배열형태 자료구조)
  • 배열형태 자료구조
    • 리스트
    • 튜플
    • 넘파이 배열(ndarray)

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/튜플로 전달
      • s[[1,2,3]]

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 정렬


  • sort_values()
    • 값으로 정렬
  • sort_index()
    • index 이름으로 정렬
  • 공통 매개변수
    • ascending=False (내림차순, 기본-True:오름차순)
    • 결측치(NaN)은 가장 큰 값
  • 정렬 결과를 새로운 Series로 반환.

6. 연산


  • Numpy 배열(ndarray)과 마찬가지로 Series 객체과 연산을 하면 Series 내의 원소 별 연산을 한다.
s10 = pd.Series([1,10,5])
s20 = pd.Series([10,1,20])

# 시리즈 * 스칼라 => 원소별로, index별로 계산
s10*10

# 비교 연산
s10>5
# 불리형 인덱싱 
s10[s10>5]

# 시리즈 + 시리즈
s10 + s20

# 시리즈 * 시리즈
s10 * s20

# 시리즈끼리 비교
s10>=s20

# 시리즈에서 한다기보다 나중에 데이터프레임에서 많이 사용함.

# 넘파이의 범용 함수들을 시리즈에서도 사용할 수 있다.
np.add(s10, s20)
profile
대한민국 4차 산업의 역군을 꿈꾸며.

0개의 댓글