일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 시그모이드함수
- Onehot인코딩
- 고객데이터분석
- 코드업 기초100제
- 코드업
- AI 데이터 분석 트랙
- 데이터분석가
- 소프트맥스함수
- ai school
- 데이터 분석
- 머신러닝
- 앨리스
- 데이터분석
- 딥러닝
- 멋사 ai
- 파이썬
- 고객세그먼트
- OneHotEncoding
- 기초100제
- 멋쟁이사자처럼 ai school 7기
- Python
- 멋쟁이사자처럼
- RFM
- 2022 AI 온라인 실무 교육
- 코딩테스트
- 데이터마케팅분석
- 코드업100제
- ai 스쿨 7기
- 캐글데이터분석
- RFM분석
- Today
- Total
초봉5센티미터
TIL 8. EDA (2) 본문
seaborn 에서는 서브플롯을 제공 하는 그래프를 따로 제공한다.
숫자 데이터라도 숫자가 코드로 되어있으면 범주형데이터이다.
남자 1 여자 2 이런건 숫자지만 범주형데이터이다.
범주형데이터임에도 bool, int, float 다 가능하다. df.nunique()
# 유니크 값 갯수 구하기 boxplot 은 대표값만 표현하기 때문에 데이터 분포를 알 수가 없다. 상자와 수염은 4분위수를 표현하고 밴드는 2분위수(중간값)이다.
그리는 방법 - 데이터에서 각 사분위수를 계산한다.
- 데이터값들을 줄을 세워서 생각하자.
- 1사분위와 3사분위를 밑변으로 하는 직사각형을 그리고 2사분위에 해당하는 위치에 선분을 그린다.
violin plot 같은 경우에는 FacetGrid 를 제공하지 않는다. col 이나 col_wrap 같은 기능이 violin plot 에는 없다.
그래서 서브플롯을 사용하기 위해 catplot 을 사용한다. seaborn은 알아서 통계값을 그려준다. 수치형변수를 시각화 할때, 범주형 변수를 시각화 할 때 쓰는게 다르다. seaborn 에 있는 example 을 다 따라해 보는걸 추천한다.
-----------------------------------------
웹 크롤링이라 말하지만 사실 거의 웹 스크래핑이다.
FinanceDataReader는금융데이터를 수집하는 라이브러리이다.
FinanceDataReader는 여러 사이트의 주가 정보를 수집해 온다. 다른 사이트가 수정되면 그 사이트에 맞게 고쳐줘야 수집을 계속 할 수 있다.
https://github.com/financedata-org/FinanceDataReader 현재 거래 가능한 종목들을 받아올 수 있다.
[데이터수집시 유의사항] 수집해도 되는 페이지인지 아닌지 확인 할 필요가 있다.
- 로봇 배제 표준
- 저작권
- 무리한 네트워크 요청
우리가 특정 request 에 요청을 보내는 것은 서버에 부담을 주는 거라서, 서버가 다운을 줄 수 있다. (ex 디도스공격) 서버가 다운 되면 영업침해 행위라서 민사소송 가능.. 서비스 제공자가 만들어 놓은 Api 를 통해서가 아닌 방식으로 수집을 하면 데이터베이스권에 대한 침해 행위일 수 있다.
공공데이터들에는 자유롭게 사용해도 되는지 표기가 되어있다.
로봇배제표준이 있으면 데이터 크롤링시 법적 제제를 받을 수 있다.
Disallow: / :이 의미는 이 절대 경로 위의 경로에서는 데이터 수집하면 안된다.
/ 는 절대 경로이다.
html 에서 table 이 있으면 pandas 에서 불러와서 쓸 수 있다.
범주형 데이터
- 데이터셋 불러오기 : sns.load_dataset()
- 데이터셋 일부만 가져오기(1) df.head() (2) df.tail()
- 요약하기 : df.info()
- 결측치 보기
(1) 결측치 합계 : df.isnull().sum()
(2) 결측치 비율 : df.isnull().mean()
(3) 결측치 시각화 : sns.heatmap(df.isnull(), cmap=’gray’)
- 기술통계
(1) df.describe(include="object") : 범주형 데이터 통계
(2) df.describe(include=“all“) : 모든 데이터 통계
(3) df.describe() : default 값은 수치형 데이터 통계
범주형 변수
- 유일값의 빈도수 : df.nunique()
- countplot으로 origin 빈도수 시각화 : sns.countplot(data=df, x="origin")
- origin의 빈도수 : df.value_counts(“origin”)
- 2개 이상의 변수에 대한 빈도수
: sns.countplot(data=df, x="origin",hue="cylinders")
pd.crosstab(index, columns) : 시각화한 값 직접 구하기
groupby
- origin 별로 그룹화 하고 mpg 의 평균 구하기
(1) mpg를 series로 가져오기 : df.groupby("origin")["mpg"].mean()
(2) mpg를 dataframe으로 가져오기 : df.groupby("origin")[["mpg"]].mean()
- unstack() :Multi index에서 마지막 인덱스를 column으로 끌어 올림
pivot table : groupby를 추상화한 기능
- 기본 aggFun = mean(평균)
boxplot 요소 직접 출력해보기
tmp = df.groupby("origin")["mpg"].describe()
eu = tmp.loc["europe"] europe의 통계값만 가져오기
Q3 = eu["75%"]
Q1 = eu["25%"]
IQR = Q3-Q1
OUT_MAX = (1.5*IQR) + Q3
OUT_MAX = Q1 - (1.5*IQR)
europe 에 해당되는 값에 대해
- boxplot 그리기 : sns.boxplot(data = df[df["origin"] == "europe"],x=df["mpg"])
- boxenplot 그리기 : sns.boxenplot(data = df[df["origin"] == "europe"],x=df["mpg"])
- violineplot 그리기 : sns.violinplot(data = df[df["origin"] == "europe"],x=df["mpg"])
산점도를 통한 범주형 데이터 표현
- scatterplot() : 점이 겹쳐 제대로 빈도수를 알기 어려움
- stripplot() : 점이 퍼져있어 빈도수를 볼 수 있으나, 여전히 점이 겹쳐있음
- swarmplot : 접이 겹쳐지지 않아 빈도수 볼 수 있음
catplot
- 기본값 : stripplot()
- 사용이유 : subplot을 그려볼 수 있기 때문
- sns.catplot(data=df, x= "origin", y="mpg",kind="box",col="cylinders",col_wrap=3)
FinanceDataReader이란?
- 한국 주식 가격, 미국 주식 가격, 지수, 환율, 암호화폐 가격, 종목 리스팅 등 금융 데이터 수집 라이브러리
- 여러 사이트에서 데이터를 수집함
- 사이트에서 무언가를 바꾸면 해당 라이브러리는 기능 유지를 위해 코드를 수정해야 함
- 데이터 불러오기 : df = fdr.StockListing(market="KRX")
Pandas-datareader : 외국에서 제공하는 기능
데이터 수집 시 유의 사항
- 수집해도 되는 페이지인지 확인
(1) 로봇 배제 표즌 robots.txt (2) 저작권 (3) 무리한 네트워크 요청
웹 스크랩핑 분쟁 사례
- 잡 코리아 vs 사람인 HR
- 여기 어때 vs 야놀자
로봇 배제 표준 (robots.txt)
- 사이트 뒤에 robots.txt를 추가하면 페이지 읽어가도 되는 지 알 수 있음
API
- API의 경우 서비스 요청이 서버에 무리가 되지 않도록 한 번에 전송하는 양이나 하루에 요청할 수 있는 횟수에 제한을 두고 있음
HTML 구조 이해
<html>
<head><title> </title> </head>
<body> </body>
</html>
- 웹페이지에서 [오른쪽 버튼] -> [검사] 누르면 코드 볼 수 있음
- <table>로 감싸져 있다면, pandas로 불러올 수 있음
CSS : 스타일 지정할 때 사용
검색 값 설정하기
- 웹사이트에서 검색한 URL 안에 검색어가 들어가 있음
- 쿼리스트링 : 검색어를 URL에 붙여서 넘기는 문구
pd.concat(dataframe 리스트) : 여러 dataframe 합치기
dropna() : 결측치 제거
reset_index() : 인덱스 번호 초기화
(series에서) ~ : 반대 값 반환
copy() : 깊은 복사 – 원본에 바꾸지 않음
= : 얕은 복사 – 원본을 바꿈
drop_duplicates() : 중복 데이터 삭제
'교육 > 멋쟁이사자처럼 AI School 7기' 카테고리의 다른 글
TIL 10. 데이터수집 (1) (0) | 2022.10.05 |
---|---|
TIL 9. EDA (3) (0) | 2022.09.28 |
TIL 7. EDA (1) (0) | 2022.09.27 |
TIL 6. Pandas 기초와 Seaborn (0) | 2022.09.22 |
TIL 5. Python (2) (1) | 2022.09.20 |