
벌써 우리FISA에 입과한지 2주차가 되었다. 시간이 매우 빠르게 느껴진다.
1주차 보다 친해진 분들도 많고, 여전히 어렵지만 파이썬을 배우는 것도 익숙해지고 있는 주차이다.
[2주차 총 요약]
- 2주차에는 Python을 이용한 기초적 데이터 분석과 시각화 기법을 배웠다. (with NumPy, Pandas, Matplotlib and Seaborn)
- 비전공자라 몰랐는데, 코드를 공유하고 협업을 통해 코드를 짜는게 생각보다 많이 도움이 되고 재미있다.

Python의 클래스 개념을 이해하고 활용하는 방법에 대해 학습했습니다. 클래스는 객체 지향 프로그래밍의 핵심 요소로, 복잡한 데이터 구조와 기능을 효율적으로 관리할 수 있게 해줍니다. 수업에서는 클래스 정의, 속성 및 메서드, 상속 등을 다루었습니다.
Python 클래스 예제
class Student: def __init__(self, name, age, grade): self.name = name self.age = age self.grade = grade def get_info(self): return f"Name: {self.name}, Age: {self.age}, Grade: {self.grade}" student = Student("John Doe", 20, "A") print(student.get_info())
- 클래스 정의: class Student:를 통해 Student라는 이름의 클래스를 정의
- 생성자 메서드 '__init__'
- '__init__(self, name, age, grade) '메서드는 클래스의 생성자(constructor)로, 객체가 생성될 때 자동으로 호출ehla
- 'self'는 생성된 객체 자신을 참조하며, name, age, grade를 인스턴스 변수로 초기화- 인스턴스 메서드 ' get_info': 'get_info(self)' 메서드는 학생의 정보를 문자열로 반환
- 객체 생성 및 메서드 호출 :
- 'student = Student("John Doe", 20, "A")'를 통해 'Student' 클래스의 인스턴스를 생성
- 'print(student.get_info())'를 통해 'get_info' 메서드를 호출하여 학생의 정보를 출력
🤔(개인적 후기) 개인적을 클래스와 같이 구조가 여러개 엮이면 정리가 잘 안돼서 어려워 하는 것 같다.
❗(유의할 점)
NumPy는 고성능 수치 계산을 위한 패키지로, 특히 배열 및 행렬 연산에 유용합니다. 수업에서는 NumPy의 기본 사용법, 배열 생성 및 조작, 수학 및 통계 연산 등을 실습했습니다. 예를 들어, 배열의 합과 평균을 구하는 간단한 코드부터 시작해서 고급 연산까지 다루었습니다.
NumPy 배열 연산 예제
import numpy as np scores = np.array([80, 90, 85, 95, 88]) total = np.sum(scores) average = np.mean(scores) print(f"Total: {total}, Average: {average}")
- 라이브러리 임포트: 'import numpy as np'를 통해 NumPy 라이브러리를 'np'라는 이름으로 임포트함
- 배열 생성: 'scores = np.array([80, 90, 85, 95, 88])'를 통해 'scores'라는 1차원 배열을 생성
- 합계 계산: 'total = np.sum(scores)'를 통해 'scores' 배열의 모든 요소를 합산하여 'total' 변수에 저장
- 평균 계산: 'average = np.mean(scores)'를 통해 'scores' 배열의 평균 값을 계산하여 'average' 변수에 저장
- 결과 출력: 'print(f"Total: {total}, Average: {average}")'를 통해 합계와 평균을 출력
🤔(개인적 후기) 코딩으로 수학 문제를 풀어본 적이 없어서, 코드를 통해 수학 연산 자체를 표현하는 과정이 헷갈렸다. 지속적 연습이 필요해 보인다.
❗(유의할 점)
Pandas는 데이터 조작 및 분석에 매우 유용한 라이브러리입니다. Pandas를 사용하면 데이터 프레임을 통해 대용량 데이터를 효율적으로 처리하고 분석할 수 있습니다. 수업에서는 데이터 프레임 생성, 데이터 정렬 및 필터링, 그룹화 및 집계 등의 기능을 학습했습니다. 또한, 실습을 통해 데이터 전처리와 변환 작업을 수행했습니다.
Pandas 데이터 프레임 예제
import pandas as pd data = { 'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35], 'Score': [85, 90, 95] } df = pd.DataFrame(data) print(df) df_sorted = df.sort_values(by='Age', ascending=False) print(df_sorted)
- 라이브러리 임포트: import pandas as pd를 통해 Pandas 라이브러리를 pd라는 이름으로 임포트
- 데이터 딕셔너리 생성: data라는 딕셔너리를 생성하여 세 개의 키('Name', 'Age', 'Score')와 각각의 값을 리스트 형태로 정의
- 데이터 프레임 생성:
- df = pd.DataFrame(data)를 통해 data 딕셔너리를 바탕으로 데이터 프레임 df를 생성
- print(df)를 통해 데이터 프레임을 출력하여 생성된 내용을 확인- 데이터 프레임 정렬:
- df_sorted = df.sort_values(by='Age', ascending=False)를 통해 df 데이터 프레임을 'Age' 컬럼을 기준으로 내림차순으로 정렬하여 df_sorted에 저장
- print(df_sorted)를 통해 정렬된 데이터 프레임을 출력
🤔(개인적 후기) 슬슬 빅분기 공부를 하던 범위가 나오고 있다. 😌 드디어 머리가 조금은 쉴 수 있다. 🤗
❗(유의할 점)
# 데이터 프레임을 나이(Age) 기준으로 내림차순 정렬, 원본 데이터 프레임에 바로 변경
df.sort_values(by='Age', ascending=False, inplace=True)
Matplotlib는 다양한 시각화 기능을 제공하는 라이브러리로, 데이터의 분포와 관계를 직관적으로 파악할 수 있게 해줍니다. 수업에서는 기본적인 선 그래프, 막대 그래프, 히스토그램, 산점도 등을 그리는 방법을 배웠습니다. 또한, 그래프의 스타일과 레이아웃을 설정하는 방법도 학습했습니다 .
Matplotlib 시각화 예제
import matplotlib.pyplot as plt x = [1, 2, 3, 4, 5] y = [2, 3, 5, 7, 11] plt.plot(x, y, marker='o') plt.title("Sample Line Plot") plt.xlabel("X-axis") plt.ylabel("Y-axis") plt.show()
- 라이브러리 임포트: import matplotlib.pyplot as plt를 통해 Matplotlib의 pyplot 모듈을 plt라는 이름으로 임포트
- 데이터 정의: x와 y 리스트를 정의하여 플롯에 사용할 데이터를 준비
- 라인 플롯 생성:
- plt.plot(x, y, marker='o')를 통해 x와 y 데이터를 라인 플롯으로 생성
- marker='o' 옵션을 사용하여 데이터 포인트에 원형 마커를 추가- 제목 및 축 레이블 설정:
- plt.title("Sample Line Plot")를 통해 플롯의 제목을 설정
- plt.xlabel("X-axis")를 통해 X축의 레이블을 설정
- plt.ylabel("Y-axis")를 통해 Y축의 레이블을 설정- 플롯 표시:
- plt.show()를 통해 플롯을 화면에 표시
🤔(개인적 후기) EDA를 계획할 때, 빠르게 데이터를 파악하는데 도움이 될 것 같다.
❗(유의할 점)
Seaborn은 Matplotlib를 기반으로 한 고급 시각화 라이브러리로, 통계적 데이터 시각화에 강력한 기능을 제공합니다. 수업에서는 Seaborn의 기본 설정, 다양한 플롯(분포도, 회귀선, 막대 그래프 등) 그리는 방법을 다루었습니다. 특히, 데이터 프레임과의 연계성을 통해 복잡한 데이터 시각화를 쉽게 구현할 수 있었습니다 .
Matplotlib 시각화 예제
● 라이브러리 임포트:import seaborn as sns import pandas as pd import matplotlib.pyplot as plt df = sns.load_dataset("iris") sns.pairplot(df, hue='species') plt.show()
- import seaborn as sns를 통해 Seaborn 라이브러리를 sns라는 이름으로 임포트
- import pandas as pd를 통해 Pandas 라이브러리를 pd라는 이름으로 임포트
- import matplotlib.pyplot as plt를 통해 Matplotlib의 pyplot 모듈을 plt라는 이름으로 임포트
● 데이터셋 로드: df = sns.load_dataset("iris")를 통해 Seaborn의 내장 데이터셋인 "iris" 데이터를 로드하여 데이터 프레임 df에 저장
● Pair Plot 생성: sns.pairplot(df, hue='species')를 통해 df 데이터 프레임의 각 변수 쌍에 대해 산점도를 그리고, hue='species'를 사용하여 각 종(species)에 따라 색상을 다르게 표시
● 플롯 표시: plt.show()를 통해 생성된 플롯을 화면에 표시
🤔(개인적 후기) R을 사용했던 나로서는, 이렇게 상세하게 그래프 안의 내용을 커스터마이징 할 수 있는 점이 매우 유용해 보였다. 위에서 모두 설명하진 못했지만, 실제 수업시간에는 폰트 크기/ 글씨 굵기/ 글씨 회정 등 다양하게 그래프를 커스터마이징 할 수 있는 코드를 배웠다. 예전에 논문을 쓸 때 revision으로 시각화를 조금 더 해달라는 피드백을 받은 적 있는데, 파이썬을 조금 더 잘했더라면 더욱 보기 좋은(시각화가 잘된) 그래프가 완성 되었지 않았을까 생각이 들었다.
❗(유의할 점)
Numpy와 Pandas 기초부터 실습예제까지 활용하여 수업이 진행되어 내용을 이해하기에 용이했다. 또한 데이터 시각화를 통해 빠르게 데이터를 파악하고, 그래프를 커스터마이징 할 수 있는 코드를 알려주셔서 향후 시각화가 필요한 업무에 적용 할 수 있을 기회가 있지 않을까 싶다.
✅ 클래스 생성을 배우고 난 후, 실습으로 팀 단위로 코드를 짜고 코드리뷰를 진행 함
✅ 실습 내용: 마켓컬리의 회원 등급을 모방하여 일반 회원, 프렌즈, 퍼플 회원을 클래스로 구현하고, 각 회원이 제품을 구매할 때의 행동을 코드로 작성 함 (작성한 코드는 아래의 더보기에 있습니다.)
작성한 코드
클래스 생성
class Product: # code: 제품번호, name: 상품명, num: 상품 갯수, price: 상품가격 def __init__(self, code, name, num, price): self.code = code self.name = name self.num = num self.price = price class Plain: # member_id: 회원아이디, name: 이름, point: 적립률, review_point: 더블 적립 여부, stack_point: 누적 적립금 def __init__(self, member_id, name): self.member_id = member_id self.name = name self.point = 0.005 self.review_point = False self.stack_point = 0 # 상품 구매시 포인트 적립 및 누적포인트, 더블 후기 가능 여부 출력 def buy(self, product, num): if isinstance(product, Product): print(f'{product.name}을(를) 구매하였습니다.{round(product.price * self.point)} 포인트 적립완료') self.stack_point += round(product.price * self.point) print(f'누적포인트 : {self.stack_point}') print(self.double_review) else: print('바코드를 읽을 수 없습니다.') # 더블 후기 가능 여부 판단 @property def double_review(self): if self.review_point: return '후기 적립금이 두 배로 적립됩니다.' else: return '후기 적립금은 기본 적립률로 적립됩니다.' class Friends(Plain): # point: 적립률, coupon: 잔여 쿠폰 갯수 def __init__(self, member_id, name): super().__init__(member_id, name) self.point = 0.01 self.coupon = 3 # 재정의 - 쿠폰 사용 여부 추가 def buy(self, product, num): if isinstance(product, Product): print(f'{product.name}을(를) 구매하였습니다.{round(product.price * self.point)} 포인트 적립완료') self.stack_point +=round(product.price * self.point) print(f'누적포인트 : {self.stack_point}') print(self.double_review) if self.coupon > 0: self.coupon -= 1 print(f'쿠폰이 1장 사용되었습니다. (남은 쿠폰 : {self.coupon})') else: print('바코드를 읽을 수 없습니다.') class Purple(Friends): # point: 적립률, coupon: 잔여 쿠폰 갯수, review_point: 더블 적립 여부 def __init__(self, member_id, name): super().__init__(member_id, name) self.coupon = 4 self.point = 0.07 self.review_point = True # 재정의
시연을 위한 테스트용 코드
rippie = Product('code0001' ,'립파이', 10, 2000) ppoddo = Product('code0002' ,'뽀또', 10, 1000) member1 = Plain('aaa', '짱구') member2 = Friends('bbb', '짱아') member3 = Purple('ccc', '철수')member1.buy(rippie, 1) print() member2.buy(rippie, 1) print() member3.buy(rippie, 1)mogu = '모구모구' member1.buy(mogu, 1)
👥 (팀 프로젝트 후기)
사실 수업시간에 모르는 것에 대한 질문을 많이 해본 상태라, 팀원들과 사이가 좋은 상태였다. (팀원들 짱 착함) 그래서 그런지 정말 자유롭게 의견을 교환하고, 코드를 작성하여 즐겁게 팀프로젝트를 진행 할 수 있었다.
특히, 서로의 백그라운드(경험)가 다른 사람들 끼리 모여서 그런지, 생각의 방향이 다른게 흥미로웠다. 예를 들어, 나는 전략 기획쪽에서 일을해서 그런지 사용자의 시나리오를 생각해보는게 익숙했고, 개발을 하시던 분들은 잘 구조화된 코드를 정말 빠르게 짜고, 나의 아이디어까지 디벨롭한 피드백을 주셨다.
덕분에 개발에 필요한 지식도 얻고, 앞으로의 팀 프로젝트도 기대되는 시간을 가질 수 있었다.
🎙️이 부분에 대해 정말 말하고 싶었다.
✅ 본 수업 과정에서는 아래의 이미지와 같이, 실습 예제를 주면 아래에 각자의 코드를 공유할 수 있도록 엑셀에 마련해 놓았다.

✅ 그런데 이게 정말 도움이 많이 된다. 같은 문제에도 정말 다양한 코드가 사용되고, 다양한 백그라운드를 가진 동기들이 있다보니 그 코드의 특성도 다양하다.
✅ 쉬는 시간마다 동기들의 신기하거나 마음에 드는 코드들을 보면서, 수학의 여러 풀이 방법을 찾아낸듯한 쾌감이 느껴진다. (속마음 🗯️: 동기들 genius!)
🎙️ 결론: 코드 공유는 역시 옳다.
초반에 선생님의 도움으로 랜덤으로 동기분들과 매칭되어 밥을 먹었다. 하지만 이제는 마음 맞는 동기분 들끼리 밥을 먹거나, 혼자 먹는 동기분들도 보인다. 각자 편하게 분위기를 즐기고 있는 듯 하다.
| 나는 김밥펨에 들어갔다. 김밥 조아 🥰 | 상암동 식후땡 망고 짱맛 🤤 (고망고로 오세여) |
동동 꽈배기 완전 겉바속촉 맛있어요 😭 |
![]() |
![]() |
![]() |
| 과자가 넘쳐나서 살이 쪗어요.. 😭 | 종종 들어오셔서 선물을 주고 가시는데, 이번껀 특히 마음에 들었다. 특히 멀티포트와 손풍기! 멀티포트 집에서 당장 쓰는중. 손풍기도 마침 장마철이라 동기들이랑 우산뒤에 신발 넣어놓고 몰래 열심히 말렸따 ㅋㅋㅋㅋㅋ |
![]() |
![]() |
무엇보다 동기들이 너무 착하고 재밌다. 굿뜨 👍
| [우리 FISA 3기 AI엔지니어링] 5주차 후기 (학습정리, 회고) (0) | 2024.08.11 |
|---|---|
| [우리 FISA 3기 AI엔지니어링] 3주차 후기 (학습정리, 회고) (0) | 2024.07.28 |