IT world

[Python] 24.01.22 Pandas 본문

모두의 연구소(오름캠프)/AI 모델 활용 백엔드 개발 과정

[Python] 24.01.22 Pandas

엄킹 2024. 1. 22. 17:33

Pandas

pandas란? 데이터 분석 및 조작을 위한 파이썬 라이브러리로, 행과 열로 이루어진 데이터 객체를 만들어 다룰 수 있게 되며 표 형태의 데이터를 다루기 용이하다.

 

Pandas의 핵심 데이터 구조는 SeriesDataFrame이다. 이 자료 구조들은 빅데이터 분석에 있어서 높은 수준의 성능을 보여줍니다.

 

Series는 1차원 배열과 유사한 구조이며, 엑셀의 열을 의미한다. DataFrame은 2차원 테이블 형태의 데이터 구조이고, 엑셀에서 보는 표 형태를 의미한다. Series를 여러개 모은 딕셔너리나 데이터가 Pandas의 DataFrame이라고 생각하면 된다.

 

[Pandas의 데이터 구조]

 

DataFrame

1. Pandas의 핵심 데이터 구조.

2. 행과 열로 이루어진 2차원 테이블 형태로 데이터를 저장. 

3. 데이터 조작이 용이하고 효율적으로 데이터 분석이 가능.

  • 다양한 데이터 타입 지원: 숫자, 문자열, 날짜 등 다양한 데이터 타입을 하나의 테이블에서 관리 가능.
  • 데이터 조작의 용이성: 필터링, 정렬, 그룹화 등 작업이 쉽다.
  • 효율적인 데이터 분석

[DataFrame 생성 예시]

4. DataFrame 특정 열(Columns) 선택방법

  • df['column_name']을 사용하여 단일 열 선택 → 이 방법으로 선택된 열은 Series 객체
  • df[['col1', 'col2']]을 사용하여 여러 열 선택 → 이 방법으로 선택된 결과는 새로은 DataFrame
  • loc: 레이블 기반의 인덱싱을 통해 열 선택 → df.loc[:, 'Age'] ([행 정보, 컬럼명])
  • iloc: 정수 기반의 인덱싱을 통해 열 선택 → df.iloc[:, 1] ([행 정보, 열index]

 

Series

1. 1차원 배열의 구조.

2. DataFrame의 각 열(Column)은 사실상 하나의 Series 객체. → 여러 Series 객체의 결합으로 이루어진 2차원 구조가 DataFrame

3. Series는 DataFrame내에서 독립적인 데이터 타입을 가질 수 있다. → 하나의 시리즈는 하나의 독립적인 데이터 타입을 가질 수 있다.

4. Series는 각 데이터 값에 고유한 인덱스를 부여.

[Series 생성 예시]

 

DataFrame 기본 데이터 조회 방법

[csv 파일 호출]

1. head(), tail()

- DataFrame의 처음 5줄, 마지막 5줄을 보여준다.

- 데이터셋의 구조를 빠르게 살펴볼 때 유용.

[코드 예시]

2. info()

- DataFrame의 요약 정보를 제공.

- 각 열의 데이터 타입, 누락된 값의 수, 메모리 사용량 등 확인.

[코드 예시]

3. describle()

- 수치형 열에 대한 통계적 요약 제공

- 평균, 표준편차, 최소값, 최대값 등을 확인

- 만약 자료가 안나온다? → 문자형!

[코드 예시]

4. inplace = True

: Pandas의 대부분의 메서드에서는 DataFrame의 복사본을 수정하고, 원본은 그대로 유지한다. 따라서 inplace=True 사용 시 복사본을 만들지 않고 원본 DataFrame을 직접 수정한다. 이는 메모리 사용량을 줄일 수 있고, 코드의 간결성을 높일 수있다. (dropna() : 결측치가 있는 행이나 열을 제거)

[코드 예시]

5. 속성

- shape : (행의 개수, 열의 개수)를 튜플로 반환.

- dtypes : 각 열의 데이터 타입 확인.

- index: 행의 인덱스(레이블) 정보를 제공.

- columns: 모든 열의 이름을 출력.

[코드 예시]

6. astype()

- DataFrame이나 Series 등 다양한 데이터 타입을 변환하는데 사용.

[코드 예시]

7. 결측치 확인(isnull())

- 해당 열의 내용중 결측치 존재 여부 판단. (True, False 반환)

 

Seriese 메서드

1. sum(): Series내 모든 값 합산

2. mean(): Series 값의 평균 계산

3. value_counts(): Series 내 각 값의 빈도를 계산. → 해당 값의 count, count 순으로 자동 정렬.

[코드 예시]

 

 

DataFrame 열 이름 변경

DataFrame의 열이름 변경은 데이터의 가독성과 명확성을 향상시키는 데 중요하다.

- rename

  1. 열 이름을 변경할 때 사용.
  2. columns 파라미터에 딕셔너리 형태로 새 열 이름을 지정하여 사용.

- 일괄 변경

  1. DataFrame의 columns 속성을 직접 설정하여 모든 열 이름을 한번에 변경 가능.

[rename 사용하여 열 이름 변경]
[열 이름 일괄 수정]

 

DataFrame 결합

다양한 데이터 소스에서 수집한 데이터를 하나의 DataFrame으로 통합하여 분석 효율성을 높일 수 있다. 

 

1. concat()을 활용한 가로로 여러 DataFrame 연결(열 방향)

- 열이름이 다를 경우 ignore_index=True 옵션을 통해 열이름을 재설정할 수 있다.

[코드 예시]

 

2. concat()을 활용한 세로로 여러 DataFrame 연결(행 방향)

- 인덱스가 중복되지 않도록 설정하려면 ignore_index=True 옵션을 사용한다.

- 기본적으로 axis=0이 설정되어 행 방향으로 연결된다.

[코드 예시]

 

탐색적 데이터 분석(EDA)

EDA란? 정의, 수집한 데이터가 들어왔을 때 데이터를 탐색하고 분석하는 과정을 의미.

데이터 분석의 초기 단계로 데이터 셋의 특성, 구조, 패턴, 상관관계 등 파악하기 위해 사용되는 기술이다.

 

EDA를 해야하는 이유는 데이터의 분포 및 값을 검토함으로써 데이터가 표현하는 내용을 이해하고 무제를 발견하기 위함이다. 또한 미쳐 발생하지 못했을 다양한 패턴을 발견하고 이를 바탕으로 기존의 가설을 수정하거나 새로운 가설을 세울 수 있다.

 

각 컬럼에서 결측치의 유무와 비율을 파악하고 각 컬럼의 데이터 타입을 확인하여 적절한 타입의 변환이 필요한지 검토하며 각 컬럼에서 고유값의 개수를 파악하여 데이터의 다양성과 분포를 이해할 수 있다. 

 

이 단계는 데이터셋에 대한 기본적인 이해를 구축하는데 도움이 되고 데이터의 구조와 특성을 파악함으로써, 후속 분석 단계에서 어떤 방향으로 분석을 진행할지 결정하는데 정보를 제공한다. 

 

[참고]

데이터 시각화 라이브러리 : matplotlib, seaborn, plotly

Comments