ecole42

python-for-data-science

python-for-data-science는 ecole42의 Python 데이터 사이언스 학습 프로젝트로, 기본 Python 문법부터 NumPy, Pandas를 활용한 데이터 처리, 객체지향 프로그래밍까지 단계별로 학습한다. 4개 모듈을 통해 Python 기초, NumPy 배열 처리 및 이미지 처리, Pandas 데이터 분석 및 시각화, 객체지향 프로그래밍(추상 클래스, 다중 상속, 연산자 오버로딩), 함수형 프로그래밍(클로저, 데코레이터) 등을 실습한다

Python

개요

Python 데이터 사이언스를 위한 학습 프로젝트다. 기본 Python 문법부터 NumPy, Pandas를 활용한 데이터 처리, 객체지향 프로그래밍까지 단계별로 학습할 수 있도록 구성되어 있다.

프로젝트 구조

Python - 0 Starting

Python 기초 문법과 자료구조를 다루는 모듈이다.

  • ex00: 리스트, 튜플, 집합, 딕셔너리 등 기본 자료구조 사용법
  • ex01: 시간 포맷팅 (format_ft_time.py)
  • ex02: 타입 검사 (find_ft_type.py)
  • ex03: NULL 값 처리 (NULL_not_found.py)
  • ex04: 타입 판별 (whatis.py)
  • ex05: 빌딩 클래스 (building.py)
  • ex06: 문자열 필터링 (filterstring.py, ft_filter.py)
  • ex07: SOS 모스 부호 변환 (sos.py)
  • ex08: 데이터 로딩 (Loading.py)
  • ex09: Python 패키지 빌드 및 배포 (setup.py, ft_package)

Python - 1 Array

NumPy를 활용한 배열 처리 및 이미지 처리 모듈이다.

  • ex00: BMI 계산 (give_bmi.py) - 키와 몸무게 리스트를 받아 BMI를 계산하고 제한값을 적용
  • ex01: 2D 배열 슬라이싱 (array2D.py) - NumPy를 사용한 2차원 배열 처리
  • ex02: 이미지 로딩 (load_image.py) - NumPy를 사용한 이미지 파일 로딩
  • ex03: 이미지 줌 (zoom.py) - 이미지 확대/축소 처리
  • ex04: 이미지 회전 (rotate.py) - 이미지 회전 처리
  • ex05: 이미지 필터링 (pimp_image.py) - 이미지에 다양한 효과 적용

Python - 2 DataTable

Pandas를 활용한 CSV 데이터 처리 및 시각화 모듈이다.

  • ex00: CSV 파일 로딩 (load_csv.py) - Pandas를 사용한 CSV 파일 읽기
  • ex01: 기대 수명 시각화 (aff_life.py) - Matplotlib을 사용한 국가별 기대 수명 그래프
  • ex02: 인구 데이터 처리 (aff_pop.py) - 인구 데이터 분석 및 시각화
  • ex03: 기대 수명 예측 (projection_life.py) - 소득과 기대 수명 데이터를 활용한 예측

Python - 3 OOP

객체지향 프로그래밍 개념을 다루는 모듈이다.

  • ex00: 추상 클래스와 인터페이스 (S1E9.py) - ABC 모듈을 사용한 추상 클래스 구현
  • ex01: 다중 상속 (S1E7.py, S1E9.py) - 다중 상속과 메서드 해결 순서(MRO)
  • ex02: 다이아몬드 문제 (DiamondTrap.py) - 다중 상속에서 발생하는 다이아몬드 문제 해결
  • ex03: 연산자 오버로딩 (ft_calculator.py) - 매직 메서드를 사용한 연산자 오버로딩
  • ex04: 고급 연산자 오버로딩 (ft_calculator.py) - 더 복잡한 연산자 오버로딩 예제

Python - 4 Dod

기타 고급 Python 개념들을 다루는 모듈이다.

  • ex00: 통계 함수 (statistics.py) - 평균, 중앙값, 사분위수, 표준편차, 분산 계산
  • ex01: 클로저와 함수형 프로그래밍 (in_out.py) - 외부 함수와 내부 함수를 사용한 클로저 구현
  • ex02: 데코레이터와 호출 제한 (callLimit.py) - 함수 호출 횟수 제한 데코레이터
  • ex03: 학생 관리 시스템 (new_student.py) - 클래스를 활용한 학생 정보 관리

주요 기능

데이터 처리

  • NumPy를 활용한 다차원 배열 처리
  • Pandas를 활용한 CSV 데이터 로딩 및 분석
  • 이미지 처리 및 변환

통계 분석

  • 기본 통계량 계산 (평균, 중앙값, 표준편차 등)
  • 데이터 시각화 (Matplotlib)

객체지향 프로그래밍

  • 추상 클래스와 인터페이스
  • 다중 상속 및 MRO
  • 연산자 오버로딩
  • 클로저와 데코레이터

사용된 주요 라이브러리

  • NumPy: 배열 처리 및 수치 연산
  • Pandas: 데이터프레임 처리 및 CSV 파일 읽기
  • Matplotlib: 데이터 시각화

실행 방법

각 모듈의 tester.py 파일을 실행하여 해당 연습 문제를 테스트할 수 있다.

# 예시: BMI 계산 모듈 테스트
cd "Python - 1 Array/ex00"
python tester.py

학습 목표

이 프로젝트를 통해 다음을 학습할 수 있다:

  1. Python 기본 문법 및 자료구조
  2. NumPy를 활용한 배열 처리
  3. Pandas를 활용한 데이터 분석
  4. 객체지향 프로그래밍 개념
  5. 함수형 프로그래밍 기법
  6. Python 패키지 빌드 및 배포

참고사항

  • 각 모듈은 독립적으로 실행 가능하다
  • tester.py 파일을 통해 각 모듈의 기능을 테스트할 수 있다
  • 일부 모듈은 CSV 파일이나 이미지 파일이 필요하다