본문 바로가기
멋쟁이사자처럼 AIS7/오늘코드

[1005] EDA

by YeonGun M 2022. 10. 5.

* map과 apply : 파이썬의 느린 iterable 계산을 vector 연산을 통해 빠르게 해줌

* numpy가 빠른 이유는 반복문을 사용하지 않고 vector 연산을 하기 때문!!

* 파이썬에서 lamda 함수를 추천하지는 않으나 간단한 건 편하긴 함 (아래 코드 참고)

```python

def find_year(x):
    return x[:4]

df["생산연도"] = df["생산일"].map(find_year)

```

```python

df["생산연도"] = df["생산일"].map(lambda x : x[:4])

```

* merge : 공통된 index를 key값으로 두 df를 병렬병합

- on: 컬럼명이 동일할 때

- left_on, right_on : 컬럼명이 서로 다를 때

- how : 합집합(inner), 교집합(outer), 특정 집합(left, right 등)만 선택, default는 교집합(inner)

 -- 보통 right로 merge 하더라도 left가 더 직관적이기에 순서를 바꿔서 how = 'left'를 자주 사용함

- https://pandas.pydata.org/pandas-docs/stable/user_guide/merging.html

- https://pandas.pydata.org/pandas-docs/stable/getting_started/intro_tutorials/08_combine_dataframes.html#min-tut-08-combine

* '\xa0'와 같은 아스키코드를 제거하지 못할 경우 인코딩 에러가 발생(cp949로 저장 불가)

* 파이썬에서는 utf-8로 인코딩 하기를 권장함

* %pwd : jupyter notebook 경로 확인

* 도움말 : (shift + tab + tab)

* koreanize-matplotlib : 한글폰트 적극 추천, 나온지 얼마 안된 새삥입니다
- https://github.com/ychoi-kr/koreanize-matplotlib

- 파이썬 문서 번역에도 참여하신 분이 배포한 pip

* plt.style.use : plot 꾸미기 가능, 'ggplot', 'fivethirtyeight'는 기본 폰트가 없어서 한글 폰트 그대로 사용 가능

* plt.legend(bbox_to_anchor=(1, 1)) : plot 오른쪽에 선박스 예쁘게 나와요

* plot(secondary_y =) : 두번째 y축

* plot은 matplotlib API와 pandas API 둘다 호출 가능

- matplotlib API : 자유도가 높으나 복잡, detail 설정 용이, https://matplotlib.org/

- pandas API : 추상화를 잘 해놔서 쉬움, 결국 matplotlib을 호출하는 건 같음

==> 즉, 아래와 같은 코드 혼용이 가능하다(seaborn도 마찬가지)

```python

df_norm.plot(figsize=(12, 5))              # pandas를 통한 matplotlib 호출, 크기는 (12, 5)
plt.axhline(0, c='k')                             # 0 값에 검은 선 생성
plt.legend(bbox_to_anchor=(1, 1))    # 각주 box를 오른쪽에 위치

```

* df.hist를 변수에 할당해주거나 ;를 달아주면 주석이 보이지 않음

* 왜도와 첨도: skew()와 kurt()

 

plotly https://plotly.com/python/

- ploty express 사용 권장, api를 모두 외울 필요는 없다(거의 유사)

* cufflink : plotly + pandas

* 내부는 Javascript, 인터페이스만 python

==> 한글 폰트 설정이 필요 없다!!! 대신 속도는 matplotlib보다 느림

==> 속도 향상을 위해,

    대푯값을 표시해야 한다면 그래프에서 계산하지 않고 미리 계산해서 시각화 하거나

    구간을 나눠서 실행하거나, 샘플링하거나 등의 방법이 있다.

* df.set_index 복습

* subplots을 그리기 위해 columns name 지정 필요

예) df_1.columns.name = "company"

* hover_data 는 인덱스가 아닌 컬럼 지정 가능

예) px.line(df, x="date", y="GOOG", hover_data={"date" : "|%Y-%m-%d"} )

 

 

 

댓글