1월 22일에 KT 에이블 스쿨에서 최종 합격했고, 2월 20일부터 교육이 시작되었습니다. AI와 DX를 합쳐서 약 600명 정도의 인원이었으며, AI 트랙의 동기는 약 300명 정도였던 것 같습니다.
교육 시작 당일인 2월 20일에는 교육은 진행되지 않았지만, 에이블에 대한 설명과 3, 4기 선배님들의 후기, 그리고 질의응답 시간이 있었습니다. 또한, 카이스트 교수님의 강연도 있었는데, 새로운 이야기를 듣게 되어서 즐거운 시간이었습니다
1주차 학습 과정에서 Git과 Python, 그리고 Python 라이브러리인 NumPy와 Pandas 에 대해 배웠습니다. 이전에 Git을 사용해 본 경험은 있었으나, 커밋 간의 'merge'를 실행하는 방식인 '3-way merge' 전략이라 불리는 것을 이번에 처음으로 알게 되었습니다.
Me | Base | Other | 2 way merge | 3 way merge |
---|---|---|---|---|
A | A | ? | ||
B | B | B | B | B |
1 | C | 2 | ? | ? |
D | ? |
개념: 동일한 파일의 두 가지 버전(예: Me와 Other)만 비교하여 변화를 결합하는 전략입니다. 이 경우 Base(기준이 되는 상태)는 고려되지 않습니다.
한계: 변화된 사항들의 출처와 각 변경 사항이 어떻게 발생했는지 파악하기 어려워 병합 충돌(conflict) 해결이 더 복잡해질 수 있습니다.
전략: 현재 브랜치(Me), 대상 브랜치(Other), 그리고 두 브랜치의 공통 조상(Base)을 비교하여 병합하는 전략입니다. 이 방식은 최신 공통 조상을 참조하여 두 브랜치의 변경을 merge합니다.
장점: 충돌이 났을 때 원인을 더 쉽게 파악할 수 있어, 더 정확하고 효율적인 충돌 해결이 가능합니다. 또한, 기준 트리를 생성하여 충돌을 덜 일으키고 문제를 발견하며 처리할 수 있도록 돕습니다.
merge의 default 값이며, 위에 설명한 방식과도 같습니다.
즉 fast forward면 새로운 커밋을 생성하지 않고 fast forward가 아니면 merge 커밋을 생성합니다.
$ git merge -ff master # -ff 는 생략이 가능함
만약 fast forward 일 경우에도 무조건 merge 커밋을 남깁니다.
$ git merge --no-ff master
$ git log --oneline
(커밋해쉬) (HEAD -> master) Merge branch 'master'
스쿼시란 모든 커밋을 하나의 커밋으로 합친 뒤 merge를 진행합니다.
커밋 히스토리를 깔끔하게 관리할 수 있는 장점이 있습니다.
$ git merge --squash master
먼저 이 수업을 들으면서 드는 생각은 왜 파이썬을 사용해서 데이터 분석에 많이 쓰일까 라는 의문이었습니다.
검색을 해보며 나온 결론은 R과 Python 둘 다 많이 쓰이고 각 계층에 맞는 언어를 선택해서 쓰는 것이 좋지만 아무래도 파이썬이 직관적이고 배우기 쉽다는 장점 때문에 파이썬을 많이 택하고 사용하는 것 같습니다! 참고자료 [1] [2]
Python은 인터프리터 언어(소스 코드를 한줄 씩 해석한 후 그때그때 실행해 결과를 바로 확인할 수 있는 언어를 말한다)입니다.
- 파이썬은 사람이 생각하는 방식대로 표현이 가능하다.
if '맹구' in ['철수','영희','맹구']: print("맹구가 있습니다.")
- 문법이 매우 쉽다.
- 파이썬은 오픈소스이다.
-> 따라서 무료이고 개발자가 원하는 대부분의 프로그램을 만들 수 있다
파이썬의 라이브러리로써 고성능의 수치계산을 위해 제작됨
또한 C 기반으로 구현되어 있어 연산 속도가 빠름
- 넘파이의 배열은 모든 원소가 같은 자료형이어야 한다.
-> 넘파이는 데이터 타입을 일관되게 유지함으로써 메모리를 효율적으로 사용함- 1차원 배열을 Vecter 2차원부터는 행렬이라고 한다
- 선형대수(행렬을 이용한 연산)를 이용한 연산이 가능하다
데이터 분석(Data Analysis)를 위해 널리 사용되는 파이썬 라이브러리
- 데이터 분석과 표 형태의 데이터를 다루는데 특화됨
- 데이터 셋을 이용한 다양한 통계 처리 기능 제공
- Series와 Data Frame과 같은 자체적인 데이터 구조를 사용
- 위와 같은 데이터 구조를 이용해 데이터 관리가 유용함
Series(1차원) : 같은 유형의 배열로 표시된 1차원 데이터
DataFrame(2차원) : 유형이 지정되어있으며, 크기가 가변적인 테이블 형식의 2차원 데이터 -> 행렬
두개의 큰 차이는 Series는 컬럼이 한 개, DataFrame은 컬럼이 여러 개인 데이터 구조체라는 점이다.
또한, 판다스의 모든 데이터 구조는 값을 변경할 수 있지만 불변성을 선호한다.
함수의 종류들과 그거에 관한 내용은 위와 같이 노션으로 관리할 것 같습니다! 이미 익숙한 기능도 많지만 처음 보는 것들이 많아서 데이터를 이리저리 다뤄보면서 친해져야겠다는 생각이 들었습니다.
또한 이외에도 알고리즘 스터디와 CS면접 스터디를 시작하게 되었습니다.
이렇게 제대로 스터디를 해보는 경험은 처음이라 기대가 되면서도 걱정이 되지만 노력해서 무언가를 얻어 가는 시간이 되었으면 좋겠습니다.
KT 에이블 함께하는 분들 모두 파이팅 해요!
틀린 부분은 언제나 댓글로 지적 부탁드립니다!