728x90
이번주는 실습 복습 위주로 혼자 이해하고 처음부터 끝까지 다 지우고 해보느라 따로 작성해 놓은 건 없어서...
키워드 위주로 (+ 설 때 시간내서 이해안되고 다시 보면 좋을 것 같은 부분만 따로 추가로 올리자)
◈ 4주차 ( 1/16~1/19 ) Key Word
더보기
🦁 01/ 16 (TIL 1일차)
■inspect → 네트워크 ● 주로쓰는 기능 1) Fetch/XHR 2) JS 3) DOCS(문서) | ■ verify=False ● SSL인증서 확인 과정 생략 ※SSL(Secure Sockets Layer)란? ● 보안 소켓 계층(Secure Sockets Layer, SSL)은 서버와 클라이언트 사이에 암호화된 링크를 구성하기 위한 표준 보안 기술 |
■Google Colab (수정 ->모든출력 지우기) ● 코드결과값이 출력되어있으면 문제를 찾기어려움 | ■ 아무 셀이나 실행 ?! ● 모듈이 import 되지 않는다 ● 변수에 원하는 값이 들어가지 않는다 ● 변수가 정의되지 않는다는 메세지 많이뜬다 |
■ 내용 경로를 찾은다음에 해야 할 일은? ● 셀렉터복사 | ■enumerate 함수 ● 리스트가 있는 경우 순서(인덱스)와 리스트의 값을 전달하는 기능 |
■ 변수명으로 사용 피해야하는 것 !!! ● 예약어 ● 숫자 ● 함수명 ● 모듈,패키지명 ● 라이브러리명 | ■ 언더스코어 방식으로 변수 혹은 함수명 작성 ● snake_cas : 스네이크 케이스 : 보통 함수명 ● CamelCase : 카멜 케이스 : 클래스명 (CapWords convetion) ※권장하지 않는 방법 -> Capitalized_Words_With_Underscores(Ugly!!) |
■ 매직 메소드(Magic Methods) ● 던더 메소드 (Dunder Methods)라고 많이 부르며, 종종 스페셜 메소드라고 부름 | ■ pd.read_html( )의 기능 ● URL, HTML 소스 코드를 넣어주게 되면, 테이블 태그를 찾아서 반환한다. ● URL을 넣어주면 특정 URL에 접근해서 HTML 페이지의 태그를 읽어 온다. ● HTML 페이지의 table 태그는 <table></table>로 구성이 된다. ● 해당 HTML의 모든 table을 가져와서 리스트 형태로 반환한다. ● 반환된 리스트를 인덱싱 하게 되면 데이터 프레임이 되어 있다 |
■ get방식과 post 방식 일반적으로는 GET 메소드를 통해 데이터를 읽어올 수 있게 서버에서 작성 |
■ 2가지 방법의 차이 1. #content > div > table > tbody > tr > td.content 2. td.content 1번은 content 클래스 태그 안에 div 태그 안에 table 태그 안에 tbody 태그 안에 tr 태그 안에 content 클래스인 td를 찾습니다. 2번은 전체 HTML에서 content 클래스인 td를 찾습니다. 따라서, HTML 안에 #content > div > table > tbody > tr > td.content 위치 가 아닌 다른 곳에도 content 클래스를 가진 td가 1개 있다고 하면 1번은 1개의 결과물을 찾게 되겠지만, 2번은 2개의 결과물을 찾게 됩니다. |
■판다스에서는 반복문 대신 실습에서 ● map 함수 사용 | ■ 문자열을 분리하는 함수 ● split ※ divide, separate 는 내장함수 X strip은 문자열 양옆의 공백을 제거하는 함수 |
🦁 01/ 17 (TIL 2일차)
▣ .ipnyb ▣ ▶ ipython notebook의 약자 ▶ .ipynb 확장자는 IPython 환경에서만 사용이 가능 | ▣ jupyter ▣ ▶ Jupyter가 지원하는 핵심언어인 Julia, Python, R |
▣ .py 파일을 편집 ▣ ▶ 파이썬 내장 IDE, 주피터 Lab, 메모장, vi, Visual Studio Code, PyCharm(젯브레인 社), 서브라임텍스트 등 ▶ 본인한테 제일 편한 편집기 사용 (pycharm은 pep8자동으로 잡아줌) ▶ .py파일은 나중에 대시보드 작성 시 사용 이 때, Visual Studio Code 설치 권장 | ▣ IDE 프로그램 ▣ ▶ Integrated Development Environment (통합 개발 환경) |
▣ Jupyter localhost 실습의 장점 ▣ ▶ 오프라인환경에서도 사용가능 ex) 캠핑, 산 속 ▶ 데이터 파일 등을 매번 로드할 필요 X ->로컬 드라이브에 저장해두면 경로만 지정하면 바로 불러올 수 있음 ▶ 네트워크 상황에 따라 연결이 끊겨 다시 노트북을 실행할 필요가 없다 ▶ 라이브러리를 한 번 설치하면 노트북을 새로 열 때마다 설치하지 않고 import만 해서 사용 ->colab은 설치해야하는 라이브러리 매번 설치 ▶ colab 보다 좋은 성능의 컴퓨터라면 더 빠르게 사용할 수도 있지만 그렇지 않다면 colab이 더 빠를수도 있다. | ▣ 예외 처리시 try의 위치 ▣ ▶ 맨 위 ●장점 -안전하게 맨 위에 작성하면 어떤 오류든 대처 가능하기 때문에 오류 줄이기 가능 -여러 페이지 수집 시 어떤 상황에서 오류 가 날 지 예측이 잘 안되거나 예외상황이 있다던지 하면 오류가 날만한 곳 맨 위에 try 구문 작성 ●단점 -오류 메세지가 떠야 어떤 오류인지 보고 수정할 수 있는데 오류가 났는데도 예외관련문구를 디테일하게 작성하지 않으면 오류를 찾기 어려운 단점 |
▣ if문과 append 의 위치 ▣ ▶ if 문이 append 위에 있는 것이 낫다. ▶ 리스트에 불필요한 데이터 저장 X ▶ 테이블이 비어져 있는데 append가 위에 있으면 비어져 있는 테이블도 추가가된다! | ▣ concat 팁 ▣ 1) ignore_index) = True ▶ 인덱스값을 기존값으로 사용할 지 새로운 인덱스 값을 부여하여 사용할지에 대한 기능 2) df.reset_index(drop=True) ▶ ignore_index=True 와 같은 효과 |
▣ 오후 실습 내용 ▣ 1) 한 페이지를 수집하는 함수를 작성 2) 반복문(while)을 통해 데이터가 없을 때(반환값이 None 이거나 길이가 0인 것)까지 수집 3) 수집한 결과를 concat 으로 병합 | ▣ 네트워크 이슈 대비 !! ▣ ♨ 수집 중 메모리가 날아간다면 ♨ 1) 페이지마다 파일로 저장 2) 생성된 파일을 한 번에 읽어와서 리스트로 제작 3) 리스트에 담긴 데이터프레임을 concat()으로 합쳐서 하나의 데이터프레임으로 만듦 |
▣ 일부 데이터 수집 이유 ▣ 1) 네트워크 부담을 줄이기 위해서 2) 중간에 오류가 났을 때 찾기 쉽게 하기 위해서 | ▣ 주피터노트북 - 파일 읽어오기 ▣ ▶ colab 에서 실습할 때는 같은 경로에 저장 ▶ 로컬 주피터에서는 다른 경로에 저장, 따라서 저장한 경로 지정해 주어야 파일을 read가능 ▶ 컴퓨터에서 경로 == 주소 ▶ 데이터가 있는 주소에 공백 하나라도 들어가거나 오타가 있으면 데이터를 가져올 때 오류가 발생합니다. |
▣ pip install과 터미널 설치 방법의 차이점 ▣ ▶ 아나콘다 => 가상환경을 사용하기 위해 사용 컴퓨터 전체에 설치되는게 아니라 (base)라는 터미널의 문구는 가상환경을 의미 (base) 안에 설치되지 않으면 설치했더라도 No Module Not Found Error 와 같은 오류가 발생 ▶ 주피터 내부에서 설치했을 때 (base)안에 설치되기도 하지만 경우에 따라 다른 경로에 설치되기도 합니다. 환경에 따라 차이가 있고 운영체제 등에 따라 이슈 존재 ▶ 버전호환성 문제, 동료들과 사용하는 환경 문제 등으로 가상환경을 구축해서 사용 | ▣concat - 열로 합치기▣ ▶ axis = 0 (디폴트 : 행 기준)은 열이 동일할 때 행을 추가함 ▶ axis = 1 (열 기준)은 행이 동일할 때 열 값 추가 (※ index 값 동일해야함 !!) ▣ .set_index( ) ▣ ▶ 특정 열을 index로 사용!!! |
🦁 01/ 18 (TIL 3일차)
▣ progress_map 과 progress_apply 의 차이▣ ▶map, apply 는 pandas의 메서드 입니다. 1) 반복문 대신 사용. 반복문을 사용했을 때에 비해 속도 빠름 2) 많은 작업을 할 때는 어디까지 진행되었는지 상태 확인이 어려움 ♨ 그래서 tqdm의 도움을 받습니다. ▶ progress_map(), progress_apply() tqdm에서 판다스를 지원하는 기능입니다. => 진행상태를 표시 | ▣ list( ) 와 .tolist( )의 차이 ▣ ▶ list(view_detail) => 파이썬 표준 라이브러리 사용 ▶ view_detail.tolist() => 판다스를 사용 공통점 : 리스트 형태로 변경 |
▣ ETF 페이지를 수집 ▣ ▶ 가장 먼저 봐야 하는 것 1) 수집하고자 하는 데이터가 어떤 태그에 들어있는지 봅니다. table 태그라면 pd.read_html() 로도 불러올 수 있고, 2) pd.read_html() 로 수집이 안 된다면 requests 요청을 보냅니다. requests 요청을 보내기 위한 주소를 Network 메뉴에서 찾습니다. URL => Preview 로 봤을 때 해당 데이터가 있는지 확인! | ▣ ETF페이지와 유사한 방법으로 수집 가능한 페이지 ▣ 스타벅스 매장정보, 건강보험 병의원약국정보, 지도에 매장이 표시되는 대부분의 웹페이지 등에 활용이 가능합니다. |
▣ ETF페이지 유사한 방법으로 수집 가능 ▣ 스타벅스 매장정보, 건강보험 병의원약국정보, 지도에 매장이 표시되는 대부분의 웹페이지 등에 활용이 가능 | ▣ XML도 BeautifulSoup으로 파싱은됨 ▣ |
게으름 피운 것도 아닌데 왜 이렇게 정신없고 정리가 안되지... 실습 하면서 코드 이해 위주로 해서 그런가보다 .
설날에 좀 쉬면서 리프레쉬하고 깔끔하게 정리도 좀 해야겠다
728x90
'Python > ▶ Python & Pandas' 카테고리의 다른 글
5주차 plotly (1) | 2023.02.05 |
---|---|
5주차 TIL ( Pandas : 시각화 ) (0) | 2023.01.31 |
TIL ②일차 (0) | 2023.01.11 |
TIL ①-2일차 (0) | 2023.01.10 |
TIL ①일차 (0) | 2023.01.09 |