멋쟁이 사자처럼 AI School 8기 - WIL-4주차

JiWOn·2023년 1월 12일
0
post-thumbnail

4주차 일정

    • 박조은 강사님 - OT, 데이터 사이언스 개요, 분석환경, 판다스 기초
      • 추상화된 라이브러리인 FinanceDataReader 를 통해서 KRX 에 상장된 종목 정보를 수집
    • 박조은 강사님 - 웹데이터 수집
      • 네이버 금융의 뉴스기사를 수집
    • 박조은 강사님 - 웹데이터 수집
      • 네이버 금융의 특정 종목의 일별시세를 수집
    • 인사이트 데이

학습 내용

📝20230109 박조은 강사님 수업내용 필기
📝20230110 박조은 강사님 수업내용 필기
📝20230111 박조은 강사님 수업내용 필기
😎학습내용 응용 - 네이버웹툰 실시간 순위 데이터 파일 만들기

일주일 내용 키워드 정리

1. 판다스 기초

  • Code of Conduct
  • 데이터 사이언스 프로세스 : EDA(Exploratory data analysis)
  • 데이터 파이프라인
    • ETL : 데이터 웨어하우스
    • ELT : 데이터 레이크
  • 아나콘다 : 파이썬은 접착제 언어
  • pd.DataFrame()
    • 수학적 표현 : 행렬
    • 리스트 구조 : 2차원
  • 소스코드 확인하기
    • help()
    • ?=> help 도움말
    • ??=> 소스코드 보기
  • axis 0:행, 1:컬럼
  • inplace기능 : 할당을 하지 않고 inplace를 사용하면 method chaining을 했을 때, 동작하지 않을 때가 있으므로 추천 x
  • 데이터 요약
    • df.info() 프레임 정보 보기
    • df.shape 프레임 크기 출력
    • df.dtypes 데이터의 타입확인
    • df.describe() 수치형 데이터의 기술통계값
      • (include='Object') 범주형 데이터의 기술통계 값을 볼 수 있음
  • 2개 이상의 칼럼명 : df[['약품명','가격']]
  • .loc 인덱스, 컬럼명으로 가져옵니다.
  • .iloc 순서대로 값을 가져옵니다
  • str.contains : 특정 이름을 가져오기(return bool)
  • sort_values 정렬하기
  • to_csv 파일 저장 / pd.read_csv 파일 읽어오기

2. FinanceDataReader

: 금융 데이터 수집 라이브러리
.rename : 컬럼명 변경
.head() : 상단의 특정 개수 데이터를 미리보기
tail() : 하단의 특정 개수 데이터를 미리보기

3. 네이버 금융의 뉴스 기사 수집(웹데이터 수집)

  • 웹스크래핑 주의사항
    • 서버에 부담 생길 수 있다
    • 법률적 문제 있는지 확인
    • 저작권 위반
  • Open API로 데이터 수집
    • 허락된 사람에게 정보 제공
    • 유료일 경우 과금하기 위해
    • 실시간성 데이터 정보 제공을 위해
    • 특정 사이트를 무리하게 네트워크 요청 보내면 서버 무리가기 때문에 사용
  • 로봇 배제 표준 (robot.txt)
    • Disallow : / : 크롤러가 모든 경로의 데이터를 가져가지 말라라는 의미
    • Allow : /$ : 처음이자 끝
  • pd.read_html()
    • url, html 소스코드를 넣으면 테이블 태그를 찾아서 반환
    • url을 넣으면 특정 url에 접근해서 html페이지의 table 태그 접근
    • 모든 테이블을 가져와서 리스트로
  • concat
    • axis=0 행을 기준으로 위아래로 같은 컬럼끼리 값을 이어 붙여 새로운 행을 만듦
    • axis=1 컬럼을 기준으로 인덱스가 같은 값을 옆으로 붙여 새로운 컬럼을 만듦
  • 결측치 제거 : .dropna()
  • 중복데이터 제거 : drop_duplicates()
  • time.sleep() 부하를 줄이기 위해 시간 차
  • reset_index(drop=True) 전체 인덱스 다시 부여, 기존 인덱스 삭제

4. 네이버 금융의 특정 종목의 일별 시세 수집(read_html로 수집이 안될 경우)

1) requests 도구 사용 -> http 요청을 보내서 응답 받음
2) requests은 작은 브라우저이기 때문에 html 문서 반환
3) table 태그를 찾아 데이터 프레임으로 만들어 줌

  • BeautifulSoup
    • html 파서 역할
    • html 문서에 필요한 내용을 가져옴
    • html문서를 예쁘게 만듬
    • find 클래스 명으로 찾음
    • select html 코드에서 copy selector를 가져옴
  • 셀렉터 : d는 하나의 요소에만 적용할 수 있다. Id 값은 앞에 #이 붙고, 클래스 값은 앞에 .이 붙는다
  • 결측치 제거
    • dropna()
    • how 전부다 결측치 일때는 all
    • axis : {0 or 'index', 1 or 'columns'}, default 0

5. 대통령 연설문 리스트 가져오기

  • http 요청
    • get : 필요한 데이터를 Query String 에 담아 전송
    • post : 전송할 데이터를 HTTP 메시지의 Body의 Form Data에 담아 전송
      • verify = false : 인증서확인 과정을 생략하겠다.
    • get 과 post 여부는 브라우저의 네트워크 탭의 Headers > Request Method 를 통해 확인
      • params를 받고 response를 할 때 꼭 params를 받아줘야함
  • post로 보내는건지 get으로 받는건지 확인해야함

소감

이번 주부터는 파이썬 수업이 아닌 데이터 수집, 분석 수업이 시작되었다.
저번 코칭스터디를 통해서 박조은 강사님을 먼저 뵈었고 공부도 먼저 해봤지만 쉽지 않은 내용인 것을 알기에 걱정이 되었다.

첫 날 수업에선 데이터 사이언스에 대한 내용과 기본적인 판다스 사용법에 대해 배웠다
다행히 미리 해본 내용이여서 따라가기도 쉬웠고 수집을 도와주는 라이브러리를 이용해서 실제 내용의 데이터프레임을 생성해서 재밌었다.

둘째 날엔 웹 데이터를 수집해보았다. 저번에 테킷에서 웹데이터를 수집해보았기 때문에 쉬울 것이라 생각했는데 직접 알고리즘을 작성해서 코드를 짜보라고 말씀해주시니 어떻게 짜야할지 몰랐었다. 생각은 엄청 많지만 정리가 되지 않는 느낌이라 연습을 더 해야겠다.
그리고 데이터 수집 시 유의해야할 내용을 실무에 종사하셨던 분을 통해 이야기를 듣게되니 이 내용이 가볍게만 들리지 않아 주의하면서 실습을 해야겠다는 생각이 들었다.

수요일 수업은 네이버 금융의 특정 종목의 일별시세를 수집했다.
requests를 테킷에서 배웠었는데 간단하게 배웠었는데 그때는 이해하지 못했던 내용들이 실시간 강의를 통해서 공부를 하게되니 궁금한 점도 바로 채워넣을 수 있었고 사람들의 다양한 의견들을 들으며 내가 가지고 있던 막힌 생각들을 뚫게 했다.

그리고 오늘은 인사이트 데이를 진행하면서 오전 WIL을 작성하기 위해 웹서핑을 하던 중 저번 테킷 때 풀지 못했던 웹툰 실시간 순위 데이터프레임만들기에 대한 코드를 발견해서 따라해보면서 다르게 코드를 짜보았다.
이번 수업 내용을 응용해서 문제를 푸니 더욱 더 뿌듯했다.

앞으로의 수업도 계속 이렇게 진행될 것 같은데 응용도 많이하고 백준이나 프로그래머스 문제도 좀 풀면서 복습과 알고리즘 연습도 많이 해야겠다.

0개의 댓글