목록Python (173)
오답노트
to_datetime 위 사진에서 date 열의 자료형은 object이다. 하지만 우리 눈에는 시간으로 보여진다. to_datetime을 이용해 시간 타입으로 바꿔보자 data['date'] = pd.to_datetime(data['date']) 이 datetime64 는 파이썬 기본 패키지인 datetime 의 datetime 클래스와 같다. 우선 공식 문서를 참고하자. 나중에 datetime에 대한 링크를 추가하도록 하겠다.
crosstab pd.crosstab(col1,col2) 두 범주형 변수로 빈도수를 파악하는데 사용된다. pd.crosstab(titanic['Survived'], titanic['Sex']) normalize normalize 옵션은 빈도 수의 합을 1로 만들어준다. columns 열의 합이 1이 되도록 normalize 시킨다. pd.crosstab(titanic['Survived'], titanic['Embarked'], normalize = 'columns') 각 열의 합은 모두 1이다. index 행의 합이 1이 되도록 normalize 시킨다. pd.crosstab(titanic['Survived'], titanic['Embarked'], normalize = 'index') 각 행의 합은 1..
Rolling df['col'].rolling(n,min_period).연산함수() 시리즈에서 사용할 수 있는 메소드로 시리즈의 값을 묶어서 이에 대한 연산을 할 수 있다. 연산한 결과는 n개로 묶을 때 마지막 인덱스에 입력한다. 묶을 개수는 n으로 정할 수 있다. min_periods옵션은 연산에 대한 최소 개수이다. 연산 함수에서 굳이 n개가 충족되지 않더라도 min_periods에서 설정한 개수만큼 데이터가 있다면 연산을 수행한다. min_periods를 설정하지 않으면 n을 기준으로 연산한다. df['S2'] = df['S1'].rolling(3).sum() #S1 시리즈에서 3개의 데이터를 합산 df['S2'] = df['S1'].rolling(3,min_periods=1).sum() #S1에서..
merge pd.merge(dataframe1,dataframe2,how,on,as_index) merge는 병합으로 SQL에서 join과 같다. key를 따로 지정하지 않으면 자동으로 지정한다. 인자로는 데이터프레임 2개를 받고 how 옵션은 merge할 방식을 left ,right, inner ,outer 으로 지정할 수 있다. 기본은 inner다. on 옵션은 병합의 기준이 될 행을 선택할 수 있다. 사용하지 않으면 자동으로 기준이 정해진다. left dataframe1을 기준으로 merge pd.merge(df1,df2,how="left") right dataframe2을 기준으로 merge pd.merge(df1,df2,how="right") inner dataframe1과 dataframe2에..
iterator 반복가능한 객체다 iter()를 통해 iterator를 만들 수 있다. it = iter([1,2,3]) type(it) # list_iterator next(it) # 1 next(it) # 2 next(it) # 3 next(it) # 에러발생 next 함수를 통해 itreator의 메모리 위치를 다음으로 바꿀 수 있다. it 에는 1,2,3이 있는데 next를 4번 호출하게 되면, it 밖에 메모리를 보게돼서 에러가 발생한다. class It: def __init__(self): self.prev = 0 self.curr = 1 def __iter__(self): return self def __next__(self): value = self.curr self.curr += self..
scrapy 파이썬으로 웹페이지의 데이터를 수집하는 프레임워크이다. 정적페이지 웹 크롤링 우선 scrapy 프레임워크를 다운 받는다. !pip install scrapy 다운로드가 끝나면 scrapy 프로젝트를 생성한다. !scrapy startproject musinsa 프로젝트 생성에 성공하면 프로젝트 이름으로 폴더가 생성된다. 프로젝트 폴더 아래에 프로젝트 이름 폴더와 spider 폴더가 존재한다. - items.py : 수집할 데이터의 구조 정의 - middlewares.py : 데이터를 수집할 때 headers 정보와 같은 내용 설정 - pipelines.py : 데이터를 수집한 후에 코드 실행 정의 - settings.py : 크롤링에 대한 설정 :크롤링 시간 간격, robots.txt에 대한..
XPath XPath는 XML에서 사용하는 요소나 속성을 지정할 수 있다. scrapy에서는 XPath를 통해 Element를 지정할 수 있다. 문법 // : 최상위 Element = css selector : (.class p) *[@class = "class_sample"] : 속성값으로 Element 선택, @는 지정할 속성 " " 에는 속성에 대한 속성명이 입력된다. / : 한 단계 하위 Element = css selector : (.class > p) [n] : n 번째 Element 예시로 크롬 개발자 도구를 사용해 XPath를 가져오고 문법에 따른 관계를 살펴보자 Element에 우클릭 -> Copy -> Copy XPath 를 하면 클립보드에 XPath가 저장된다. //*[@id="NM_..
[selenium] selenium 간단 사용법 [selenium] selenium 간단 사용법 selenium selenium은 브라우저의 자동화 목적으로 만들어진 다양한 브러우저를 제어할 수 있도록 하는 라이브러리 selenium 사용준비 라이브러리 설치 !pip install selenium 파이썬에서 해당 소스를 실행시 dhjkl123.tistory.com selenium을 이용한 정적 페이지 웹 크롤링 무신사 상품 랭킹을 가져오는 실습을 통해 알아보자 from selenium import webdriver from selenium.webdriver.common.by import By driver = webdriver.Chrome() driver.get("https://www.musinsa.com..
selenium selenium은 브라우저의 자동화 목적으로 만들어진 다양한 브러우저를 제어할 수 있도록 하는 라이브러리 selenium 사용준비 라이브러리 설치 !pip install selenium 파이썬에서 해당 소스를 실행시켜 selenium을 설치하자. webdriver 설치 https://chromedriver.chromium.org/downloads ChromeDriver - WebDriver for Chrome - Downloads Current Releases If you are using Chrome version 104, please download ChromeDriver 104.0.5112.79 If you are using Chrome version 103, please downl..
정적 페이지 정적 페이지는 페이지에 변화가 있으면, URL에도 변화가 있는 페이지가 정적 페이지다. 정적 페이지 웹 크롤링 정적 페이지는 HTML에서 CSS Selector를 통해 웹 크롤링 할 수 있다. 무신사 상품 랭킹 목록을 크롤링 실습을 해보자. 1. bs 패키지를 먼저 설치한다. !pip install bs 2. https://www.musinsa.com/ranking/best?period=now&age=ALL 에 접속해서 개발자 도구(F12)를 열고, 최상위 Elements 탭을 연다. 3. Ctrl + Shift + C 또는 Elements 좌측에 마우스 커서 아이콘을 클릭하여 상품 이름을 클릭한다. 4. CSS Selector를 통해서 상품 브랜드, 상품명, 상품 가격에 대한 CSS Sel..