본문 바로가기
파이썬 (투자분석용)/Pandas 및 python 일반

Pandas 시작하기: 3일차, DataFrame의 깊이 있는 이해

by amAToRoi 2024. 1. 24.
반응형

DataFrame이란?

DataFrame은 Pandas 라이브러리의 핵심 구성 요소 중 하나로, 2차원의 라벨이 붙은 데이터 구조입니다. 엑셀 스프레드시트나 SQL 테이블과 유사하며, 다양한 데이터 타입을 포함할 수 있습니다.

DataFrame 생성하기

DataFrame은 여러방법으로 생성할 수 있으나, 가장 흔한 방법은 딕셔너리를 활용하는 것입니다.

import pandas as pd

# 딕셔너리를 사용하여 DataFrame 생성
data = {
    'Name': ['John', 'Anna', 'Peter', 'Linda'],
    'Age': [28, 34, 29, 32],
    'City': ['New York', 'Paris', 'Berlin', 'London']
}
df = pd.DataFrame(data)

print(df)
''' 출력
    Name  Age      City
0   John   28  New York
1   Anna   34     Paris
2  Peter   29    Berlin
3  Linda   32    London
'''

데이터 엑세스 및 선택

DataFrame에서 데이터를 선택하는 방법은 다양합니다. 가장 기본적인 방법은 열 이름을 사용하는 것입니다.

print(df['Name'])

''' 출력
0     John
1     Anna
2    Peter
3    Linda
Name: Name, dtype: object
'''

또한, 'loc'와 'iloc'를 사용하여 행을 선택할 수 있습니다. 'loc'은 라벨 기반의 선택, 'iloc'은 정수 위치 기반의 선택을 제공합니다. 이 두 메소드는 행 뿐 아니라 열도 구분할 수 있습니다.

# loc와 iloc 사용 예
print(df.loc[0])  # 첫 번째 행 선택
print(df.iloc[0:2])  # 첫 두 행 선택

loc와 iloc의 사용법 확장

loc

  1. 'loc'는 라벨 기반의 인덱싱을 제공합니다. 행과열을 라벨(예:열 이름, 행 인덱스)로 선택할 수 있습니다.
  2. 사용 형식: 'df.loc[행 라벨, 열 라벨]'
# 'Name' 열의 첫 번째 행 선택
print(df.loc[0, 'Name'])

''' 출력
John
'''

# 'Name'과 'Age' 열의 첫 두 행 선택
print(df.loc[0:1, ['Name', 'Age']])
''' 출력
   Name  Age
0  John   28
1  Anna   34
'''

iloc

  1. 'iloc'는 위치 기반의 인덱싱을 제공합니다. 행과 열을 정수 위치로 선택할 수 있습니다.
  2. 사용형식: 'df.iloc[행 위치, 열 위치]'
# 첫 번째 열의 첫 번째 행 선택
print(df.iloc[0, 0])
''' 출력
John
'''

# 첫 두 열의 첫 두 행 선택
print(df.iloc[0:2, 0:2])
''' 출력
   Name  Age
0  John   28
1  Anna   34
'''

주의사항: 'loc'은 라벨을 기반으로 하므로 지정한 라벨, 즉, 끝 인덱스를 포함하며, 'iloc'에서는 python의 일반적인 슬라이싱과 같이 지정된 범위의 마지막은 포함되지 않습니다.

DataFrame의 데이터 조작

DataFrame은 데이터를 추가, 삭제 또는 수정하는 데 사용될 수 있는 다양한 메소드를 제공합니다. 수정의 경우에는 'loc' 또는 'iloc'를 활용한 선택과 더불어 할당 연산자 '='를 활용하여 바꾸고자하는 값의 'list'를 할당하거나 특정 값을 할당하는 방법을 사용하는 방법이 가장 간단합니다.

# 새로운 열 추가
df['Country'] = ['USA', 'France', 'Germany', 'UK']

# 행 삭제
df.drop(1, inplace=True)

# 행 추가
df = df.append({'Name': 'Sarah', 'Age': 25, 'City': 'Madrid', 'Country': 'Spain'}, ignore_index=True)

결론

DataFrame은 Pandas에서 가장 강력하고 유연한 데이터 구조입니다. DataFrame 객체는 많은 메소드를 포함하고 있으며, 엑셀의 배열함수와 같은 메소드 뿐 아니라 일반적인 프로그래밍에서의 배열관리 방법(반복문 활용)을 활용하는 메소드, inline 함수를 적용하는 방법의 하나로 'apply'와 'lambda'를 활용하는 스킬, 데이터 구조 간의 결합과 분리, 조건부 선택과 같은 강력한 기능을 추가로 공부할 필요가 있습니다.

반응형

댓글