오픈소스sw개론 Part2, chap 7. Pandas (1)

2023. 12. 8. 17:47컴퓨터공학 전공공부/오픈소스 SW개론

1. Pandas란 무엇인가?

Pandas란 무엇인가?

판다스는 빠르고 쉽게 데이터를 cleaning(청소)하고, 분석할 수 있게 돕는 데이터 구조와 도구들을 가지고 있다. NumPy, SciPy와 같은 수치 계산 도구들이나, statsmodels, scikit-learn 같은 분석적 라이브러리, matplotlib과 같은 데이터 시각화 라이브러리 등과 함께 쓰인다. NumPy와 마찬가지로, 배열 기반이며 for loop 사용 없이 데이터를 가공할 수 있다. 한편 NumPy와는 달리 표 형식의 데이터, 이종의 데이터를 다룰 수 있게 설계되어 있다. (NumPy는 동종의 데이터만 다룰 수 있다.)

 

Pandas의 데이터 구조

크게 두 가지가 있다. : Series, DataFrame

 

2. Series

Series란 무엇인가?

series는 1차원의 배열과 유사한 객체이다. 배열의 데이터 라벨을 가지고 있으며, index라 부른다. 한편, index-value 연결은 NumPy 함수 사용 등 여러 동작을 수행해도 끊기지 않는다.

index와 value의 쌍으로 구성

 

value, index

 

라벨을 이용한 인덱싱

series

 

파이썬 dictionary와 series

파이썬의 dictionary와 series는 유사하다. 파이썬 dictionary를 통해 series를 만들 수 있다.

 

짝이 없는 index의 접근

index에 해당하는 value가 없을 때, 그 index에 대한 value는 NaN(not a number)로 설정된다.

California의 value가 NaN으로 설정되었다. 한편, states에 'Utah'가 포함되지 않아 obj에서 출력되지 않음을 볼 수 있다. 즉, 필터링 기능이 가능하다.

 

isnull, notnull

isnull, notnull 함수는 null인지 여부를 판단하는 함수로, isnull은 null이면 true, notnull은 null이면 false를 반환한다.

 

두 series의 덧셈

index가 오름차순으로 정렬된다.

 

name

series 객체 자체와 series 안의 index 둘 다 name이라는 속성을 가지고 있다. series 객체와 index에 이름을 붙여줄 수 있다. name은 데이터를 설명하는 데이터, 메타데이터라고 할 수 있다.

 

3. DataFrame

DataFrame이란?

DataFrame은 이종의 데이터들을 직사각형 표로 나타낸다. row index, column index가 있으며 series들로 이루어진 dictionary (nested dictionary)라고도 볼 수 있다. 

 

NumPy 배열을 value로 갖는 dictionary를 이용해 DataFrame 생성

index는 자동으로 series 인자들로 매겨지며, DataFrame을 통해 브라우저 친화적인 HTML 표를 얻을 수 있다.

 

head

상위 5행을 출력하는 함수이다. 큰 데이터프레임을 다룰 때 용이하다.

 

DataFrame의 columns 인자, index 인자

데이터프레임의 인자로 columns = 열 순서 배열을 주어 열 순서 배열대로 column을 재배열할 수 있다.

데이터프레임의 인자로 index = 행 순서 배열을 주어 행 순서 배열대로 row를 재배열할 수 있다.

 

column 값, row 값을 이용한 데이터프레임 접근

결과는 series 형태로 나온다. row값을 이용할 때는 별도의 속성, loc를 사용한다.
특정 column에 접근하여 해당 column의 값을 새롭게 할당할 수 있다.

 

column에 series 할당

 

column 추가하기, 지우기

column을 지울 땐 del 키워드를 사용한다.

 

nested dictionary를 데이터로 받는 데이터프레임

 

데이터프레임의 전치

 

인덱스로써 기능하는 dictionary의 키

인덱스가 명시적으로 지정되어 있지 않은 경우에서, dictionary의 키는 자동적으로 인덱스로써 기능한다.

 

데이터프레임의 인덱스(row), column에 이름 붙이기

 

values

데이터프레임의 데이터(values)를 이차원 ndarry 형태로 출력하는 attribute이다. 데이터프레임의 column(열)을 구성하는 값들의 타입이 모두 같지 않을 경우 값들을 배열로 출력한다.

values가 이종인 경우 dtype=object

 

4. Index Objects

판다스의 index 객체들

인덱스 객체란, 축 라벨 및 기타 메타데이터를 보유하는 역할을 하는 객체이다.

 

 index 객체의 속성

  • 수정 불가능
    • 판다스의 인덱스 객체는 사용자에 의해 수정될 수 없으며, 수정을 시도하면 에러가 발생한다. 여러 개의 데이터 구조 간 인덱스 객체의 공유를 안전하게 만든다.
  • 고정 크기의 집합
    • 인덱스 객체는 배열과 비슷한 형태로써, 고정 크기의 집합처럼 기능한다.
  • 중복 라벨 가능
    • 파이썬 집합과 달리, 인덱스 객체는 중복 원소(라벨)을 허용한다.