프로그래밍 문법/python 64

데이터프레임 문자열 컬럼을 두개로 쪼개기

문자열 쪼개기 하나의 문자열 컬럼을 쪼개서 다른 문자열 컬럼 두개로 만든다 str사용 a = df["SNP_01"].str[0] b = df["SNP_01"].str[2] display(pd.DataFrame({"SNP_01_01":a,"SNP_01_02":b})) apply함수사용 def split_get_one(a): return a[0] def split_get_two(a): return a[2] a = train["SNP_01"].apply(split_get_one) b = train["SNP_01"].apply(split_get_two) display(pd.DataFrame({"SNP_01_01":a,"SNP_01_02":b}))

파이썬 zip함수

파이썬 zip함수 여러 iterable한 자료형을 순서대로 묶어준다 예시 1 a=[1,2,3,4,5,6,7,8,9] b=[10,20,30,40,50,60,70,80,90] c=[100,200,300,400,500,600,700,800,900] list(zip(a,b,c)) 예시 2 : 묶을 데이터의 길이가 다르면 같은 거 까지만 묵어준다 a=[1,2,3,4,5,6,7,8,9] b=[10,20,30,40,50,60,70,80,90,10,20] c=[100,200,300,400,500,600,700,800,900,100,200] list(zip(a,b,c)) 예시 3 : 자료형이 달라도 묶인다 a=[1,2,3,4,5,6,7,8,9] b={10,20,30,40,50,60,70,80,90,10,20} c=(10..

pip이용하여 requirements.txt 만들기

1. requirements.txt 현재 가상환경에 설치된 python 패키지를 버전과 함께 작성하여 requirements.txt 파일에 저장한다 2. requiremnets.txt 생성 커맨드 다음 커맨드를 이용하여 자동으로 requirements.txt파일을 생성할 수 있다. pip freeze > requirements.txt * 가끔 다음과 같이 @ file 형식으로 버전이 저장되는 경우가 있다. aioredis @ file:///home/conda/feedstock_root/build_artifacts/aioredis_1591809643295/work amqp @ file:///home/conda/feedstock_root/build_artifacts/amqp_1591005859311/work..

파이썬 argparse 사용법

argparse 파이썬 실행시 옵션을 추가할 수 있게 해주는 argparse의 사용법을 알아본다. argparse 구현 import argparse def main(): # args 선언 args = argparse.ArgumentParser() # arg 추가 args.add_argument('--arg1', type=str, default='default1', help='이것은 default1입니다.') args.add_argument('--arg2', type=str, default='default2', help='이것은 default2입니다.') args.add_argument('--arg3', type=int, default=3, help='이것은 default3입니다.') # 파싱 conf..

파이썬 라이브러리 설치, 버전확인, 삭제

1. 라이브러리 설치 pip install [라이브러리이름]==[버전] 버전을 적지 않으면 최신 버전으로 설치 2. 라이브러리 버전 확인 2.1 콘솔창에서 확인 pip show [라이브러리이름] 2.2 코드에서 확인(파이썬 3.8이하) from importlib_metadata import version print(version('라이브러리')) 2.3 코드에서 확인(파이썬 3.8이상) import pkg_resources print(pkg_resources.get_distribution('pywin32').version) 3. 라이브러리 삭제 pip uninstall [라이브러리]

PyAutoGUI 실행시 pyautogui.FailSafeException 에러

1. 문제, 원인 PyAutoGUI로 파일 실행시 다음의 에러가 발생하는경우가 있다. pyautogui.FailSafeException: PyAutoGUI fail-safe triggered from mouse moving to a corner of the screen. To disable this fail-safe, set pyautogui.FAILSAFE to False. DISABLING FAIL-SAFE IS NOT RECOMMENDED. 이는 파일이 실행중, 마우스가 모니터 사각형 모서리에 가는 경우 발생하는 에러이다 2. 해결 pyautogui.FAILSAFE = False 위의 코드를 추가하는 것으로 해당 에러를 방지할 수 있다.

파이참 모듈 설치후에도 ModuleNotFoundError: No module named 에러발생시 해결법

특정 모듈 설치 후에도 ModuleNotFoundError: No module named 에러가 발생하는 경우가 있다. 이런 경우 모듈이 설치된 파이선인터프리터와, 현재 실행되고있는 파이썬 인터프리터가 다른 경우가 원인일 때가 있다. 즉 모듈이 설치된 파이선 인터프리터를 현재 파일의 인터프리터로 설정하면 문제가 해결된다. 따라서 1. 모듈이 설치된 파이썬 인터프리터 2. 현재실행되고있는 파이썬 인터프리터 위 1,2를 일치시키면 문제가 해결된다.

함수 파라미터를 변수로 묶어서 넣기 (*args, **kwargs)

함수의 파라미터를 변수로 만들어주는 것 *args, **kwargs 함수의 파라미터 값이 매우 많은 경우가 있다. (catboost의 예) 이 경우 함수의 파라미터값을 줄줄 써주어야 하는 불편함이 있다. 이를 방지하기 위해 변수에 함수 파라미터를 넣고, 해당 변수만 함수의 input값으로 주면 코드를 깔끔하게 할 수 있다. 이를 가능하게 해주는 것이 *args와 **kwargs이다. 먼저 파라미터 a,b,c가 있는 다음과 같은 함수가 있다. def func(a,b,c): print("a : ",a) print("b : ",b) print("c : ",c) 이를 *args와 **kwargs *args 파라미터들을 튜플형태로 묶어준다. 파라미터 순서에 맞게 튜플 값들의 순서를 맞춰주어야 한다. input_a..

파이썬 함수주석(Function Annotations), (->, : , __anotations__)

파이썬 Function Annotations 파이썬에서 함수를 구현할때, input과 output의 type을 주석으로서 명시해줄 수 있다. 다음과 같이 ":" 과 "->"를 하고 타입을 명시해준다. def f(a:str, b:int, c:bool)->list: 이는 a는 string타입, b는 int타입, c는 bool타입, 그리고 함수 리턴값은 list타입을 의미한다. 예시 1. code def f(a:str, b:int, c:bool)->list: print("a의 데이터타입은 string : ",a) print("b의 데이터타입은 int : ",b) print("c의 데이터타입은 bool : ",c) return [a,b,c] return_value = f("hello",10,True) print..

파이썬 시간 datetime 클래스

함수 의미 timetype.strftime(“%Y%m%d”) time 타입의 객체를 “20210510” 형식으로 바꿈 timetype-timedelta(days=1) 하루 전으로 시간을 옮김 datetime.datetime.strptime(“2021-07-19”,”%Y%m%d”) 문자열을 time 타입으로 (2021-07-19 00:00:00) dateobj.date() 분단위 까지 있는 시간타입을 일단위까지 만들어줌 (2021-07-19 00:00:00 => 2021-07-19 ) dateobj.weekday() 날짜타입의 요일을 반환 (월요일:0, 화요일:1 ...일요일:6)

파이썬 매직메소드

메직메소드란? 특정 클래스의 객체가 builtin 함수(혹은 사칙연산)의 input값으로 사용될 때 그 output값을 정의하는것. 예를 들어 string의 객체인 a,b가 아래와 같이 있다고 하자. a="hi" b="bye" 이때 print()를 사용하면(print(a),print(b)) hi bye 위와 같이 나오고 a+b를 하면 hi bye 위와같은 결과를 얻는다. 그렇다면 우리가 직접 클래스를 정의하고 그 클래스의 객체가 print, +, add등의 built in 함수에 사용되었을 때 결과값을 정의해보자. 클래스 정의 및 매직메소드 정의 class Myclass: def __init__(self,name,tall): self.name=name self.tall=tall def __repr__(s..

logging이란?

logging이란? logging은 오류의 발생위치 및 종류를 확인하는 도구이다. 사용자별로 필요한 오류의 종류에 맞게 logging의 객체를 만들고 확인하고 싶은 위치에 logging코드를 추가한다. 그럼 해당 위치에서 사용자가 지정한 오류를 확인할 수 있다. 아래의 예시와 같이 쓴다. (example) 전체 flow 먼저 전체 플로우를 미리 보면 아래와 같다 아래에서 구체적인 과정을 설명한다. 사진에 보이는 순서와 번호대로 매핑했다. logging 과정 1. logging 객체 생성 logging의 객체를 생성하고 레벨을 설정한다. 레벨은 아래에서 설명한다. #1.logger 객체 logger = logging.getLogger("brave_log") #객체 생성 logger.setLevel(logg..

직접만든 파이썬 package, module 불러오기

설명 파이참 환경에서 직접 만든 package, module을 import해서 쓰는법을 알아본다. module : 함수, 변수들로 구성된 단위 package : 여러 모듈들로 구성된 단위 디렉토리 상태 "test"라는 폴더에 파이참으로 프로젝트를 만들고 그 아래 다음과 같이 디렉토리를 구성하였다. 함수는 파일 이름에 f를 붙였다 그리고 test.py에서 각 모듈 및 패키지를 import한다 같은디렉토리에 있는 모듈 임포트 같은 디렉토리에 있는 모듈을 임포트 할때는 다음과 같이 한다 test.py from plusminus import plusf,minusf print(plusf(3,4)) print(minusf(3,4)) 같은디렉토리에 있는 폴더(패키지) 임포트 같은 디렉토리에 있는 폴더(패키지)를 임포..