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

이터레이터 vs 제너레이터: 파이썬 반복의 핵심 이해하기

파이썬에서 데이터를 반복 처리할 때, 우리는 흔히 for 루프를 사용합니다. 그런데 이 반복이 어떻게 가능한지, 그 근간에는 이터레이터(iterator)와 제너레이터(generator)라는 두 개념이 있습니다.이번 포스트에서는 이 두 개념의 차이점과 공통점, 그리고 언제, 왜 사용하는지를 명확히 정리해볼게요.🧩 이터레이터(iterator)란?이터레이터는 값을 하나씩 차례로 꺼낼 수 있는 객체입니다. 반복 가능한 객체(iterable)에서 iter() 함수를 사용하면 이터레이터가 생성되고, next()를 호출하면 하나씩 요소를 반환합니다. __iter__() 메서드를 통해 이터러블이 되고__next__() 메서드를 통해 값을 하나씩 반환합니다.특징메모리에 모든 값을 저장하지 않고 순차적으로 처리반복이 끝..

Pandas groupby 완전 정복: 집계부터 고급 활용까지

Pandas의 groupby()는 데이터 분석에 있어 가장 핵심적인 도구 중 하나입니다. 데이터를 그룹별로 나누고(split), 각 그룹에 연산을 적용하고(apply), 결과를 결합(combine)하는 방식으로 작동합니다. 이번 포스트에서는 groupby()의 기본 사용법부터 agg, apply, transform 등 고급 기능까지 모두 다뤄보겠습니다. groupby 작동 방식groupby()는 내부적으로 아래 세 가지 단계를 거쳐 동작합니다:Split (분할): 지정한 컬럼의 값에 따라 데이터를 여러 그룹으로 나눕니다.Apply (적용): 각 그룹에 대해 함수나 연산을 적용합니다 (mean(), sum(), 사용자 정의 함수 등).Combine (결합): 그룹별 결과를 하나의 객체로 합칩니다.이러한 구..

Pandas pivot_table() 완전 정복

pivot_table()이란?pivot_table()은 엑셀의 피벗 테이블처럼데이터를 요약, 집계, 재구성하는 데 쓰이는 함수입니다.기본적으로는 pivot()과 비슷하지만,중복 데이터 처리와 다양한 집계함수 사용이 가능하다는 점이 가장 큰 차이!   기본 문법pd.pivot_table( data, # DataFrame index=None, # 행 인덱스로 사용할 컬럼 columns=None, # 열 인덱스로 사용할 컬럼 values=None, # 집계할 값 aggfunc='mean' # 집계 함수 (기본값은 평균))   예제 데이터import pandas as pddf = pd.DataFrame({ '..

Pandas 데이터 포맷 전환: melt()와 pivot() 완전 정리

앞서 stack()과 unstack()으로 인덱스를 기준으로 데이터 구조를 전환하는 방법을 배웠습니다.이번에는 melt()와 pivot()을 통해 컬럼을 기준으로 데이터 포맷을 자유롭게 변환해보겠습니다.melt() → Wide → Long 형태로 변환pivot() → Long → Wide 형태로 변환이 두 함수는 데이터 시각화, 머신러닝 전처리, 분석 보고서 정리에 꼭 필요한 핵심 기능입니다.  예제 데이터 준비import pandas as pddf = pd.DataFrame({ 'student': ['혜선', '종훈', '지웅'], 'math': [85, 90, 95], 'english': [80, 88, 92]})print(df) Wide 포맷 (원본) student math e..

Pandas 멀티인덱스 다루기: stack()과 unstack() 정리

Pandas에서는 데이터 분석을 하다 보면 다차원 구조의 데이터를 다뤄야 할 일이 많습니다.이때 매우 유용한 도구가 바로 stack()과 unstack()입니다.stack() → 열(column) 을 행(row) 으로 바꾸기unstack() → 행(row) 을 열(column) 로 바꾸기이 두 함수는 인덱스를 축 방향으로 재구성하는 데 매우 강력합니다. 특히 groupby()나 pivot_table()과 함께 자주 쓰이죠.   stack()이란? stack()은 열(column) 을 행의 인덱스 아래로 쌓는 함수입니다.다시 말해, 열을 행으로 바꿔서 더 깊은 인덱스 구조(MultiIndex)를 만든다고 볼 수 있죠.import pandas as pddf = pd.DataFrame({ 'region'..

Pandas에서 함수형 방식으로 데이터프레임 다루기

왜 apply와 lambda를 써야 할까?for문으로 데이터프레임 처리하려다 속도나 가독성 때문에 고민해본 적 있나요? apply()와 lambda를 쓰면 반복문 없이도 각 행/열에 함수를 적용할 수 있어요.  lambda란?f = lambda x: x * 2print(f(3)) # 결과: 6 한 줄짜리 함수 만들기함수 이름 없이도 임시적으로 사용할 수 있음 비교: 일반 함수 vs lambda# 일반 함수def double(x): return x * 2# 동일한 lambda 함수lambda x: x * 2 차이점은 lambda는 임시적이고 짧은 함수에 적합하며,apply()처럼 인라인에서 바로 함수를 써야 할 때 코드가 훨씬 간결해집니다.  apply()란?import pandas as pddf ..