techit aischool summary

김상민·2023년 1월 19일
0

aischool

목록 보기
9/9

techit aischool summary (멋쟁이 사자처럼)
1주일 간의 공부 키워드로 복습하기

네이버 금융 크롤링

  • read_html로는 수집이 안된다 (봇 방지를 위해서 네이버가 설정)

  • requests 도구를 사용한다. HTTP 요청을 보내서 응답을 받아온다(requests_code == 200 정상)

  • request는 작은 브라우저 이기 때문에 html 문서를 반환한다. API를 호출한다면 JSON, XML 등의 문서를 받을 수도 있다.

  • table 태그를 찾아 데이터프레임(엑셀의 표 형태)로 만들어줍니다.

  • 뉴스기사 수집때처럼 페이지를 순회하며 데이터를 가져옵니다.

  • 병합 및 저장

- dropna : 결측지 제거 함수

- axis : 행 (0 , index) 열(1, column)

- how : any (결측치가 1개만 있어도 drop) all(모든값이 Nan이여야 drop)

- df.iloc[행, 열]

- df.loc["문자열"]

메모리를 효율적으로 쓰는 방법

1) 컴퓨터를 새로 산다. => 비용이 한정적이라면 CPU 보다는 메모리(RAM)에 투자하는 것을 추천합니다.
2) 불필요하게 실행되고 있는 프로그램을 종료
3) 브라우저의 창을 여러개 열어두는 것도 메모리를 많이 사용
4) 주피터 노트북을 사용할 때는 파이썬 노트북을 여러 개 열어두면 메모리 공간을 차지하고 있습니다. 사용하지 않는 노트북을 종료
5) 컴퓨터 재부팅

BeautifulSoup

XML, HTML 파싱을 위한 도구
개행을 통해 가독성을 높여줌
soup.select - 위치를 따로 지정해 줄수있음

BeautifulSoup으로 a 태그 찾기

  • select()
    • selector로 찾기
    • html.select('tr > td.subject > a')
  • find_all()
    • 태그와 클래스명으로 찾기
    • html.find_all('td',{'class':'subject'},)

map, apply

판다스에서 반복문 대신 쓰는것
progess_map,map

  • map: 함수나 딕셔너리를 넣어주면 전체에 적용을 해준다. , series만 적용
  • progress_map : tqdm 에서 제공하는 기능으로 어디까지 적용되어 있는지 볼 수 있다.
  • apply : series, dict 모두 적용 가능

DataFrame.set_index(keys**, drop=Trueappend=Falseinplace=Falseverify_integrity=False*)

▪️DataFrame의 인덱스를 설정합니다.

▪️keys: 이 매개변수는 단일 열 키, 호출 DataFrame과 동일한 길이의 단일 배열 또는 열 키와 배열의 임의 조합을 포함하는 목록일 수 있습니다. 여기서 "배열"은 Series, Index, np.ndarray 및 Iterator 인스턴스를 포함합니다.

▪️drop: bool, 기본값 True. 새 인덱스로 사용할 열을 삭제합니다.

▪️append: bool, 기본값 False. 기존 인덱스에 열을 추가할지 여부입니다.

▪️inplace: bool, 기본값 False. DataFrame을 새로 만들지 않고 수정할지 여부입니다.

▪️verify_integrity: bool, 기본값. 거짓 중복에 대한 새 색인을 확인하십시오. 그렇지 않으면 필요할 때까지 확인을 연기하십시오. False로 설정하면 이 방법의 성능이 향상됩니다.

▪️DataFrame 또는 None을 반환합니다.

pd.concat([dataframe1, dataframe1], axis=1)

▪️axis의 기본값은 0, column(열)을 기준으로 index(행)을 합치게 됩니다.

▪️axis의 값을 1로 주면, index(행)을 기준으로 column(열)을 합치게 됩니다. 이 경우, 인덱스 값이 같은 행끼리 합쳐지게 된다. 따라서 해주기 전에 인덱스를 하나로 통일해주어야 합니다. + 인덱스를 리셋시켜도 됩니다.

df.info()

=> 데이터프레임의 행과 열의 수, 데이터타입, 결측치를 제외한 데이터 수, 메모리사용량 등을 보여줍니다.

df.describe()

=> 기술통계: 기본값이 수치 데이터에 대한 기술통계

df.describe(include="object")

=> object 타입의 기술통계

dtype={"itemcode": "object"}

=>itemcode 숫자 앞의 0 이 지워진다면 로 타입을 지정해 주면 문자형태로 읽어옵니다.

코드의 속도를 측정하는 방법

%time: 단일 명령문의 실행 시간
%timeit: 정확도 향상을 위해 단일 명령문을 반복적으로 실행하는 시간
%prun: 프로파일러로 코드 실행
%lprun: 라인별 프로파일러로 코드 실행
%memit: 단일 문장의 메모리 사용량 측정
%mprun: 라인별 메모리 프로파일러로 코드 실행

예외처리 시 주의사항

map, apply 로 데이터를 수집할때, 중간에 예외처리를 안해서 오류가 났다면 오류를 수정하고 처음부터 다시 수집해야한다. 오류가 난 것은 제외하고 수집하면 오류를 수정해서 나중에 수집 안된 데이터만 따로 수집해주면 된다.

주의사항 json을 parsing할때 callback이 있으면 오류가 생길 수 있다.json을 parsing할때 callback이 있으면 오류가 생길 수 있다.

API란?

- Application Programming Interface의 약어입니다.
- 서로 다른 사양의 컴퓨터나 컴퓨터 프로그램이 데이터를 주고받을 수 있도록 하는 도구입니다.
- 예제에서는 사용자가 서울 열린데이터 광장의 서버에서 데이터를 요청할 수 있게 합니다.

XML이란 ?

- eXtensible Markup Language의 약어입니다.
- 인터넷 상에서 구조화된 데이터를 전송하기 위해 만들어진 형식입니다.
- XML은 주로 다른 종류의 시스템, 특히 인터넷에 연결된 시스템끼리 데이터를 쉽게 주고 받을 수 있게 하여 HTML의 한계를 극복할 목적으로 만들어졌습니다.
  • xml parsing을 전처리 해줘서 메타파일, FAQ파일로 만듬
  • pandas의 xml 읽어오기 기능 : pd.read_xml()
  • FAQ의 UPDATE_YMDHMS를 날짜 데이터 형식으로 변경
    • 데이터프레임 타입을 확인하기 : dtypes
    • 데이터프레임 타입 바꾸기 : astype
profile
꾸준히 하고싶다

0개의 댓글