파이썬/데이터프레임 다루기 16

Pandas 그룹별 단일 값 매핑하기: CaseID별 CATEGORY 유일값 적용

데이터를 다루다 보면, 어떤 그룹(CaseID)별로 특정 컬럼(CATEGORY)이 항상 하나의 고유값을 갖는 경우가 있습니다.예를 들어, 하나의 반품 케이스에 해당하는 CaseID는 항상 하나의 제품군(CATEGORY)으로 구성되어 있는 경우죠.이번 포스팅에서는 Pandas를 이용해 그룹 단위로 CATEGORY가 하나일 경우 그 값을 각 행에 매핑하는 방법을 소개합니다. 예시 상황다음과 같은 이벤트 로그 데이터프레임이 있다고 가정합니다. 목표CaseID 별로 CATEGORY가 유일한 경우→ 그 값을 각 행에 매핑해 새로운 컬럼 CASE_CATEGORY 생성CATEGORY가 2개 이상이면 None 처리 구현 코드import pandas as pd# 예시 데이터프레임df = pd.DataFrame({ ..

Pandas groupby().agg() vs groupby().apply() – 단일 값 매핑할 때 무엇이 더 적절할까?

데이터 전처리 중 종종 다음과 같은 작업이 필요할 때가 있습니다:✅ 그룹별로 특정 컬럼(CATEGORY 등)이 단일한 경우 그 값을 각 행에 매핑하고 싶다. 예를 들어 CaseID별로 CATEGORY가 항상 하나라면,해당 값을 전부 매핑해서 새로운 컬럼으로 붙이고 싶겠죠?이때 Pandas에서는 대표적으로 agg()와 apply() 두 가지 방법을 사용할 수 있습니다.그렇다면, 어떤 걸 써야 할까요? 예제 상황import pandas as pddf = pd.DataFrame({ 'CaseID': [1001, 1001, 1002, 1003, 1003], 'CATEGORY': ['Monitor', 'Monitor', 'TV', 'Laptop', 'Monitor']}) 두 가지 방법 비교agg()..

Pandas에서 apply(set)과 issubset()으로 그룹 조건 필터링하기

데이터 분석을 하다 보면 "특정 그룹에 어떤 값들이 모두 포함되어 있는지"를 조건으로 필터링해야 할 때가 있습니다.예를 들어, CaseID마다 여러 단계의 처리 기록이 있는데, 그 안에 '입고', '이동', '폐기' 같은 모든 단계가 포함된 CaseID만 뽑고 싶을 수 있죠.이럴 때 Pandas에서는 groupby().apply(set)과 set.issubset() 조합이 매우 강력합니다. 예시 상황TXN 이라는 처리 단계 컬럼이 있고, 아래와 같이 CaseID별로 로그가 쌓여 있다고 가정해봅시다. 우리는 4개의 TXN 을 모두 포함한 CaseID만 추출하고 싶습니다:required_txns = { 'SVC Normal RMA Receipt', 'Subinventory Transfer', ..

판다스(Pandas) 필터링, 왜 for문보다 벡터 연산이 훨씬 빠를까?

데이터를 다루다 보면 종종 "조건에 맞는 행만 추출"해야 할 때가 많습니다.이때 흔히 떠올리는 방식이 for 반복문 또는 iterrows()인데요, 실제로는 판다스의 벡터 연산을 사용하는 것이 훨씬 빠르고 효율적입니다.이 글에서는 왜 벡터 연산이 반복문보다 빠른지, 그리고 실제 성능 차이가 얼마나 나는지를 함께 알아보겠습니다. 🐢 예시: 반복문 기반 필터링 (iterrows)import pandas as pdimport numpy as npimport timedf = pd.DataFrame({ 'A': np.random.randint(0, 100, size=1_000_000)})start = time.time()result = []for _, row in df.iterrows(): if r..

Pandas에서 문자열 처리의 핵심, str 메서드 활용하기

데이터 분석에서 문자열 처리 작업은 빠질 수 없는 필수 단계입니다. 특히 pandas를 사용할 때 Series.str 접근자를 통해 다양한 문자열 메서드를 손쉽게 사용할 수 있습니다. 이번 글에서는 실무에서 자주 사용하는 세 가지 메서드인 replace에 대해 알아보겠습니다. 데이터 전처리 중 문자열을 바꿀 일이 정말 많습니다. 예를 들어 'V-L-RMA'를 'RMA'로 바꾸고 싶은 상황이죠. 그런데 아래 두 가지 방법 중 어떤 게 맞는 걸까요?df['code'].replace('V-L-', '') # ❓df['code'].str.replace('V-L-', '') # ✅ 결론부터 말하면 두 코드는 완전히 다르게 작동합니다.   replace() 사용 – 전체 값 매칭df['code']..

Pandas size vs value_counts() — 무엇이 다를까?

Pandas를 사용할 때 자주 마주치는 두 가지 함수, size와 value_counts()는 모두 데이터의 "개수"와 관련이 있습니다. 하지만 이 둘은 사용 목적과 반환 결과에서 뚜렷한 차이를 가지고 있습니다. 이번 글에서는 두 함수의 차이를 간단하게 정리해보겠습니다.  size: 데이터프레임/시리즈의 전체 원소 수 또는 그룹별 개수size는 총 데이터 수를 구할 때 사용됩니다. 예를 들어, DataFrame에 몇 개의 행이 있는지를 알고 싶거나, groupby()와 함께 사용해 각 그룹의 원소 수를 구할 때 사용됩니다.import pandas as pddf = pd.DataFrame({ '팀': ['A', 'A', 'B', 'B', 'B'], '선수': ['철수', '영희', '민수', '..

Pandas vs NumPy – 연산 성능 비교, 누가 더 빠를까?

데이터 분석에서 Pandas와 NumPy는 거의 필수 라이브러리입니다.하지만 같은 연산을 해도 둘 사이에 성능 차이가 발생할 수 있다는 사실, 알고 계셨나요?이번 글에서는 간단한 수치 연산을 기준으로 Pandas와 NumPy의 속도 차이를 비교해보겠습니다. 실험 조건100만 개의 숫자에 대해 제곱 연산을 수행Pandas: Series 사용NumPy: ndarray 사용  코드 예제import numpy as npimport pandas as pdimport time# 데이터 생성size = 1_000_000arr = np.arange(size)ser = pd.Series(arr)# NumPy 연산start = time.time()np_result = arr ** 2print("NumPy 연산 시간:", ..

Pandas apply vs map vs applymap – 언제, 어디에 써야 할까?

데이터프레임을 다룰 때 자주 마주치는 세 가지 함수:바로 apply, map, applymap.이름도 비슷하고, 전부 뭔가 "함수를 적용"하는 느낌이라 처음 접하면 많이 헷갈리죠.하지만 적용 대상과 범위가 다르며, 상황에 따라 최적의 선택이 따로 있습니다.이번 포스팅에서는 이 세 함수의 차이를 명확하게 정리하고, 예제로 완벽하게 이해해봅시다!   한눈에 정리: map, apply, applymap 예제 데이터프레임 준비import pandas as pddf = pd.DataFrame({ '이름': ['철수', '영희', '민수'], '국어': [80, 90, 85], '영어': [78, 95, 88]})print(df)  map() – Series의 원소 하나하나에 함수 적용map()은 ..

Pandas iloc vs iat – 정수 인덱스로 DataFrame 다루기

Pandas에서 데이터를 다룰 때, 우리는 흔히 라벨 기반 접근 (loc, at)을 사용하지만,정수 인덱스 기반 접근이 필요한 상황도 많습니다.이때 등장하는 것이 바로 iloc과 iat인데요, 이름도 비슷하고 기능도 유사해 헷갈리기 쉽습니다.이번 글에서는 iloc과 iat의 차이점과 사용법을 쉽고 명확하게 정리해드립니다!  먼저 핵심 차이 요약 예제 데이터프레임 만들기import pandas as pddf = pd.DataFrame({ '이름': ['철수', '영희', '민수'], '나이': [23, 25, 21], '점수': [88, 92, 85]})print(df) iloc 사용법▶ 단일 셀 접근df.iloc[0, 1] # 0번째 행, 1번째 열 → 23 ▶ 여러 행, 열 슬라이싱d..

Pandas at vs loc – 헷갈리지 말고 정확히 쓰자!

Pandas를 쓰다 보면 종종 등장하는 at과 loc.비슷해 보이지만 성능과 사용 방식에 있어 큰 차이가 있습니다.이번 포스트에서는 at과 loc의 차이점, 쓰임새, 성능 차이를 알아보고,언제 어떤 걸 써야 하는지 정리해보겠습니다!  먼저 개념부터!  예제 데이터import pandas as pddf = pd.DataFrame({ '이름': ['철수', '영희', '민수'], '점수': [85, 90, 88]}, index=['a', 'b', 'c'])print(df) loc 사용법▶ 특정 셀에 접근df.loc['a', '이름'] # '철수' ▶ 여러 행, 열에 접근df.loc[['a', 'b'], ['이름', '점수']] ▶ 값 변경도 가능df.loc['b', '점수'] = 95 at 사용..