0201
## FinanceDataReader 란?
- 한국 주식 가격, 미국주식 가격, 지수, 환율, 암호화폐 가격, 종목 리스팅 등 금융 데이터 수집 라이브러리
- FinanceData/FinanceDataReader: Financial data reader
- FinanceDataReader 사용자 안내서 | FinanceData
- https://pandas-datareader.readthedocs.io/en/latest/readers/index.html
설치방법
한국거래소 상장종목 전체 가져오기
fdr.StockListing?? # 먼저 도움말 보기
# 결측치가 많은 이유는? 금융상품들이 있어서
파일로 저장하기 / 불러오기
저장하기
df.to_csv("krx.csv", index=False, encoding="cp949")
# to_csv로 Dataframe을 데이터 저장용 파일인 CSV 파일로 바꿀 수 있다!
# cp949 엑셀이나 한글에서 불러오기위해서 인코딩
# index = False 는 인덱스는뺴고 저장
pd.read_csv("krx.csv",encoding= "cp949")
# CSV로 저장된 파일을 다시 DataFrame으로 읽어오기
# 위에 저장시 cp949로 인코딩해서 불러올때도 동일하게
url = 'http://kind.krx.co.kr/corpgeneral/corpList.do?method=download&searchType=13'
pd.read_html(url)[0]
# url 뒤에 [0] 을 붙이는 이유는 list에서 indexing을 통해서 data를 데이터프레임형태로 가져오기위해
0202
네이버 금융 뉴스기사 수집
pandas만으로 데이터 수집하기
import pandas as pd # pandas 불러오기
import numpy as np #numpy 불러오기
검색값 설정하기
웹사이트에서 검색한 url안에는 우리의 검색어가 들어잇다
이렇게 검색어를 url에 붙여서 넘기는 문구를 퀴리스티링이라고 한다
#쿼리스트링 : 쿼리 문자열은 지정된 매개변수에 값을 할당하는 Uniform Resource Locator의 일부입니다. 쿼리 문자열에는 일반적으로 웹 브라우저나 기타 클라이언트 응용 프로그램에서 기본 URL에 추가한 필드가 포함됩니다.
이에따라서 url 변수로 설정하기
p.s
#데이터 프레임에서 종목이름 찾기
df[df["Name"] == "삼성전자 "]
read_html 로 수집하기
table = pd.read_html(url) # 네이버 금융의 기사를 read_html로 수징하여 수집결과 는 table이라는 변수에 담는다
데이터프레임으로 만들기
Index(['제목', '정보제공', '날짜'], dtype='object')
반복문으로 데이터 모두 가져오기
for문을 사용하여 table변수안에 값 가져오기!
수집한 데이터 하나의 데이터프레임으로 합치기
- concat :
- axis=0 행을 기준으로 위아래로 같은 컬럼끼리 값을 이어 붙여 새로운 행을 만듦
- axis=1 컬럼을 기준으로 인덱스가 같은 값을 옆으로 붙여 새로운 컬럼을 만듦
위에서 수집한 데이터에서 결측치를 제거합니다.
#결측치란? 데이터에 값이 없는 것을 뜻
#결측치 제거방법 dropna()
#중복값 제거 방법 drop_duplicates()
df_nwes = df_nwes.dropna() #결측치 제거
네이버 수집한 기사에서 "제목"에 "연관기사"가 들어가는 데이터를 제거합니다.
# ~를 사용하면 조건을 반대로 뒤집을수있다
ex)
~pd.Series([True,False])
0 False
1 True
dtype: bool
종합해서 뉴스 한 페이지를 수집하는 함수만들기
반복문을 사용해 10페이지까지 수집
위에서 수집한 데이터를 판다스를 활용하여 하나의 데이터 프레임으로
concat
# axis=0 행을 기준으로 위아래로 같은 컬럼끼리 값을 이어 붙여 새로운 행을 만듦
# axis=1 컬럼을 기준으로 인덱스가 같은 값을 옆으로 붙여 새로운 컬럼을 만듦
파일로 저장하기
pd.read_csv(file_name) #파일 불러오기
# read_csv 불러오기
범주형 기술통계 데이터 수집 퀴즈
변수의 유일값의 갯수를 구하는 기능
- unique() #unique 값의 갯수를 출력해 줍니다.
판다스를 통해 두 개의 변수에 대한 빈도 수를 구할 수 없는 것은?
- pivot() # 형태만 변경하고 연산기능 없음 연산을 하려면 pivot_table()을 사용
판다스의 describe 기능을 통해 범주형변수의 기술 통계값을 구했을 때 알 수 없는 값은?
- mean #범주형 데이터의 평균은 구할 수 없다!
범주형 변수와 수치형 변수를 함께 표현하기에 적합하지 않은 시각화는?
- scatterplot() 은 두 수치형 변수간의 관계를 표현하기에 적합합니다.
- pointplot() , boxplot() , scatterplot() , violinplot() 은가능!
컬럼명이 같은 여러개의 데이터 프레임을 하나로 함칠떄 사용하는 함수는?
- concat
df.to_csv(file_name, index=True)
- df. #데이터프레임을 df라는 변수에 저장.
- to_csv(file_name) #CSV 파일로 저장
- index=True #인덱스 값은 제외
한글인코딩이 꺠지지 않기위해 설정하는 인코딩값은???
- cp949 # 암기해두면 좋다!
판다스를 통해 1개의 변수에 대한 빈도수를 구하기에 적합한 기능은?
- value_counts() # 하나의 변수에 대한 빈도수를 구합니다.
pivot_table과 관련된 설명
- pivot과 pivot_table의 가장 큰 차이점은 연산을 할 수 있는지 여부다.
- pivot_table의 aggfunc 의 기본값은 평균(mean)다.
- pivot_table은 groupby 를 사용하기 쉽게 만든 기능이다.
- crosstab은 pivot_table을 사용하기 쉽게 만든 기능이다.
groupby를 통해 여러 컬럼으로 그룹화하여 연산을 해서 생성한 멀티인덱스의 마지막 인덱스 값을 컬럼으로 만들고자 할 때 사용하는 것
unstack()
countplot
- countplot 은 x, y 둘 중 하나를 입력하면 나머지 축에 빈도수를 구해서 표현합니다.
- 따라서 x, y 축 둘 다 지정할 수 없으며 둘 중 하나만 지정해야 합니다.
범주형 변수를 산점도로 표현방법
- stripplot()
- swarmplot()
- scatterplot은 수치형 변수를 표현하기에 적합하다
- #범주형 변수를 표현시 점이 겹쳐쳐 보이기에 할순 있으나 빈도나 분포를 제대로 알아보기 힘들다!
.catplot 은 범주형 변수의 서브플롯을 그릴 때 사용합니다.catplot 을 통해 시각화 할 수 없는 그래프는 무엇일까요?
- stripplot() , boxplot() , violinplot() - 시각화가능
- histplot() 은 수치형 변수에 대한 도수 분포를 시각화한 것으로 catplot 으로는 시각화 할 수 없다
catplot이 다른 박스 ,바이올린등 다른플롯과 다른점음 서브플롯을 그려볼수있다
라이브러리
- FinanceDataReader #한 줄로 금융 데이터를 수집할 수 있는 라이브러리
- pandas - 데이터 분석 라이브러리
- Beautifulsoup4 - Requests를 이용하여 http 통신을 통해 다양한 웹 데이터를 수집하고, 그렇게 수집한 HTML 데이터를 해석하는 라이브러리
- tqdm - 작업 진행 상태 확인 라이브러리 입니다.
데이터프레임 내에서 같은 값이 있으면 중복값 중 하나를 남기고 나머지를 삭제해주는 메서드는?
- drop_duplicates
댓글