본문 바로가기
카테고리 없음

(9/29일) numpy, pandas, DataFrame 인덱싱과 필터링 정리

by proprocess-manager 2026. 9. 29.
반응형
오늘은 Pandas DataFrame의 기본 구조와 데이터 선택 방법, 조건 필터링, 빈도수 분석까지 학습했다. 데이터 분석에서 가장 자주 사용하는 기능들이며 앞으로의 데이터 전처리와 분석의 기초가 되는 내용들이다.

1. DataFrame 기본 개념

  • DataFrame은 행(Row)과 열(Column)로 구성된 2차원 데이터 구조이다.
  • 엑셀 시트와 가장 유사한 형태의 자료구조이다.
  • 각 컬럼은 서로 다른 데이터 타입을 가질 수 있다.
  • 데이터 분석의 핵심 객체이다.
대분류 (Category) 핵심 문법 / 키워드 영문/기호 표현 기능 요약 (Google Summary) 질문에서 사용된 코드 예시
1. 기본 입출력 문자열 입력 input() 사용자로부터 콘솔을 통해 한 줄의 문자열을 입력받는 함수 str = input()
1. 기본 입출력 화면 출력 print() 변수, 값, 문자열 등을 화면(콘솔)에 출력하는 함수 print(str)
1. 기본 입출력 f-문자열 포매팅 f-string (f'...') 문자열 내부에 중괄호 {}를 사용해 변수나 식의 값을 직관적으로 출력하는 방법 print(f"a = {a}")
1. 기본 입출력 원시 문자열 Raw String (r'...') 역슬래시(\)나 특수문자 이스케이프 해석을 방지하고 보이는 그대로 처리하는 문자열 표현법 print(r'!@#$%^&*(\'"<>?:;')
2. 문자열 조작 공백 제거 strip() 문자열 양쪽 끝의 공백, 탭, 줄바꿈 문자를 제거하는 메서드 input().strip()
2. 문자열 조작 문자열 쪼개기 split() 지정한 구분자(기본값은 공백)를 기준으로 문자열을 나눠 리스트로 반환하는 메서드 split(' ')
2. 문자열 조작 대소문자 반전 swapcase() 문자열 안의 대문자는 소문자로, 소문자는 대문자로 일괄 변환하는 메서드 str.swapcase()
2. 문자열 조작 길이 구하기 len() 문자열의 글자 수나 리스트 등 컬렉션의 요소 개수를 반환하는 함수 len(overwrite_string)
2. 문자열 조작 문자열 자르기 Slicing ([시작:끝]) 인덱스 범위를 지정하여 문자열의 특정 일부분만을 잘라내는 연산 my_string[:s] + overwrite_string + my_string[s + len(...):]
3. 제어문 & 연산자 함수 일괄 적용 map() 반복 가능한 객체의 모든 요소에 특정 함수(예: int)를 적용하는 함수 map(int, input().strip().split(' '))
3. 제어문 & 연산자 나머지 연산 Modulo (%) 나눗셈 후 남은 나머지를 구하는 연산자로 짝수/홀수 판별 등에 자주 사용 if a % 2 == 0:
3. 제어문 & 연산자 조건문 if - else 조건식의 참/거짓 판단 결과에 따라 코드 실행 흐름을 분기하는 구문 if a % 2 == 0:
    print(f"{a} is even")
else:
    print(f"{a} is odd")
3. 제어문 & 연산자 반복문 순회 for ... in ... 문자열이나 리스트의 요소들을 하나씩 순서대로 꺼내며 반복 실행하는 구문 for c in str:
    print(c)
4. 판다스 시리즈 (Pandas) 라이브러리 불러오기 import pandas as pd 데이터 분석 라이브러리인 Pandas를 pd라는 별칭으로 가져오는 구문 import pandas as pd
4. 판다스 시리즈 (Pandas) 시리즈 생성 pd.Series() 1차원 배열 구조의 Series 객체를 생성 (데이터는 리스트 []로 전달) sr = pd.Series(tup_data, index=['이름', '생년월일', '성별', '학생여부'])
sr = pd.Series([10, 20], index=['a', 'b'], dtype=float)
4. 판다스 시리즈 (Pandas) 위치 기반 인덱싱 .iloc[] 라벨 이름과 상관없이 0부터 시작하는 정수 위치(순서) 기준 데이터 추출 print(sr.iloc[1]) # 2번째 데이터 추출
4. 판다스 시리즈 (Pandas) 라벨 기반 인덱싱 .loc[] 시리즈에 지정된 인덱스 이름(라벨)을 기준으로 데이터 추출 print(sr.loc['생년월일'])
5. 자료형 (Data Types) 정수형 int 소수점이 없는 양수, 0, 음수를 나타내는 파이썬 기본 데이터 타입 a = int(input())
5. 자료형 (Data Types) 실수형 float 소수점이 포함된 실수를 나타내는 데이터 타입 (계산 시 정수보다 세밀함) dtype=float # 10 -> 10.0 변환
핵심 정리
DataFrame은 엑셀 표처럼 행과 열로 이루어진 데이터 구조이다. Pandas를 이용한 데이터 분석은 대부분 DataFrame을 중심으로 이루어진다.
광고

2. 컬럼 선택 방법

  • 하나의 컬럼을 선택하면 Series가 반환된다.
  • 여러 컬럼을 선택하면 DataFrame 형태가 유지된다.
  • 여러 컬럼 선택 시 컬럼명을 리스트 형태로 전달한다.

학습 포인트

하나의 컬럼은 단일 객체이기 때문에 대괄호 한 개를 사용하고, 여러 컬럼은 리스트를 전달하기 때문에 대괄호가 두 번 사용된다.

# 하나의 컬럼 선택 df['매출'] # 여러 컬럼 선택 df[['매출', '광고비']]

3. 위치 기반 인덱싱 (iloc)

  • iloc는 행 번호와 컬럼 번호를 기준으로 데이터를 선택한다.
  • 정수(Integer) 기반 인덱싱 방식이다.
  • 번호는 0부터 시작한다.
  • 배열(Array) 접근 방식과 유사하다.

학습 포인트

컬럼명이 길거나 컬럼명을 모르는 경우에도 번호만 알고 있으면 데이터를 선택할 수 있다.

# 첫 번째 행 선택 df.iloc[0] # 첫 번째 행의 두 번째 컬럼 선택 df.iloc[0, 1] # 첫 번째부터 세 번째 행까지 선택 df.iloc[0:3]

4. Fancy Indexing

  • 여러 개의 인덱스를 한 번에 선택하는 기법이다.
  • 인덱스 목록을 리스트 형태로 전달한다.
  • 원하는 데이터만 추출할 수 있다.
  • 선택 순서를 직접 지정할 수 있다.

학습 포인트

Fancy Indexing에서 대괄호가 두 번 보이는 이유는 선택 연산 안에 인덱스 리스트를 전달하기 때문이다.

# 0번째, 2번째, 4번째 행 선택 df.iloc[[0, 2, 4]]

5. loc 인덱서

  • loc는 Label 기반 인덱싱 방식이다.
  • 행 이름과 컬럼 이름을 사용한다.
  • 조건 검색 시 가장 많이 사용된다.
  • 데이터 수정 시에도 많이 활용된다.

loc 특징

  • 이름 기준 접근 방식이다.
  • 조건식을 함께 사용할 수 있다.
  • 실무 데이터 전처리에서 사용 빈도가 높다.
  • 슬라이싱 시 마지막 범위가 포함된다.
# '매출' 컬럼 선택 df.loc[:, '매출'] # 인덱스 라벨이 0, 1, 2인 행의 매출 선택 df.loc[0:2, '매출']

6. Boolean Indexing

  • 조건식의 결과(True, False)를 이용해 데이터를 선택한다.
  • DataFrame 필터링의 기본 방식이다.
  • 특정 조건을 만족하는 데이터만 추출할 수 있다.

학습 포인트

조건식을 작성하는 것만으로는 필터링이 수행되지 않는다. 조건식을 DataFrame에 적용해야 원하는 결과를 얻을 수 있다.

# 매출이 100 이상인 행만 선택 df[df['매출'] >= 100]

7. 조건 필터링

  • 같다 : ==
  • 다르다 : !=
  • 크다 : >
  • 작다 : <
  • 크거나 같다 : >=
  • 작거나 같다 : <=

ROAS 필터링 실습

  • ROAS = Revenue / Cost × 100
  • ROAS 컬럼을 새로 생성할 수 있다.
  • ROAS 500 이상인 데이터만 필터링할 수 있다.
# ROAS 계산 df['ROAS'] = df['매출'] / df['광고비'] * 100 # ROAS가 500 이상인 데이터 필터링 df[df['ROAS'] >= 500]

학습 포인트

조건식을 작성한 후 DataFrame에 적용해야 필터링이 수행된다. 조건식만 작성하면 True/False 결과만 반환된다.

주의할 점
ROAS 계산 시 광고비가 0인 데이터가 포함되어 있다면 0으로 나누는 상황을 별도로 처리해야 한다. 실제 분석에서는 결측치와 0값 여부도 함께 확인하는 것이 좋다.
광고
 

8. value_counts()

  • 범주형 데이터의 빈도수를 집계하는 함수이다.
  • 각 값이 몇 번씩 등장하는지 계산한다.
  • 마케팅 채널, 성별, 지역 등의 데이터를 분석할 때 유용하다.
  • 기본 설정에서는 빈도수가 높은 순서로 정렬된다.
# 채널별 등장 횟수 확인 df['채널'].value_counts()

엑셀과 비교

  • 피벗 테이블의 개수 집계와 유사하다.
  • COUNTIF 함수를 여러 개 사용하는 효과와 비슷하다.
  • Pandas에서는 한 줄의 코드로 전체 빈도 분석이 가능하다.

9. 오늘 배운 핵심 개념

  • DataFrame은 데이터 분석의 핵심 자료구조이다.
  • 하나의 컬럼 선택 시 Series가 반환된다.
  • 여러 컬럼 선택 시 DataFrame이 유지된다.
  • Fancy Indexing은 인덱스 목록을 이용한 선택 방식이다.
  • loc는 이름(Label) 기반 접근이다.
  • iloc는 위치(Position) 기반 접근이다.
  • Boolean Indexing은 조건 필터링의 핵심 개념이다.
  • 조건식만 작성하면 필터링이 수행되지 않는다.
  • value_counts()는 범주형 데이터의 빈도수를 계산한다.
  • value_counts()는 엑셀의 피벗 테이블과 유사한 역할을 한다.

다음 학습 예정

데이터 분석에서는 데이터를 불러오는 것보다 원하는 데이터를 정확하게 선택하고 필터링하는 능력이 더 중요하다. 오늘 학습한 loc, iloc, Boolean Indexing, value_counts는 앞으로 거의 모든 분석 과정에서 반복적으로 사용될 핵심 기능이다.

반응형