공부/AI

Python 공부 - Pandas 데이터 처리

글로벌디노 2024. 11. 17. 00:48

Pandas 라이브러리

행과 열로 이루어진 2차원 데이터를 효율적으로 가공할 수 있는 다양한 기능 제공

 

설치 방법

pip install pandas

 

사용 방법

import pandas as pd

 

https://pandas.pydata.org/

 

pandas - Python Data Analysis Library

pandas pandas is a fast, powerful, flexible and easy to use open source data analysis and manipulation tool, built on top of the Python programming language. Install pandas now!

pandas.pydata.org

 

Pandas 데이터 형식

pandas는 시리즈(Series)와 데이터프레임(DataFrame)이라는 구조화된 데이터 형식을 제공

 

1) 시리즈

  • 시리즈는 데이터가 순차적으로 나열된 1차원 배열의 형태
  • index와 value가 일대일 대응 관계

# 딕셔너리로 Series 생성
# 딕셔너리의 키는 시리즈의 인덱스와 대응하고,
# 딕셔너리의 각 키에 매칭되는 값은 시리즈의 데이터 값으로 변환됨.
dict_data = {'a':1,'b':2,'c':3}
series_data = pd.Series(dict_data)

# 데이터 타입, 내용 확인
print(type(series_data))
print(series_data)

 

 

# 리스트로 Series 생성
# 리스트를 시리즈로 변환할 때는 딕셔너리의 키처럼 인덱스로 변환될 값이 없음.
# 인덱스를 별도로 지정하지않으면 디폴트로 정수형 위치 인덱스가 지정됨.
list_data = ['2022-10-11',3.14,'ABC',100,True]
series_data = pd.Series(list_data)

# 데이터 타입, 내용 확인
print(type(series_data))
print(series_data)

 

# 리스트에 인덱스 지정
series_data = pd.Series([1, 2, 3, 4, 5], index=['a','b','c','d','e'])
print(type(series_data))
print(series_data)

 

 

Q. 시리즈의 인덱스는 뭐야?

더보기

Pandas Series의 인덱스는 각 데이터에 붙는 고유한 라벨(label)로, 데이터를 식별하거나 쉽게 접근할 수 있도록 도와줍니다. Python의 딕셔너리에서 **키(key)**와 유사한 역할을 합니다.

 

 

Series의 인덱스 특징

  1. 기본값: 인덱스는 기본적으로 숫자형(0부터 시작)으로 생성됩니다.
  2. 사용자 지정 가능: 숫자가 아닌 문자열이나 날짜 등 사용자 정의 인덱스를 설정할 수 있습니다.
  3. 중복 허용: 인덱스는 고유할 필요는 없으며, 동일한 값이 중복될 수 있습니다.
  4. 인덱스 데이터 타입: 인덱스도 Pandas의 특별한 객체로 다뤄지며, .index 속성을 통해 확인하거나 변경할 수 있습니다.

 

Series 인덱스의 주요 속성과 메서드


.index Series의 인덱스를 반환합니다.
.reset_index() 인덱스를 초기화하거나 새로 설정합니다.
.set_index() 특정 열을 새로운 인덱스로 설정합니다.
.loc[] 라벨 기반 인덱싱을 사용합니다.
.iloc[] 위치 기반(숫자형) 인덱싱을 사용합니다.
.isin() 인덱스 또는 데이터 값의 포함 여부를 확인합니다.

 

 

Q. 1차원 배열은 아니고, 딕셔너리같은 구조로 되어있는건가?

더보기

Pandas의 Series는 딕셔너리와 1차원 배열의 혼합된 구조로 이해할 수 있습니다. Series는 1차원 배열처럼 순차적인 데이터를 저장하지만, 딕셔너리처럼 키-값 쌍(key-value pairs)을 포함하여 데이터를 라벨링하고 접근할 수 있습니다.

 

Series의 구조

Series는 본질적으로 **인덱스(index)**와 값(value) 두 가지로 구성됩니다:

  • 인덱스(Index): 각 데이터를 식별하는 레이블(키).
  • 값(Value): 실제 데이터.

 

Series는 딕셔너리와 1차원 배열의 장점을 결합

  1. 딕셔너리처럼 키-값 쌍으로 데이터 관리
    • 데이터에 이름(label)을 부여하고, 이를 통해 데이터에 접근 가능.
    • 키가 인덱스로 동작하며, 값은 데이터 값으로 저장됨.
  2. 1차원 배열처럼 연산 가능
    • NumPy 배열처럼 벡터 연산을 지원.
    • 전체 데이터에 대해 수학적 연산, 조건 필터링, 슬라이싱 등 가능.

 

Series와 딕셔너리 비교

 

특징 Pandas Series Python Dictionary
데이터 접근 data['a'] dict['key']
순서 유지 순서 유지 (Pandas >= 0.25) 파이썬 3.7+에서 순서 유지
키와 값 인덱스와 값 키와 값
연산 지원 벡터 연산 지원 직접 루프를 돌려야 함
슬라이싱 지원 (data['a':'b']) 미지원
데이터 타입 같은 Series 내 혼합 가능 딕셔너리 값은 혼합 가능

 

Series와 1차원 배열 비교


특징 Pandas Series NumPy Array
인덱싱 레이블 기반 인덱싱 지원 위치 기반 인덱싱만 가능
연산 벡터 연산 지원 벡터 연산 지원
데이터 타입 혼합 타입 가능 단일 데이터 타입만 허용
슬라이싱 인덱스와 값 모두 슬라이싱 값만 슬라이싱 가능

 

Series는 딕셔너리와 1차원 배열의 중간 형태

  • 딕셔너리처럼 라벨링된 데이터를 다룰 수 있으면서도,
  • 배열처럼 빠른 연산과 데이터 조작이 가능합니다.

 

결론

Pandas Series는 기본적으로 1차원 배열이지만, 인덱스를 포함하여 딕셔너리처럼 동작할 수 있는 데이터 구조입니다.

  • 딕셔너리처럼 키-값 접근이 가능하며,
  • 1차원 배열처럼 벡터 연산과 같은 고성능 연산도 지원합니다.이 두 가지 특성을 결합하여, 데이터 분석에서 더 강력하고 유연한 도구로 활용됩니다.
반응형