본문 바로가기

python

(27)
keras Data generator custom하게 만들기 많은 데이터를 한 번에 Test하려고 하면 RAM error가 뜸. 이때 어떻게 하냐? Data generator를 이용하면 된다. 방법은 생각보다 간단하다. Sequence라는 녀석을 상속받는 클래스를 만들고, init과 __len__, __getitem__을 작성해준다! 필자의 경우 files가 입력으로 들어오면, 거기서 image를 로드하면 되는 형태다. 또한 file을 열면 그 파일 내에 X, Y가 둘다 들어가 있다. __getitem__을 구현해주면 된다. index 부분은 건드리지 않고 나머지 부분을 본인의 로직에 맞게 수정하면 된다. from tensorflow.keras.preprocessing import image from tensorflow.keras.utils import Seque..
keras Data generator custom하게 만들기 많은 데이터를 한 번에 Test하려고 하면 RAM error가 뜸. 이때 어떻게 하냐? Data generator를 이용하면 된다. 방법은 생각보다 간단하다. Sequence라는 녀석을 상속받는 클래스를 만들고, init과 __len__, __getitem__을 작성해준다! 필자의 경우 files가 입력으로 들어오면, 거기서 image를 로드하면 되는 형태다. 또한 file을 열면 그 파일 내에 X, Y가 둘다 들어가 있다. __getitem__을 구현해주면 된다. index 부분은 건드리지 않고 나머지 부분을 본인의 로직에 맞게 수정하면 된다. from tensorflow.keras.preprocessing import image from tensorflow.keras.utils import Seque..
[pandas] dataframe에서 순위 구하기 (numbers to index), 그룹별 점수 순위화하기 그룹별 점수 -> 순위화 위와 같이 카테고리별로 점수가 있다고 했을 때, 카테고리 별로 점수를 rank화 시키고 싶을 때 어떻게 해야 할까? 방법은 간단하다. 1. groupby를 이용해 특정 group별로 묶어준다. 2. groupby 객체에 rank 함수를 적용해준다. 주의할 점이 있다. 위와 같이 하면 기본적으로 등수에 소수점이 섞인 값이 나온다. 이유는 rank method의 방법의 default 값이 'average' 이기 때문이다. 내가 원하는 건 등수이지 소수점이 아니다. 보통 쓰는 방법은 'min'이다. 이렇게 하면 공동 2등이 있을 경우, 3등은 없고 4등부터 나온다. 점검 카테고리별로 등수, 순위가 제대로 메겨졌는지 확인해보자. 상위 10개만 뽑았기에 순위가 좀 달라 보일 수 있지만 제..
[데이터 시각화] visualzation , jupyter lab, jupyter notebook에서 matplotlib/seaborn 한글 font 설정 방법 [Mac Os] 3시간은 삽질한 것 같은 폰트 문제? 결국 폰트문제가 아니지만, 폰트는 잠정적 문제 mpl.font_manager._rebuild() font_manager를 rebuild해야한다!~~!!!!!!!!!!1 아 화난다.. https://ohgyun.com/769 import pandas as pd import numpy as np import re import random import matplotlib.pyplot as plt import seaborn as sns import json %matplotlib inline # 필요한 패키지와 라이브러리를 가져옴 import matplotlib as mpl import matplotlib.pyplot as plt import matplotlib.font_ma..
[오픈 Api 이용하기] 금융위원회_기업기본정보 python, 공공 데이터 https://data.go.kr/tcs/dss/selectApiDataDetailView.do?publicDataPk=15043184 금융위원회_기업기본정보 데이터를 이용하고자 했다. 쉽게 될 줄 알았는데 뭔가 막혀서 삽질을 많이했다. 기록은 남겨둘까 한다. from urllib.request import urlopen from urllib.parse import urlencode, unquote, quote_plus import urllib import json from pprint import pprint url = 'http://apis.data.go.kr/1160100/service/GetCorpBasicInfoService/getCorpOutline' decode_key = un..
[pandas] str으로 나타내진 datetime 을 mean 연산 가능한 형식으로 변환하기 from dateutil.parser import parse tuple(map(lambda x: int(x), tuple("2015.05.23".split("-")))) 위 코드가 정상 작동한다. 하고 싶은건 “2015.05.23” 이런 str 데이터를 df[“date”].mean()했을 때 딱 평균 시간이 나오게 하는 것이다. new_df["dates"] = new_df["dates"].map( lambda date: pd.datetime(*tuple(map(lambda x: int(x), date.split(".")))) )위 코드를 짜며 배운점 *args 문법을 써준다. tuple이 들어가서 자동으로 pd.datetime()에 맞는 인자로 들어간다. pd.datetime은 pd.datetime(20..
[크롤링] beautiful soup에 관하여, 내가 bs를 쓰지 않는 이유 parsing을 ‘html.parser’, ‘lxml’, ‘html5lib’ 중 어떤 걸로 하느냐에 따라 좀 달라진다고 한다. 그렇지만 특정 사이트들에 원하는 항목은 아예 html 내에 없을 수도 있었다. 아무리 봐도 request를 통해 얻은 response의 text엔 내가 원하는 정보가 없었다. 얼마나 삽질을 했을까… 문법적 오류가 있는 줄 알고 계속 beautiful soup 문법을 살펴보며 이래 저래 방법을 찾으려 햇다. 그런데 다시보니 원하는 테그가 아예 크롤링 된 결과에 없어서 안되는 것이었다. selenium으로 갈아타자… 좀 느리긴 하지만. 그래도… scrapy를 공부하면 훨훨 날듯이 쓸 수 있을 것 같은데. 정리하면 beautiful soup는 안 통하는 사이트가 많은 것 같다. sel..
[크롤링 관련] selenium stale 에러 selenium stale 에러 stale element reference: element is not attached to the page document 위와 같은 에러가 발생했다. 찾아봐도 잘 몰랐다. 유심히 살펴 해석해보면 그 요소가 html? 문서에 없는데 그걸 긁으려 한다고 에러를 보내는 것이다. 즉, selenium으로 웹페이지가 너무 빨리 넘아가서 그렇다! 이게 driver.implicit_wait(1) 이런 식으로 대기시간을 주면 되는 줄 알았다. 그래서 다른 문제인지 알고 한참 찾았는데… 저 함수가 안 통했던 것이다!!! 왜 안되는걸까...? 답은 time.sleep을 주면 된다. 그러면 stale error가 더 이상 안난다. stale error 때문에 크롤링 결과가 되게 엉성했다…..

728x90