[TIL] 22.10.05

문종현·2022년 10월 5일
0

TIL

목록 보기
9/119

👉 오늘 한 일

  • 서울 120(다산콜센터) 데이터 수집 마무리
  • 주식 종목 수익률 비교(FinanceDataReader)
  • 데이터 시각화 학습

서울 120(다산콜센터) 데이터 수집

map(), apply(), applymap() 차이점

  • 세 함수 모두 일괄 적용하고자 할 때 사용함
  • map은 Series 데이터만 처리
  • apply는 Series와 데이터프레임 모두 처리 가능
  • applymap은 데이터프레임만 처리

merge(), concat(), append() : 데이터프레임 병합 시 사용

  • merge

    • SQL에서의 join과 같은 개념
    • 키값은 두 개 이상이 될 수도 있음
    • 키컬럼이 다르다면 left_on, right_on 파라미터로 각각 매칭할 키컬럼을 지정
    • how 파라미터는 조인 옵션을 제공함
  • concat

    • 조인 옵션을 지정하지 않고 열을 기준으로 합치면 cross join 형태로 합침
    • join 파라미터는 조인 옵션을 제공함
    • index값이 다르다면 reindex를 통해 한쪽의 index값으로 맞춰줌
  • append

    • ignore_index 파라미터를 통해 index를 무시하고 단순 병합함

주식 종목 수익률 비교(FinanceDataReader)

jupyter notebook

  • %pwd : 현재 작업 중인 디렉터리 출력

  • 단축키 esc + o => 실행 결과 숨기기

  • 모듈을 설치했는데 불러오지 못하는 에러 : 다른 곳에 설치되어있을 가능성

    • 아나콘다 가상환경 위치에 설치(아나콘다 프롬프트에서 설치)
  • 도움말 : shift + tab + tab

FinanceDataReader 튜토리얼 변형 예제

koreanize-matplotlib 모듈 : matplotlib에서 한글폰트 사용을 위해 사용
%config InlineBackend.figure_format = 'retina' : retina display 적용

retina : 일정 수준 이상의 고밀도 display

이외 matploilib 폰트 사용 방법
폰트 사용 방법 3가지
1) FontProperties 를 사용하는 방법 - 그래프의 폰트가 필요한 항목마다 지정해 주어야 함

2) matplotlib.rcParams[]으로 전역글꼴 설정 방법 - 그래프에 설정을 해주면 폰트가 필요한 항목에 적용됨

3) 2)를 mpl.matplotlib_fname()로 읽어지는 설정 파일에 직접 적어주는 방법, 단 모든 노트북에 적용돼서 노트북을 열 때마다 지정해 주지 않아도 됨

출처 : matplotlib doc https://matplotlib.org/3.3.3/tutorials/introductory/customizing.html

pandas, seaborn도 matplotlib을 사용하기 때문에 matplotlib으로 편집 가능

plt.style = fivethirtyeight, ggplot 사용 이유?
=> 폰트 설정이 없어서 폰트 설정을 덮어쓰기 하지 않음

plt.legend(bbox_to_anchor=(1, 1)) : 범례 표시를 그래프 밖(오른쪽)으로 뺌. 튜플값 바꿔서 위치 조정 가능

plt.axhline() : 가로선 생성

secondary_y에서 두 번째 y축(오른쪽) 지정 가능

변수 할당 / 마지막에 ; 쓰기 / plt.show() 사용해서 시각화 로그 없애기 가능

히스토그램의 막대는 pd.cut() 으로 나눈 것과 같음 (데이터 분포)

  • pd.cut() : 같은 길이로 나누기 (e.g. 시험의 절대평가)
  • pd.qcut() : 같은 개수로 나누기 (e.g. 시험의 상대평가)

데이터 시각화

데이터 시각화 도구

  • Excel
  • Power BI
  • Tableau
  • Google data studio

BI 툴의 장점? : 방대한 데이터를 쉽고 빠르게 시각화할 수 있음

python 시각화 라이브러리
plotnine : R의 ggplot과 거의 유사하게 구현한 라이브러리

  • R기반 문법을 사용함

seaborn의 multi-plot grid

  • FacetGrid : 데이터 세트의 하위 집합 내에서 개별적으로 변수의 분포 또는 여러 변수 간의 관계를 시각화하려는 경우에 유용

  • PairGrid : 작은 서브플롯의 그리드를 빠르게 그려 각각의 데이터를 시각화

    • FacetGrid와의 차이점: 하나의 범주형 변수를 범주값에 따라 여러개로 나눠 그려주는 FacetGrid와 달리 PairGrid는 여러 변수를 나눠 그림

cufflinks : plotly에서 pandas 문법을 사용하게 해주는 라이브러리

  • 다른 라이브러리에 의존성이 있기 때문에 버전 호환성 체크해야 함

plotly는 한글폰트 설정이 필요없음

plotly 그래프가 노트북에 표시되지 않을 때

from plotly.offline import iplot, init_notebook_mode
from plotly.subplots import make_subplots
init_notebook_mode()

px.line()의 hover_data 파라미터는 동적인 그래프 안의 데이터를 편집함

rangeslider 으로 구간을 조절해서 결과를 확인할 수 있음

  • 자동적으로 rangeslider가 나오는 plot들이 있는데, fig.update_layout(xaxis_rangeslider_visible=False) 로 rangeslider를 끌 수 있음

시각화 할 때 대표값을 표시해야 한다면 그래프에서 계산하지 않고 미리 계산하고 시각화해서 속도를 개선할 수 있음

메서드 체이닝 : 메서드들을 붙여서 사용하는 방법

  • e.g. df.value_counts().sort_values().plot()

슬라이싱 활용
경기도에 소재지를 두고 있는 KOSPI 종목의 종목명과 종목코드(Symbol) 데이터를 확인

kyunggi = df["Region"] == "경기도"
kospi = df["Market"] == "KOSPI"
df.loc[(kyunggi & kospi), ["Symbol", "Name"]]

barplot은 범주형 데이터를 가정하고 그림
lineplot은 연속형 데이터를 가정하고 그림

profile
자라나라 새싹새싹🌱

0개의 댓글