[LG U+ Why Not SW Camp 7기] 6월 3주차 회고

배형진·2025년 7월 3일

Why not SW 부트캠프

목록 보기
5/11
post-thumbnail

🚀 3주차 학습 목표 및 개요

이번 주에는 넘파이 실습 문제 풀이를 통해 배열 연산 및 활용 능력을 심화하였습니다 또한, 판다스의 핵심 자료구조인 Series와 DataFrame을 익히고, 데이터 분석의 필수 과정인 데이터 전처리의 중요성과 기본적인 방법을 학습했습니다. 궁극적으로는 [데이터 처리 문제에 대한 능동적인 해결 능력 향상]을 목표로 삼았습니다.


📚 주요 학습 내용 정리

1. 넘파이(NumPy) 활용 심화 및 실습

이번 주는 3차원 행렬 인덱싱 연습 문제를 풀면서 넘파이 개념에 대한 복습을 하였습니다. 이를 통해 배열 데이터에 접근하는 기본적인 이해를 다졌습니다. 이어서 불리언 인덱싱팬시 인덱싱 등 다양한 인덱싱 기법을 학습하며, 조건에 따라 데이터를 선택하고 조작하는 방법을 익혔습니다.

특히, 쇼핑몰 매출 데이터 분석 실습을 해보면서 주어진 데이터를 바탕으로 일일 평균 매출과 같은 원하는 데이터를 추출하고 계산하여 넘파이가 실제로 어떻게 활용될 수 있는지 체험을 하였습니다. 아직 기초적인 수준이었지만, 실제 데이터 분석이 어떤 식으로 이루어지는지 간단하게나마 경험할 수 있어서 흥미로웠습니다.

또한, 남은 오전 시간에는 넘파이 랩업 문제를 풀면서 배운 내용을 정리하고 응용하는 연습을 했습니다.

2. 판다스(Pandas) 기본 구조 및 활용

이번 주부터 판다스 라이브러리 학습을 시작했습니다. 판다스의 핵심 구조인 SeriesDataFrame의 생성 방법과 기본적인 인덱싱/슬라이싱에 대해 배웠습니다. 데이터를 원하는 형태로 저장하고 불러오는 연습을 했으며, 강사님이 제공해주신 데이터를 통해 배운 내용을 복습하는 시간을 가졌습니다.

이어서 DataFrame의 다양한 메소드행/열 추가, 삭제, 수정 등 데이터 조작 도구들을 학습했습니다.

3. 파일 입출력 및 데이터 직렬화/역직렬화

다양한 형태의 파일을 다루는 방법을 배웠습니다. CSV와 같은 여러 형태의 파일을 생성하고 불러오는 방법을 익혔으며, 직렬화(Serialization)역직렬화(Deserialization) 개념에 대해서도 학습했습니다. (데이터를 효율적으로 저장하고 다시 사용할 수 있게 하는 중요한 과정)

4. 데이터 전처리(Data Preprocessing) 핵심 기법

데이터 분석의 필수 과정인 데이터 전처리에 대해 다루었습니다.

  • 데이터 처리 및 함수 적용: melt 함수를 이용해 데이터를 원하는 방식으로 가공하는 방법을 배웠고, apply 함수를 통해 데이터에 사용자 정의 함수를 적용하는 법을 공부했습니다.
  • 데이터 결합: concat 함수를 사용하여 행/열 방향 원하는 대로 데이터를 결합하는 법을 학습했습니다. 또한, mergeset_index를 이용한 데이터 병합, 가공 방법을 스터디했습니다.
  • 데이터 집계: groupby에서 더 나아가 aggregation을 이용해 데이터를 집계하는 방법을 학습하여 통계 계산을 효율적으로 수행하는 방법을 익혔습니다.
  • 결측치 처리: 데이터 속에 결측치(Missing Value)가 들어 있는 경우, 어디에 얼마나 분포해 있는지를 확인하고 해당 데이터를 다른 요소로 대체하는 방법을 학습했습니다. (데이터의 정확성을 높이는 중요한 과정)
  • 시계열 데이터 처리: 데이터 요소에 날짜/시간 관련 데이터가 있을 때, 이를 datetime 형식에 맞춰 변환하는 방법을 학습했습니다

5. 데이터 시각화 기초

데이터 시각화의 기본을 다루었습니다.

  • 데이터 시각화: 저번부터 조금씩 사용해봤던 Matplotlib을 본격적으로 사용하여 데이터를 그래프의 제목, 축 레이블, 범례 등 세부 설정과 함께 다양한 형태의 그래프(예: 막대 그래프, 선 그래프)로 나타내는 연습을 했습니다.

🎮 실습/과제 수행 및 문제 해결 과정

이번 주 넘파이 실습 문제 - 쇼핑몰 매출 데이터 분석을 수행하면서 겪었던 가장 기억에 남는 문제와 해결 과정입니다.

문제 3. 7일 단위로 매출 합계 계산하기

# 내가 한 방법
sales_data[:28].reshape(4,7)

# 해답
np.pad(sales_data,(0,5), 'constant', constant_values=0).reshape(5,7)

위 코드에서 볼 수 있듯이 저는 47 형태의 28일까지만 나오는 코드를 작성하였는데 값이 없는 상태에서 57 행렬을 만드는 것에 어려움을 겪었습니다.
이 문제는 스스로 해결하지는 못했지만 답안을 통해 pad의 존재를 알게되었고 넘파이의 pad함수를 통해 constant로 지정된 값을 채울 수 있다는 것을 배웠습니다.


추가문제: 주차별 평균 계산

# 1. 내가 푼 방법
np.mean(wd1)
for i in range(5):
    if i !=4:
        a=wd[i,:]
        print(f'{np.mean(a):.2f}')
    else:
       print(f'{np.mean(wd[4, :2]):.2f}')

# 2. 강사님이 푸신 방법
import matplotlib.pyplot as plt
weekly_data_1 = wd.copy().astype(float)
weekly_data_1[weekly_data_1==0] = np.nan

weekly_mean = np.nanmean(weekly_data_1, axis=1)
print(weekly_mean)
plt.plot(weekly_mean)

저는 if문을 이용하여 빈 날짜들이 있는 행을 따로 빼고 주차별 평균을 for문으로 반복을 시키는 코드를 작성하였습니다.
하지만 강사님께서 작성한 코드와 비교를 해보니 날짜가 빈 0인 값들을 결측치로 처리하여 평균에 포함되지 않도록 제가 짠 코드와 비교해서 간단하게 시각화까지 포함한 코드를 작성하셨습니다.

덕분에 이번 실습을 통해서 문제해결을 위해서는 한 가지 방법을 생각해냈다고 넘어기지 말고 다양한 접근법에 대해 고민을 해야겠다고 느꼈습니다.
또한 많은 실습 경험을 통해 더욱 빠르고 간단한 코드를 생각하는 사고력을 길려야겠다는 생각이 들었습니다.


🔮 주간 회고 (4L 방식)

1. Liked (좋았던 점)

  • 실제 데이터를 다루는 실습이 많아 배운 내용을 즉시 적용할 수 있어 몰입도가 높았다.
  • 넘파이보다 더 직관적인 판다스의 표현력과 유연성에 흥미를 느꼈다.
  • 팀 프로젝트 데이터를 가공하며 “배운 걸 써먹는 경험”이 재밌고 의미 있었다.
  • 랩업 문제와 퀴즈를 통해 복습 + 성취감을 동시에 느낄 수 있었다.

2. Learned (배운 점)

  • 넘파이 고급 인덱싱 (불리언, 팬시, 축 개념), 실습을 통한 3차원 배열 다루기
  • 판다스 입문부터 고급 기능까지: 시리즈/데이터프레임 생성, apply, concat, merge, groupby, set_index
  • 파일 입출력과 직렬화 개념, 다양한 데이터 형식 읽고 저장하는 법
  • 데이터 전처리 및 시각화(matplotlib) 활용하여 데이터 가공 및 그래프 표현

3. Lacked (부족했던 점)

  • set_index와 병합 관련 함수들의 작동 원리에 대한 이해가 얕았다
  • 시계열 데이터나 matplotlib 그래프 관련 개념의 정리 필요
  • VSCode 상에서 파일 입출력을 다루는 실제 사용 흐름이 익숙하지 않았다
  • lociloc 메소드의 요소가 헷갈렸다

4. Longed for (더 발전하고 싶은 점)

  • 시계열 데이터와 데이터 시각화 기능을 노션에 정리해서 내 것으로 만들자
  • 향후 프로젝트를 대비해 다양한 데이터셋을 직접 불러와 실습해보며 자신감을 더 쌓고 싶다

0개의 댓글