Pandas 핵심 기능 정리 (지속 업데이트)

DataFrame: 데이터 중심 구조

pandas의 핵심 데이터 구조인 DataFrame은 행과 열로 구성된 표 형태의 데이터를 다룹니다. 각 행은 인덱스로 식별되며, 열은 이름을 가집니다.

기본 모듈 로드

import pandas as pd
import numpy as np

데이터 생성 및 기본 조작

CSV 파일을 읽어와 DataFrame으로 변환하는 예시:

chicago_taxi_data = pd.read_csv("https://download.mlcc.google.com/mledu-datasets/chicago_taxi_train.csv")

직접 NumPy 배열을 사용해 DataFrame 생성:

# 5행 × 2열 배열 생성
data_array = np.array([[0, 3], [10, 7], [20, 9], [30, 14], [40, 15]])

# 열 이름 지정
column_names = ['온도', '활동량']

# DataFrame 생성
sample_df = pd.DataFrame(data=data_array, columns=column_names)

print(sample_df)

인덱스 관리

기본 인덱스는 RangeIndex(start=0, stop=5, step=1)입니다. 커스텀 인덱스를 설정하려면:

custom_index_df = pd.DataFrame(
    data=data_array,
    columns=column_names,
    index=[10, 20, 30, 40, 50]
)

인덱스를 재설정하거나 변경하는 메서드:

  • reset_index(drop=False, inplace=False): 현재 인덱스를 열로 복사하거나 삭제
  • set_index(keys, drop=True, append=False): 특정 열을 인덱스로 설정

컬럼 추가 및 수정

새 컬럼을 생성하거나 기존 컬럼 간 연산 수행:

sample_df['보정값'] = sample_df['활동량'] + 2
sample_df['자카린'] = sample_df['타니'] + sample_df['제이슨']

데이터 접근 방식

행과 열에 접근하는 다양한 방법:

# 특정 열 접근
print(sample_df['온도'])

# 처음 3개 행 확인
print(sample_df.head(3))

# 특정 행 접근 (Series 반환)
print(sample_df.iloc[2])

# 인덱스 기반 슬라이싱
print(sample_df[1:4])

# 조건에 맞는 데이터 추출
filtered_data = chicago_taxi_data[chicago_taxi_data['FARE'] > 50]

랜덤 샘플링

무작위로 데이터 샘플 추출:

random_sample = chicago_taxi_data.sample(n=10, random_state=42)

셀 단위 접근

특정 셀 값에 접근:

print(f"2번째 행, 타니 컬럼 값: {sample_df['타니'][1]}")

Series vs DataFrame 차이

Series는 하나의 열을 의미하며, DataFrame은 여러 개의 Series가 모여 형성된 구조입니다.

참조와 복사의 차이

변수 할당 시 참조 또는 복사 여부의 중요성:

reference_df = sample_df  # 참조
copy_df = sample_df.copy()  # 복사

# 참조를 수정하면 원본도 영향받음
reference_df.at[1, '온도'] = 100
print(sample_df.at[1, '온도'])  # 결과: 100

인덱싱 방식 비교

  • .iloc[]: 정수 위치 기반 인덱싱
  • .loc[]: 레이블 기반 인덱싱
  • .at[]: 스칼라 값에 대한 빠른 접근
  • .iat[]: 정수 위치 기반 스칼라 접근

데이터 탐색 및 통계 분석

기본 통계 정보 확인:

training_df.describe()

고유한 값 수 확인:

num_companies = training_df['COMPANY'].nunique()

최빈값 찾기:

most_frequent_payment = training_df['PAYMENT_TYPE'].value_counts().idxmax()

수치형 컬럼만 선택:

numeric_cols = training_df.select_dtypes(include=[np.number])

최대/평균/표준편차 계산:

max_fare = training_df['FARE'].max()
mean_distance = training_df['TRIP_MILES'].mean()
std_dev = training_df.select_dtypes(include=[np.number]).std()

결측치 확인

missing_count = training_df.isnull().sum().sum()

상관관계 분석

correlation_matrix = training_df.corr(numeric_only=True)

출력 옵션 설정

pd.options.display.max_rows = 10
pd.options.display.float_format = "{:.2f}".format

태그: pandas DataFrame Series data analysis data exploration

6월 2일 00:31에 게시됨