일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- 2024 정보처리기사
- playdata
- 정보처리기사 후기
- 5주차 회고
- 8주차 회고
- skn_10기
- sqld 후기
- sk 네트웍스 ai family캠프
- 2024 3회 정보처리기사
- 24주차 회고
- 21주차
- 1월 회고
- 6주차 회고
- 16주차 회고
- sk networks family ai 캠프
- 18주차 회고
- 2월 회고
- 17주차 회고
- 3주차 회고
- 22주차
- sk networks family ai camp
- sk 네트웍스 ai 캠프
- 9주차 회고
- 14주차
- 머신러닝
- 7주차 회고
- 20주차
- SQLD
- sk네트웍스 family ai 캠프
- sk family ai 캠프
- Today
- Total
kqe123 님의 블로그
[플레이데이터 SK네트웍스 Family AI 캠프 10기] 3주차 회고 본문
1. Intro
3주차도 끝이 났다! 사실 1월 26일(일)에 3주차 회고를 쓰려고 했지만, 설날이라 시골에 내려가게 되면서 결국 작성하지 못했다. 변명을 하자면... 시골에는 Wi-Fi가 없었고, 일요일부터 수요일까지 거기 있어야 했기 때문이다. 인터넷이 없으니 자연스럽게 노트북을 열 생각조차 하지 않았고, 그냥 푹 쉬었다. 😅 어쨌든 3주차엔 SQL과 크롤링을 배우고, 미니 프로젝트를 위해 github와 streamlit 사용법도 간단하게 배웠다.
2. 배웠던 내용
다 적기엔 내용이 너무 많으니 중요한 것만 골라서 적겠다.
SQL
1. JOIN이란?
- join은 크게 Inner join, Outer join으로 나뉜다.
- Inner join : 두 테이블에서 조건에 맞는 데이터만 결과로 반환
- Outer join : 두 테이블에서 조건에 맞지 않는 데이터까지 결과로 반환
- left join : A left join B일때 조건에 맞는 데이터 + 나머지 A테이블의 데이터를 반환
- right join : A right join B일때 조건에 맞는 데이터 + 나머지 B테이블의 데이터를 반환
2. JOIN의 형태
- From절 : 어떤 JOIN을 사용할지 명시 ex) from orders left join customers
- on절 : 두 테이블을 연결하는 기준 설정 ex) on a.dept = b.dept
- where절 : 특정 조건의 데이터만 필터링 ex) where a.dept = 100
- 기타 주의사항 :
- 테이블에 별칭(Alias) 사용 필요.
- GROUP BY 사용 시, SELECT에는 집계 함수 표현식이나 GROUP BY에 포함된 컬럼만 올 수 있음.
3. Query의 실행 순서
- select절 (5)
- from절 (1)
- where절 (2)
- group by절 (3)
- having절 (4)
- order by절 (6)
Python으로 Mysql 연동
1. PyMySQL이란?
- Python에서 MySQL 데이터베이스와 상호작용할 수 있도록 도와주는 라이브러리
2. PyMySQL 사용법
- pip install PyMySQL : PyMySQL 패키지 설치
- conn = pymysql.connect(...) : DB 연결을 위한 Connection 객체 생성
- conn.cursor() : DB 작업 수행을 위한 커서 생성
- cursor.execute(sql) : 해당 sql문 실행
- cursor.fetchall() : 모든 결과 반환
Github 맛보기
1. Github 내용 가져오기
- 해당 github의 repository URL 주소 복사
- Visual Studio Code → [ctrl]+[shift]+p키 → git: clone 클릭
- repository URL 주소 붙여넣기
- repository 내용을 저장할 폴더 선택
.git폴더와 함께 생성됨.
2. Github에 Branch 추가
- Visual Studio의 하단바에서 Branch 버튼 클릭 (아래 그림에선 develop)
- [create new branch] 클릭 후 원하는 이름으로 생성
- [publish Branch] 클릭
- Branch가 추가된다.
Crawling
1. Crawling이란?
- 웹 크롤링 : 웹 페이지의 텍스트를 가져오는 기술
2. Requests 라이브러리
- requests : HTTP 요청을 다룰 수 있도록 만들어진 Python 라이브러리
- requests.get() : 웹 서버에 요청을 보내고, 그 결과로 반환된 데이터를 가져오는 명령어 (html 등)
- requests.get()에 header를 붙여 실제 브라우저 요청처럼 보이게 만들어 보안 정책 회피가 가능함.
- response가 200대라면 정상이고, 400이상이라면 오류 메시지를 의미함.
3. Beautifulsoup
- beautifulsoup : HTML, XML 문서를 파싱하고, 데이터를 추출하는 라이브러리
- bs(텍스트, 파서) : HTML 텍스트를 구조적으로 분석(파싱)하고, 다루기 쉬운 객체로 변환
- find_all(특정 태그나 속성 등……): 특정 태그나 속성을 가진 모든 텍스트를 리스트로 반환
Streamlit 맛보기
1. Streamlit이란?
- Streamlit : Python 코드만으로 웹 애플리케이션을 개발 가능한 오픈소스 라이브러리
2. Streamlit의 여러 사용법
- st.title() : 제목 추가
- st.header() : 헤더 추가
- :이모티콘 태그: : 이모지 추가
- st.caption() : 캡션 추가
- st.code(문자열, language=…) : 코드 추가
- st.text() : 일반 텍스트 추가
- st.markdown(마크다운 문법) : 마크다운 추가
- st.latex() : 수식 추가
3. 미니 프로젝트에서 배운 것들
▶ .gitignore파일
- Git에서 특정 파일이나 디렉터리를 추적하지 않도록 설정하는 파일
- 특히 실행 파일, 캐시, 민감한 정보, 개발 환경 관련 파일 등을 제외하는 데 사용된다.
▶ Selenium
- beautifulsoup의 한계 : BeautifulSoup은 정적인 HTML 문서만 파싱하므로 JavaScript로 렌더링되는 동적 콘텐츠는 크롤링 할 수 없다!
- Selenium : 웹 브라우저를 자동으로 제어하고 테스트하는 도구로, 실제 브라우저를 실행하므로 JavaScript로 렌더링된 동적 콘텐츠를 크롤링 할 수 있다.
▶ Selenium ActionChains
- ElementClickInterceptedException 예외 : Selenium이 클릭하려는 요소가 실제로 화면에 있지만, 다른 요소가 그 위를 가로막고 있을 때 발생하는 예외
- 즉, 요소를 클릭하는데 어려움을 겪는다면 ActionChains의 move_to_element()를 써야함.
▶ 그 외
- DataFrame은 기본적으로 행(index),열(columns),값(values)으로 구성되며, 행을 따로 지정하지 않으면 0, 1, 2 순으로 자동 생성된다.
- df.set_index(컬럼) : 해당 컬럼을 행(index)로 변환하여 반환
- Streamlit의 st.bar_chart()는 기본적으로 DataFrame의 인덱스를 x축, 나머지 수치형 열들을 y축 데이터로 사용한다.
4. 느낀점
- Facts (내가 한 일)
SQL과 크롤링을 배우고, 미니 프로젝트를 위해 github와 streamlit 사용법도 간단하게 배웠다.
그리고 미니 프로젝트를 하면서 FAQ 크롤링과 DB에 자동차 현황 데이터 삽입을 맡았다.
- Feelings ( 나의 감정적인 반응, 느낌 )
미니 프로젝트는 원래 이틀 동안 진행될 예정이었지만, 강사님께서 시간을 더 주셨다.
하지만 우리 팀은 계획 단계에서 너무 많은 시간을 소모했고, "무엇을 할까?"에 집중한 나머지 "어떤 방식으로 어떤 결과를 만들 것인가?"에 대한 고민이 부족했다. 또한, DB명과 테이블명을 통일하지 않아 협업 과정에서 어려움을 겪었다. 그래도 최종적으로 결과물을 완성할 수 있어서 다행이지만, 다른 팀들의 프로젝트가 워낙 완성도가 높아서 상대적으로 부족해 보였던 것 같다. 물론 다시 만든다고 해도 그들보다 더 잘할 자신은 없지만, 배울 점이 많았던 미니 프로젝트였다고 생각한다. 😊
- Findings ( 배운 것 )
미니 프로젝트를 통해 계획과 통일성이 가장 중요하다는 것을 배웠다.
단순히 "무엇을 할 것인가?"를 정하는 것도 중요하지만, "어떤 방식으로 구현할 것이며, 어떤 결과를 도출할 것인가?"를 더욱 명확하게 정하는 것이 필수적이라는 걸 깨닫게 되었다. 또한, DB명과 테이블명 같은 요소들은 사전에 통일해 두어야 협업이 원활해진다는 점도 배우게 되었다.
- Future ( 미래 )
앞으로는 numpy, Pandas, DataFrame 등 여러가지 데이터 분석을 위한 툴을 배울 것이다. 내가 취미삼아 조금 만져봤던 기억은 있지만 잘은 기억 안 나는게 사실이다. 이제 진짜 AI 관련된 기술을 배우는것 같아 설레면서도 긴장이 된다.
'부트캠프 > sk 네트웍스 ai 캠프' 카테고리의 다른 글
[플레이데이터 SK네트웍스 Family AI 캠프 10기] 6주차 회고 (1) | 2025.02.16 |
---|---|
[플레이데이터 SK네트웍스 Family AI 캠프 10기] 5주차 회고 (1) | 2025.02.09 |
[플레이데이터 SK네트웍스 Family AI 캠프 10기] 1월(4주차) 회고 (0) | 2025.02.01 |
[플레이데이터 SK네트웍스 Family AI 캠프 10기] 2주차 회고 (0) | 2025.01.19 |
[플레이데이터 SK네트웍스 Family AI 캠프 10기] 1주차 회고 (0) | 2025.01.12 |