map()
, apply()
, applymap()
차이점
merge()
, concat()
, append()
: 데이터프레임 병합 시 사용
merge
concat
append
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. 시험의 상대평가)데이터 시각화 도구
BI 툴의 장점? : 방대한 데이터를 쉽고 빠르게 시각화할 수 있음
python 시각화 라이브러리
plotnine
: R의 ggplot과 거의 유사하게 구현한 라이브러리
seaborn의 multi-plot grid
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 으로 구간을 조절해서 결과를 확인할 수 있음
fig.update_layout(xaxis_rangeslider_visible=False)
로 rangeslider를 끌 수 있음시각화 할 때 대표값을 표시해야 한다면 그래프에서 계산하지 않고 미리 계산하고 시각화해서 속도를 개선할 수 있음
메서드 체이닝 : 메서드들을 붙여서 사용하는 방법
df.value_counts().sort_values().plot()
슬라이싱 활용
경기도에 소재지를 두고 있는 KOSPI 종목의 종목명과 종목코드(Symbol) 데이터를 확인
kyunggi = df["Region"] == "경기도"
kospi = df["Market"] == "KOSPI"
df.loc[(kyunggi & kospi), ["Symbol", "Name"]]
barplot은 범주형 데이터를 가정하고 그림
lineplot은 연속형 데이터를 가정하고 그림