ℹ️ 데이터 11

[Python] 로또는 운일까 ? (로또 데이터 분석) - 1편. 로또 정보 수집하기

🔍 로또는 운일까 ? 최근에 나에게 안좋은 일들이 많이 생겼었다. 기분도 꿀꿀하고, 로또나 한장 사려고 편의점에 들어가서 구매를 했다. 그리고 토요일 밤에 집에 가는 길,아무 생각없이 결과를 확인해봤는데, 4등에 당첨이 된 것이다 !!! (내가 1/733 경쟁률을 뚫었다고 !? ) 버스를 타면서, 로또에 대해 분석해보고 싶은 생각이 들었고 집에 와서 데이터 분석을 위한 몇 개의 코드를 작성해 보았다. 1등에 당첨되려면, 대략 8,145,060,000 원을 쓰면 된다..?!(8억이 아니라 81억임 ...) 고작 이 데이터 분석으로  당첨될거라는 생각은 당연히 하지 않는다.다만,주어진 데이터로 재밌는 인사이트들을 추출 해보고자 한다. 각각의 독립적인 사건들로 만들어진 무의미한 데이터가 의미가 있을지를 탐구..

파이썬 판다스 (concat / merge)

📚 pandas concat / merge 함수 concat과 merge는 데이터 프레임들을 결합 할 때 자주 쓰는 판다스 함수이다. 매번 쓸 때마다 기억이 않나서 찾아본다... 이번에 최대한 깔끔하게 정리해서, 개념을 좀 더 확실히 해보려고 한다. 먼저 concat과 merge의 사전적 정의를 살펴보자 concatenate : 사슬같이 잇다, 연결시키다 merge : 합병하다, 병합하다, (서로 구분이 안되게) 어우러지다 두개 다 데이터 프레임을 합치는 것은 맞지만, concat은 주로 연결 시키는데 사용하고 merge는 합쳐서 어우러지게 한다고 생각하면 좋을 것 같다. 이제 예시를 한번 살펴보자. 💡 pd.concat import numpy as np import pandas as pd np.rand..

파이썬 판다스 (groupby / pivot_table)

groupby from sklearn.datasets import load_iris import pandas as pd import numpy as np iris = load_iris() df = pd.DataFrame(iris.data,columns=iris.feature_names) df["target"] = iris.target iris 데이터를 groupby 연습할 데이터로 써보자. df.groupby(by="petal width (cm)").count().head() 사용 가능한 집계 함수는 count / size / sum / mean / std / var / min / max 의 값들이 있다. df.groupby(["target","petal width (cm)"]).mean().head()..

[Python] 네이버 스토어 찜 크롤링 with requests _2탄

전에 1탄의 문제는 network에서 기록된 여러 개의 products 중 한 개의 products만 가져오는 것 였다. 이번 포스터에는 어떻게 한 페이지 안에 모든 찜을 가져오는 방법에 대해 소개하겠다. (1탄을 안 본 사람이 있다면 꼭 보고 오세용... 아니면 이해하기 힘듬 !) import requests cookies = { 'NNB': 'BZQEKFFD3ZGWG', 'ASID': '75100b1e000001840cfb852400000053', 'NV_WETR_LOCATION_RGN_M': '"MDUxMTAxMTg="', 'NaverSuggestUse': 'unuse%26use', 'autocomplete': 'use', 'NV_WETR_LAST_ACCESS_RGN_M': '"MDUxMTAxMTg..

[Python] 네이버 스토어 찜 크롤링 with requests _1탄

전편에 네이버 스토어 정보들을 크롤링하는 법에 대해 포스터를 썼다. (아직 selenium으로 크롤링하는 분 없길...) selenium은 동적으로 해서 뭐든 크롤링하지만, 해당 창에 들어가고 웹 로딩도 기다리고.... 이렇게 하면 시간이 저어엉 마아알 많이 든다. 나는 네이버 데이터들을 모으고 있는데 키워드만 약 5천 개다.... 그러면 5천 개의 웹페이지를 로딩해야 하는데 이건 진짜 아니다 ㅠㅠ ( 그래도 손으로 하는 것보단 나음) 암튼 말이 좀 길어졌는데 웬만한 스토어의 정보는 전에 포스트 방식으로 다 가져올 수 있는데 "찜" 이 자슥만 좀 귀찮게 되어있다. 그래서 오늘은 "찜" 개수를 어떻게 가져오는지 포스팅을 할 예정이다. 전에 했던 기본 베이스들이 필요하기 때문에 모르는 분들은 아래 포스트 먼..

네이버 크롤링 연결 제한 푸는법

크롤링할게 많아서 엄청하고 있는데... 하다 보니까 제한이 걸렸다 ㅠㅠ 처음에는 아이디만 바꾸면 되는 줄 알고 다른 네이버 아이디로 로그인했는데, 좀 되는 듯 보이다 다시 안된다;; 그래서 집 가서 다시 해보니 잘 된다!! 근데 문제는 또 돌리면 이런 에러가 뜬다 .... 아니 그러면 어떻게 하라구 !!! 물론 폰 핫스팟을 켜서 ip를 바꿔주면 되는데, 그것도 또 막히니까 ㅠㅠ 그래서 Expressvpn에서 Ip를 큰맘 먹고 구매하려는데.... 오이오이... 너무 비싼 거 아니냐구 그래서 이것저것 찾다가 꿀 사이트를 발견해서 짧게 소개하려고 한다. 두둥 탁! https://www.touchvpn.net/ Touch VPN Your real status: Unprotected IP: ISP: Locatio..

[Python] requests로 네이버 데이터랩 크롤링

학교에서 하는 프로젝트가 서서히 끝나가서, 이제 조금식 여유가 생기고 있다. 이제 다시 내 프로젝트에 집중을 하자 !! ( 문제는 했던 것들이 기억 안남...) 내 개인 프로젝트는 네이버 데이터들을 분석하는 것이다. 분석을 하려면 당연히 데이터가 필요하기때문에 자연스럽게 크롤링도 많이 하게된다. api로 가져 올 수 없는게 많아 네이버 데이터랩에서 크롤링을 하는중 ㅎㅁㅎ 예전에 데이터랩에서 카테고리별 top 500 keyword를 추출한 적 있었는데, 시간이 엄청 오래오래 걸린 기억이 있다 ㅠㅠ 아무래도 selenium 방식으로 하다보니 시간을 너무 많이 쓰게된다... 그리고 현재 지금, top 500 keyword를 업데이트 해야하는데 selenium으로 하면 정신 나갈거 같아 requsests 방식으..

T-test 정리

[T-test] 모집단의 분산이나 표준편차를 알지 못할 때, 모집단을 대표하는 표본을 추출한다.그리고 그 표본으로부터 분산과 표준편차를 추출하고 검정하는 방식이다.식을 통해 이해해보자면,  평균의 차이 / 표준 오차의 비율(표본 변화량)이라 보면된다.이렇게 t-value를 얻으면 평균차이의 크기를 알 수 있다.최종 결과는 p-value로 나타낸다.  그럼  p-value는 어떻게 나타낼까 ? 아까 구한 t 값을 가지고 집단의 숫자(자유도)와 원하는 p-value 기준에 따라 결정한다. p-value는 양쪽 극단값의 범위를 설정한다. (p-value가 작아질수록 주장에 대한 신뢰도가 올라간다.)일반적으로 p-value는 0.05(5%)이하면  그 통계를 신뢰 할 수 있다고판단한다. 이를 통해 통계적으로 유..

데이터 분석 이상치 처리 (Z-score,IQR)

이상치 처리 방법 제거 : 이상치를 제거하는 방법이다. 간단하지만 유효한 데이터일 경우 손실이 발생. 대체 : 이상치를 대체하는 방법이다. 평균, 중앙값, 최빈값 등으로 대체하여 사용. 범주화 : 연속형 변수를 구간별로 나누고 이상치를 특정 구간에 할당. 변환 : 이상치를 왜곡시키거나 조정한다. ex ) 로그 변환 이 포스터에 제거 방법에 대해 다룰 예정이다. 이상치 제거에는 여러 방법이 있는데 사분위수 방법과 Z-score 방법에 대해 알아보자. 1. 사분위수 방법 먼저 데이터를 오름차순으로 정렬한다. 그리고 25%,75%(Q1,Q3)에 해당하는 위치 값을 구한다. 그러면 IQR (IQR = Q3-Q1)의 값을 구할 수 있는데 여기에 가중치를 곱한 후 범위에 벗어나는 값을 이상치로 처리한다. 즉 , d..

[Python] selenium 없이 스크롤 하는 법 (네이버쇼핑)

0 제모제 1 유아세탁세제 2 기저귀휴지통 3 카테킨 4 파우더통 ... 1607 잡화 1608 의류 1609 여성 1610 패션 1611 생활 이 keyword로 네이버 쇼핑에 검색 한 후 Top 100 정도의 가격을 구해 평균을 내보고 싶다. 가장 단순하게 시도를 먼저 해보자. tmp = "키보드" url = (" https://search.shopping.naver.com/search/all?frm=NVSCPRO&origQuery& " "pagingSize=80&" "&productSet=total&" f"query={tmp}&" "sort=rel&" "timestamp=&" "viewType=list") headers={'User-agent': 'Mozilla/5.0'} response = req..