-
멋쟁이사자처럼 3주차 회고카테고리 없음 2022. 9. 29. 18:39
데이터 수집 및 데이터 프레임 다루기
웹에서 데이터를 가져와 데이터 전처리를 거쳐 원하는 데이터만 추출하고 csv형태의 파일로 저장하는 법을 배웠다.
실제로 배운 것은 네이버 금융 사이트에서 날짜별 시세를 가져와 데이터를 다루었지만
조금 응용하여 시간별 시세를 가져오고 파일에 저장하는 코드를 실습해보았다.
라이브러리 소개
pandas : 데이터프레임을 다루는데 사용
requests: url의 html 데이터를 받아오는데 사용
time: 서버에 요청시간을 지연하여 서버 과부하 방지
datetime: 현재 시간 데이터 가져오기 위하여 사용
데이터 수집 함수
데이터 수집 함수로 네이버 금융 사이트 중 시간별 시세에 해당하는 url을 html에서 가져왔으며
그 중 종목 코드와 현재시간 페이지 번호를 파라미터로 지정하여 원하는 값들을 넣을 수 있게 수정하였다.
이후 pandas를 이용하여 table 태그의 데이터를 데이터 프레임으로 저장하고 반환하였다.
여러 페이지 가져오기 함수
앞에서 선언한 데이터 수집 함수를 반복문을 통해
1페이지 부터 마지막 페이지 까지 데이터 프레임으로 받아와 리스트에 추가하고
pd.concat함수를 이용하여 리스트에 있는 데이터프레임을
하나의 데이터 프레임으로 합쳐서 다시 저장해주는 함수를 구현하였다.
함수의 마지막에는 dropna()를 통한 결측치 제거와
reset_index(drop=True) 함수를 통한 인덱스 재설정 작업까지 수행하였다.
데이터 파일 저장 함수
불러온 데이터프레임을 csv파일로 저장하기 위하여 칼럼을 보기 편하게 수정하여주고
중복값을 제거하는 과정을 거친뒤 파일 이름을 설정하였다.
파일 이름을 설정할 때 현재 시각을 표시하기위하여
datetime라이브러리의 datetime.now() 함수를 이용하였다.
함수 실행
마지막 함수 실행부분에서는 사용자가 제공하는 종목 중 골라서 입력하게끔 만들고 싶어
제공하는 종목과 종목코드를 딕셔너리 형태로 만들고
키 값만 사용자에게 보여주는 방식을 사용하였으며
키 값과 사용자의 입력 종목이 같을 경우
해당 키의 벨류를 종목 코드 변수에 넣어
함수의 인자 값으로 사용하는 방식을 취했다.
느낀 점
데이터프레임을 다루는 것보다 받아온 날 것의 데이터를 원하는 것만 추출하고
데이터프레임으로 변환해주는 작업이 훨씬 어려웠으며
때마다 변수를 어떻게 선언하여 효율적으로 사용할지 고민이 많이 되었다.
변수의 이름을 알아보기 쉽게하는 것이 중요한 것 같다.