Python 33

도커 이미지 생성과 삭제 방법.

1. 도커 이미지 생성 (Python 3.6 docker container image build) 1) 기본적인 이미지 생성 방식 우분투 이미지를 베이스로 파이썬을 설치한 후, 필요한 모듈을 pip받아와서 실행. 미니콘다 이미지를 베이스로 conda environment를 설치하기. 둘 다 설명하도록 하겠다. 2. 우분투 이미지를 베이스로 설치하는 방법. 머신러닝을 위해 tensorflow와 mxnet, torch가 설치된 나만의 image를 빌드해보자. 우선 폴더를 만들고, 해당 폴더에 Dockerfile, requirements.txt, test.py를 생성. Dockerfile ###Dockerfile FROM ubuntu:16.04 # 환경변수 설정 (옵션) ENV PATH /usr/local/b..

BeautifulSoup4를 사용한 간단한 크롤러 만들기

python 버전은 3.7이며, requests와 bs4 라이브러리를 외부에서 다운받아야 합니다. (가상환경을 사용하면 쉬움) 예제로 만든 코드는 네이버 영화에서 영화 순위, 이름, 변동여부, 변동등수를 가져오는 코드입니다. https://movie.naver.com/movie/sdb/rank/rmovie.nhn 랭킹 : 네이버 영화 영화, 영화인, 예매, 박스오피스 랭킹 정보 제공 movie.naver.com ****** 한글이 깨지는 경우 encoding을 'UTF-8'로 해도 깨지는 경우에는 file = open( ~, encoding = 'euc-kr')을 하면 해결됩니다. 1. 전체 코드 import requests from bs4 import BeautifulSoup import csv cla..

pd.groupby / pivot_table (집계연산)

1. 집계연산 기본적으로 pandas에서는 sum( ), mean( ), median( ), min( ), max( )와 같은 기본적인 연산을 지원한다. 데이터를 부분적으로 연산하고 싶다면, groupby 또는 pivot_table을 사용하면 된다. 기본 집계 메서드는 다음과 같다. count( ) -> 데이터 전체 개수 first( ), last( ) -> 첫 데이터, 마지막 데이터 mean( ), median( ) -> 평균값, 중앙값 min( ), max( ) std( ), var( ) mad( ) -> 절대 평균 편차 prod( ) -> 전체 항목의 곱 sum( ) 2. Groupby( ) groupby( )에 원하는 키를 전달해주면 해당 키만을 결합하여 연산을 진행한다. methods별로 묶어서..

Python/Pandas 2020.03.27

Keras에서 재현가능한 결과를 얻기(Reproducibility)

keras를 이용해 LSTM 모델을 만들던 중에 문제가 하나 발생했다. 같은 코드로 실행을 했는데, 같은 결과값이 나오지 않는다. 시행할 때마다 다른 loss와 val_loss들이 나오기 때문에, 모델이 변경되었을 때 개선되었는지에 대한 판단이 어렵다. 원인은 크게 3가지이다. 1. GPU모델을 사용했다. -> CPU를 사용하면 됨 2. Multi-Thread를 사용했다. -> Single-Thread로 변경한다 3. Random Seed. -> Seed를 지정해준다. 각 원인에 대한 자세한 설명을 알고 싶다면, 다음 유튜브 영상을 참고하자. https://www.youtube.com/watch?v=Ys8ofBeR2kA 나같은 경우에는 이유를 알아보니, 멀티 쓰레드를 사용한 것 + Random_seed의..

random 모듈

1. Random random 모듈은 임의의 값을 생성할 때 주로 사용함. 1) random.seed ( N ) -> 랜덤 숫자 생성의 초기화 작업. 2) random.random( ) -> 0.0 가우스 분포의 난수를 반환 5) random.randrange(start, stop, step) -> range( ) 의 아이템 중에서 임의의 값을 선택하여 반환 6) random.randint(a, b) -> a 입력받은 sequence를 섞음 import random random.random() #0.26483659 random.uniform(3,4) #3.328149852 for i in range(3): random.gauss(1,1.0) #1.347587 , 1,797528492 , 0.3846293..

Python/기초 2020.03.18

Time / Datetime (날짜, 시간 모듈)

1. Time 시간 연산을 위한 모듈. import time # 1. 1970년 1월 1일 00:00:00을 기준으로 경과한 초를 반환. time.time() #2. 현재 시간 구하기 time.localtime(time.time) """ 결과 time.struct_time(tm_year=2020, tm_mon=3, tm_mday=17, tm_hour=23, tm_min=30, tm_sec=11, tm_wday=2, tm_yday=77, tm_isdst=0) """ #3. 날짜 형식으로 바꾸기 time.strftime('%Y-%m-%d', time.localtime(time.time())) #'2020-03-17' time.strftime('%c', time.localtime(time.time())) #'..

Python/기초 2020.03.18

pd.concat / df.append / pd.merge

1. pd.concat( ) pandas.concat (objs, axis=0, join='outer', ignore_index: bool = False, keys=None, levels=None, names=None, verify_integrity: bool = False, sort: bool = False, copy: bool = True) axis = 0 (default) 0 = 세로 결합 1 = 가로 결합 join = outer (default) outer = 합집합으로 결합 inner = 교집합 결합 ignore_index = False (default bool) False면 기존의 인덱스를 그대로 유지해서 결합 True면 새로운 정수형 인덱스를 생성 keys = None (default seq..

Python/Pandas 2020.03.13

14. Pandas - 다중인덱싱(Multi Index)

1. 다중인덱싱 생성 인덱스가 2개일 수도 있을까? 인덱스가 2개인 경우, 다중 인덱싱이 가능하다. 인덱스가 사람이름, 교과목명 2가지인 경우, 다음과 같이 만들 수 있다. 1) DataFrame에서는 생성자에 2개의 인덱스 배열 리스트를 전달한다. 2) Series에서는 튜플을 키 딕셔너리로 전달함. 3) index 와 data가 따로 인경우, Series를 만든 후 reindex한다. 다음과 같이 인덱스를 MultiIndex로 만들어주고, 리인덱싱을 하면 다음과 같이 만들어 지게 된다. 2번째 인덱스가 English인 데이터에 접근하려면 아래와 같이 사용하면 된다. 4) 다중인덱스의 DataFrame만들기 인덱스와 칼럼에 각각 names를 만들어 주면 된다. 2. MultiIndex 메소드 1) un..

Python/Pandas 2020.03.12

13. Pandas - 결측값(Nan, None)

결측값 (None, NaN) 1) None (Numpy) Numpy에서는 None 값을 사용하지 말자. None은 파이썬 객체이고, Numpy연산이 불가능하다. Pandas에서 사용이 가능하기는 하지만, 연산속도가 느려지고 Numpy메소드 사용이 불가능하므로 사용하지 않는 것을 권장한다. 2) NaN (Numpy) NaN이 포함된 산술 연산의 결과는 무조건 모두 NaN이 된다. 3) None, NaN (Pandas) Pandas에서 None은 자동으로 nan으로 변경한다. Null 값 탐지 : isnull( ) / notnull( ) isnull에서는 null값이 있으면 True, 없으면 False. nan과 None 모두 null값으로 처리함 Null 값 제거하기 : dropna( ) , fillna(..

Python/Pandas 2020.03.04

12. Pandas 정리 - 객체 (Series, DataFrame), 인덱싱

1. Series # pd.Series(data, index = [ ]) Series는 데이터의 1차원 배열이라고 할 수 있다. numpy배열이며, 값은 values로 인덱스는 index로 접근할 수 있다. 이 때, values는 Numpy배열이다. 인덱스를 이용하여, 특정 값에 접근할 수 있다. Numpy와는 다르게 인덱스 값을 설정할 수 있다. (np는 정수열 인덱스만 가능) 인접하지 않는 정수형 인덱스를 설정할 수도 있다. 인덱스를 키라고 생각한다면, Series배열은 딕셔너리형 객체라고 생각해도 무방하다. 2. DataFrame # pd.DataFrame(ndarray, index = [ ], column = [ ]) https://pandas.pydata.org/pandas-docs/stable..

Python/Pandas 2020.02.26