본문 바로가기
서비스 기획/☁️ 데이터 분석 공부

[코드잇] 데이터 사이언스 입문 수강 완료!

by 림뽀 2022. 7. 18.
반응형

코드잇 "데이터 사이언스 입문" 수료 후기

코드잇 "데이터 사이언스 입문" 클래스를 수료했다. 만세! 기말평가는 95점을 맞았다. (무엇이 틀렸는지 알고 싶은데 안 알려주네..ㅎㅎ)

수료까지 약 2주 정도 소요됐다. 주말에 시간 내서 조금 열심히 하고 주중에 2번 정도 1시간 정도 하니까 금방 했다.

가장 시간이 오래 걸린 건 "데이터 프레임 다루기"의 마지막 퀴즈였다. 지금 생각해도 난이도가 참 높았다.

크롤링 과제도 쉽진 않았는데, 그래도 가장 어려운 과제는 데이터 프레임 다루기였다.

 

코드인 "데이터 사이언스 입문" 클래스는 파이썬 수업을 몇 번 들은 후 복습 용도로 듣기 좋은 수업이었다.

Datacamp처럼 퀴즈가 조금만 더 많았으면 학습에 용이하지 않았을까 하는 약간의 아쉬움이 있다.

 

코드잇 데이터 사이언스 입문 과정 수료

 

🔥 코드잇에서 북마크한 페이지 🔥

내가 외워야 하는, 혹은 개념을 숙지해야 하는 내용이다.

파이썬을 쓰면 앞으로도 계속 기억해야 할 내용이므로 이 페이지에 정리하고 기억이 나지 않을 때마다 꺼내 쓰려고 한다.

 

코드잇 북마크 페이지

 

1) 박스플롯

맥주 도수('abv') 데이터의 이상점(outlier)을 찾고, 제거하기

 

df.plot(kind='box',y='abv')

 

box plot의 outlier

 

이상점(outlier) 구하는 식

box plot의 "box" 영역에 해당하는 25%~75% 영역을 IQR이라고 하는데, box로부터 1.5*IQR보다 위, 아래로 더 멀리 떨어져 있으면 이상점(outlier)로 취급한다.

 

#이상점 구하는 식
q1 = df['abv'].quantile(0.25)
q3 = df['abv'].quantile(0.75)
iqr = q3 - q1
cond = (df['abv'] < q1 - 1.5*iqr) | (df['abv'] > q3 + 1.5*iqr)

#이상점에 해당하는 값 지우기
df.drop(df[cond].index,inplace=True)

 

2) DataFrame 인덱싱 문법

꼭 외우기! 자주 헷갈린다. 특히, .loc을 쓰지 않고 가져올 수 있는 방법이 row와 column 별로 다르므로 신경 쓸 필요가 있다.

코드잇 - DataFrame 인덱싱 문법

 

3) 크롤링하는 방법

큰 흐름만 이해하면 응용해서 쓸 수 있다.

CSS 선택자에 대한 이해가 미숙해 아래 링크를 참고해서 과제를 해결했다.

실제로 크롤링을 하려면 적절한 선택자를 찾느라 시간이 오래 걸릴 듯하다.

https://www.w3schools.com/cssref/css_selectors.asp

 

import pandas as pd
import requests
from bs4 import BeautifulSoup

# 코드를 작성하세요.
records=[]
for x in range(2010,2013):
    for y in range(1,13):
        for z in range(0,5):
            response = requests.get("url?year="+str(x)+"&month="+str(y)+"&weekIndex="+str(z))
            soup = BeautifulSoup(response.text, 'html.parser')
            if len(soup.select('.row'))>1:
                date = soup.select('option[selected="selected"]')
                rank = soup.select('.rank')
                channel = soup.select('.channel')
                program = soup.select('.program')
                percent = soup.select('.percent')
                
                for i in range(1,11):
                        #record.append(date[i].text)
                        record = []
                        record.append(date[2].text)
                        record.append(rank[i].text)
                        record.append(channel[i].text)
                        record.append(program[i].text)
                        record.append(percent[i].text)
                        records.append(record)

                df = pd.DataFrame(data = records, columns = ["period","rank", "channel", "program","rating"])
# 결과 출력
df.head()

 

4) 데이터 제공 사이트

국내 사이트

해외 사이트

 

반응형

댓글