today topic.
summary
1. isin() & str.contains
▶ isin : 리스트 형태에서 사용 가능!!
burger = ["버거킹", "맥도날드", "KFC", "롯데리아"]
df[df["상호명"].isin(burger)]
▶ 그러나 isin은 일치하는 것만 찾기 때문에 사용에 적합하지 않음!!
▶ str.contains로 부분 일치 적용
df[df["상호명"].str.contains("버거킹|BKR|맥도날드|멕도날드|롯데리아|KFC|케이에프씨")]
2. heatmap() & style.background_gradient()
- 전달하고자하는 메세지가 무엇인가?
▶ heatmap() - 전체 스케일 비교에 적절
▶ style.background_gradient() - 각 변수별 비교에 적절
3. crosstab, pivot_table, groupby
df_c = pd.crosstab(index=df_b["시도명"], columns=df_b["브랜드"])
df_p = df_b.pivot_table(index="시도명", columns="브랜드",
values="상호명", aggfunc="count", fill_value=0)
df_g = df_b.groupby(["시도명", "브랜드"])["브랜드"].count().unstack().fillna(0).astype(int)
4. 파일 병합
# 기본값 사용 전제시
- concat() => index, columns 값을 기준으로 병합
merge() => 기준 key를 기준으로 병합
join() => (기본값) 인덱스를 기준으로 병합. index or key coulmn
5. 상관분석(Correlation analysis) & 상관계수(Correlation coefficient)
(확률론과 통계학) 두 변수간에 어떤 선형적 또는 비선형적 관계를 갖고 있는지를 분석하는 방법.
▶ 두 변수는 서로 독립적인 관계이거나 상관된 관계일 수 있으며, 이때 두 변수간의 관계의 강도를 상관관계(Correlation, Correlation coefficient)라 한다.
▶ 상관관계의 정도를 파악하는 상관 계수는 두 변수간의 연관된 정도를 나타낼 뿐 인과관계를 설명하는 것은 아니다.
cf) 두 변수간에 원인과 결과의 인과관계가 있는지에 대한 것은 회귀분석을 사용
* 피어슨 상관계수
- r 값은 X 와 Y 가 완전히 동일하면 +1, 전혀 다르면 0, 반대방향으로 완전히 동일 하면 –1 을 가진다.
- 결정계수(coefficient of determination)는 r^2 로 계산하며 이것은 X 로부터 Y 를 예측할 수 있는 정도를 의미한다.
Q&A
Q. 파일 read시 진행상태를 알고싶다면?
A : tqdm을 사용.
Q. 결측치 수 -> heatmap()으로 시각화 비 추천?
A. 소요시간 多. isnull().sum() 과 isnull().mean() 정도만 사용.
Q. 어떻게 하면 장비를 효율적으로 사용할 것인가?
A. import 정도만 손을 봐도 트래픽비용이 줄어들 수고 있고, 캐시 사용 방법, 파일 I/O 관리, 데이터베이스 관리 등에 따라 비용이 달라짐.
▶ 트래픽을 분석이나 관리해 주는 도구 존재. 인프라에서 나오는 로그 데이터를 따로 분석 가능.
Q. 현업에서 분석시 예외적인 경우를 제거해주지 못한다면 어떤 문제가 발생하는가?
A. 분석결과에 대한 신뢰를 어느정도 할 수 있느냐의 문제. 지금 사용하는 데이터도 실시간 데이터는 아. 어느정도의 오차는 고려를 하고, 보고서나 대시보드 등을 만든다면 주의사항을 함께 기입.
▶ 데이터의 출처 변경? 등의 현실적인 대처 방안에 대한 고민 필요.
Q. 분석시 계산 불가한 수치가 나오면 삭제처리 or 수치 입력?
A. 목적에 따라 다름. 0으로 처리해도 되는 데이터라면 0으로채우고, 0으로 채우면 안 되는 데이터도 존재. inf 대신 np.nan 등으로 변경 가능.(결측치로 변경)
cf.) 보통 빈도수는 0으로 채우면 되는데 0으로 채우면 안 되는 데이터는?
현실 세계에서 0이 될 수 없는 데이터(나이, BMI지수, 체중, 키)
Q. 타이타닉 데이터에서 생존여부를 예측, 나이가 중요 요소 -> 결측치 다수.
결측치가 있으면 머신러닝 모델이 계산 불가.
이떄 나이를 0으로 채우면 제대로 예측할 수 없음. how use age?
A. 결측치가 많은데 나이 변수를 사용하고자 한다면, 구간화(Binning) 실행.
어린이, 성인, 고령자 등으로 범주화 하는 것이 구간화의 일종.
(bin : 히스토그램 시각화에서도 막대의 수를 구할 때 사용. 보통 히스토그램 시각화시, 결측치는 제외)
'멋쟁이사자처럼 AI School 8기(fin) > TIL(Today I Learn)' 카테고리의 다른 글
[멋쟁이사자처럼 AI스쿨] Day33 - TIL with 통계 (0) | 2023.02.14 |
---|---|
[멋쟁이사자처럼 AI스쿨] Day32 - TIL, 통계학 week with(유재명) (0) | 2023.02.13 |
[멋쟁이사자처럼 AI스쿨] Day-29 TIL (0) | 2023.02.07 |
[멋쟁이사자처럼 AI스쿨] Day28 TIL (0) | 2023.02.06 |
[멋쟁이사자처럼 AI스쿨] Day27, SQL week4 (0) | 2023.02.03 |