11 KiB
초보자를 위한 데이터 과학 기여하기
초보자를 위한 데이터 과학 커리큘럼에 관심을 가져주셔서 감사합니다! 커뮤니티의 기여를 환영합니다.
목차
행동 강령
이 프로젝트는 Microsoft 오픈 소스 행동 강령을 채택했습니다.
자세한 내용은 행동 강령 FAQ를 참조하거나 추가 질문이나 의견이 있는 경우 opencode@microsoft.com으로 연락하세요.
어떻게 기여할 수 있나요?
버그 신고
버그 신고를 작성하기 전에 기존 문제를 확인하여 중복을 피하세요. 버그 신고를 작성할 때 가능한 많은 세부 정보를 포함하세요:
- 명확하고 설명적인 제목 사용
- 문제를 재현하는 정확한 단계 설명
- 구체적인 예 제공 (코드 스니펫, 스크린샷)
- 관찰한 동작과 기대했던 동작 설명
- 환경 세부 정보 포함 (운영 체제, Python 버전, 브라우저)
개선 사항 제안
개선 사항 제안을 환영합니다! 개선 사항을 제안할 때:
- 명확하고 설명적인 제목 사용
- 제안된 개선 사항에 대한 상세한 설명 제공
- 이 개선 사항이 왜 유용한지 설명
- 다른 프로젝트에서 유사한 기능이 있다면 목록 작성
문서 기여
문서 개선은 항상 환영합니다:
- 오타 및 문법 오류 수정
- 설명의 명확성 향상
- 누락된 문서 추가
- 오래된 정보 업데이트
- 예제나 사용 사례 추가
코드 기여
다음과 같은 코드 기여를 환영합니다:
- 새로운 레슨이나 연습 문제
- 버그 수정
- 기존 노트북 개선
- 새로운 데이터셋이나 예제
- 퀴즈 애플리케이션 개선
시작하기
사전 준비
기여하기 전에 다음을 준비하세요:
- GitHub 계정
- 시스템에 Git 설치
- Python 3.7+ 및 Jupyter 설치
- Node.js 및 npm (퀴즈 앱 기여를 위한)
- 커리큘럼 구조에 대한 이해
자세한 설치 지침은 INSTALLATION.md를 참조하세요.
포크 및 클론
- GitHub에서 저장소를 포크하세요.
- 로컬에 포크를 클론하세요:
git clone https://github.com/YOUR-USERNAME/Data-Science-For-Beginners.git cd Data-Science-For-Beginners - 업스트림 원격 추가:
git remote add upstream https://github.com/microsoft/Data-Science-For-Beginners.git
브랜치 생성
작업을 위한 새 브랜치를 생성하세요:
git checkout -b feature/your-feature-name
# or
git checkout -b fix/your-bug-fix
브랜치 명명 규칙:
feature/- 새로운 기능 또는 레슨fix/- 버그 수정docs/- 문서 변경refactor/- 코드 리팩토링
기여 지침
레슨 콘텐츠에 대한 기여
레슨을 기여하거나 기존 레슨을 수정할 때:
-
기존 구조를 따르세요:
- README.md에 레슨 콘텐츠 포함
- 연습 문제를 포함한 Jupyter 노트북
- 과제 (해당되는 경우)
- 사전 및 사후 퀴즈 링크
-
다음 요소를 포함하세요:
- 명확한 학습 목표
- 단계별 설명
- 주석이 포함된 코드 예제
- 연습 문제
- 추가 자료 링크
-
접근성을 고려하세요:
- 명확하고 간단한 언어 사용
- 이미지에 대체 텍스트 제공
- 코드 주석 포함
- 다양한 학습 스타일을 고려
Jupyter 노트북에 대한 기여
-
모든 출력 지우기:
jupyter nbconvert --clear-output --inplace notebook.ipynb -
설명이 포함된 마크다운 셀 추가
-
일관된 포맷 사용:
# Import libraries at the top import pandas as pd import numpy as np import matplotlib.pyplot as plt # Use meaningful variable names # Add comments for complex operations # Follow PEP 8 style guidelines -
노트북을 완전히 테스트한 후 제출
Python 코드에 대한 기여
PEP 8 스타일 지침을 따르세요:
# Good practices
import pandas as pd
def calculate_mean(data):
"""Calculate the mean of a dataset.
Args:
data (list): List of numerical values
Returns:
float: Mean of the dataset
"""
return sum(data) / len(data)
퀴즈 앱 기여
퀴즈 애플리케이션을 수정할 때:
-
로컬에서 테스트:
cd quiz-app npm install npm run serve -
린터 실행:
npm run lint -
성공적으로 빌드:
npm run build -
Vue.js 스타일 가이드 및 기존 패턴 따르기
번역 기여
번역을 추가하거나 업데이트할 때:
translations/폴더의 구조를 따르세요.- 언어 코드를 폴더 이름으로 사용 (예: 프랑스어는
fr) - 영어 버전과 동일한 파일 구조 유지
- 퀴즈 링크에 언어 매개변수 추가:
?loc=fr - 모든 링크와 포맷을 테스트
풀 리퀘스트 프로세스
제출 전
-
최신 변경 사항으로 브랜치 업데이트:
git fetch upstream git rebase upstream/main -
변경 사항 테스트:
- 수정된 모든 노트북 실행
- 퀴즈 앱 테스트 (수정된 경우)
- 모든 링크 확인
- 철자 및 문법 오류 확인
-
변경 사항 커밋:
git add . git commit -m "Brief description of changes"명확한 커밋 메시지 작성:
- 현재 시제 사용 ("Add feature" 대신 "Added feature" 사용하지 않음)
- 명령형 사용 ("Move cursor to..." 대신 "Moves cursor to..." 사용하지 않음)
- 첫 줄은 72자 이내로 제한
- 관련 문제 및 풀 리퀘스트 참조
-
포크에 푸시:
git push origin feature/your-feature-name
풀 리퀘스트 생성
- 저장소로 이동
- "Pull requests" → "New pull request" 클릭
- "compare across forks" 클릭
- 포크와 브랜치 선택
- "Create pull request" 클릭
PR 제목 형식
다음 형식을 따르는 명확하고 설명적인 제목 사용:
[Component] Brief description
예시:
[Lesson 7] Fix Python notebook import error[Quiz App] Add German translation[Docs] Update README with new prerequisites[Fix] Correct data path in visualization lesson
PR 설명
PR 설명에 포함할 내용:
- 무엇: 어떤 변경을 했는지
- 왜: 이러한 변경이 왜 필요한지
- 어떻게: 변경을 어떻게 구현했는지
- 테스트: 변경 사항을 어떻게 테스트했는지
- 스크린샷: 시각적 변경 사항이 있다면 스크린샷 포함
- 관련 문제: 관련 문제 링크 (예: "Fixes #123")
리뷰 프로세스
- 자동화된 검사가 PR에서 실행됩니다.
- 유지 관리자가 기여를 검토합니다.
- 피드백을 반영하여 추가 커밋 작성
- 승인되면 유지 관리자가 PR을 병합합니다.
PR 병합 후
-
브랜치 삭제:
git branch -d feature/your-feature-name git push origin --delete feature/your-feature-name -
포크 업데이트:
git checkout main git pull upstream main git push origin main
스타일 지침
마크다운
- 일관된 제목 수준 사용
- 섹션 간 빈 줄 포함
- 언어 지정이 포함된 코드 블록 사용:
```python import pandas as pd ``` - 이미지에 대체 텍스트 추가:
 - 줄 길이는 적당히 유지 (약 80-100자)
Python
- PEP 8 스타일 가이드 준수
- 의미 있는 변수 이름 사용
- 함수에 docstring 추가
- 적절한 경우 타입 힌트 포함:
def process_data(df: pd.DataFrame) -> pd.DataFrame: """Process the input dataframe.""" return df
JavaScript/Vue.js
- Vue.js 2 스타일 가이드 준수
- 제공된 ESLint 구성 사용
- 모듈화된 재사용 가능한 컴포넌트 작성
- 복잡한 로직에 주석 추가
파일 구성
- 관련 파일을 함께 유지
- 설명적인 파일 이름 사용
- 기존 디렉토리 구조 따르기
- 불필요한 파일 커밋 금지 (.DS_Store, .pyc, node_modules 등)
기여자 라이선스 계약
이 프로젝트는 기여와 제안을 환영합니다. 대부분의 기여는 기여자 라이선스 계약 (CLA)에 동의해야 하며, 이를 통해 기여자가 기여를 사용할 권리를 가지고 있음을 선언합니다. 자세한 내용은 https://cla.microsoft.com을 참조하세요.
풀 리퀘스트를 제출하면 CLA 봇이 자동으로 CLA 제공 여부를 결정하고 PR에 적절히 표시합니다 (예: 라벨, 댓글). 봇이 제공하는 지침을 따르세요. 이는 CLA를 사용하는 모든 저장소에서 한 번만 수행하면 됩니다.
질문이 있나요?
- Discord 채널 #data-science-for-beginners를 확인하세요.
- Discord 커뮤니티에 참여하세요.
- 기존 문제 및 풀 리퀘스트를 검토하세요.
감사합니다!
여러분의 기여는 이 커리큘럼을 모두에게 더 나은 것으로 만듭니다. 기여해 주셔서 감사합니다!
면책 조항:
이 문서는 AI 번역 서비스 Co-op Translator를 사용하여 번역되었습니다. 정확성을 위해 노력하고 있지만, 자동 번역에는 오류나 부정확성이 포함될 수 있습니다. 원본 문서를 해당 언어로 작성된 상태에서 권위 있는 자료로 간주해야 합니다. 중요한 정보의 경우, 전문적인 인간 번역을 권장합니다. 이 번역 사용으로 인해 발생하는 오해나 잘못된 해석에 대해 당사는 책임을 지지 않습니다.