본문 바로가기

Data/Python

(11)
[conda] conda env 환경 복사하기 conda env 환경을 완전하게 똑같이 복사를 하고싶어서 자료조사를 해보았고. 아래와 같이 환경에 대한 yaml파일을 얻을수가있다. # 복사하고싶은 conda 가상환경 activate conda activate test # 복사하고자하는 conda 가상환경에 대한 패키지 yml파일 추출 conda env export > environment_root.yml # 가상환경 deactivate conda deactivate # 해당 파일을 가지고 다른 PC로 이동하여 코드 실행 conda env create -f ./environment_root.yml
[Python] 변수를 다른 파일에서 가져오기 이번에 Python코드를 작업하면서, 코드안에 긴 정보를 가지고있는 변수가 존재했고 이로인해서 전체적인 코드라인이 많이 증가하게되었다. 따라서, 해당 변수들을 다른 파일에 저장시켜놓고 매번 실행할때마다 가져오는 형식으로 바꿔보려고한다. 예시는 다음과같다. config.py파일이라는 곳에 아래와 같이(내가 불러오고싶은 변수들) 적어두고 # config.py 파일명은 자유 a = [1,2,3,4,5] b = "Hello! config.py!" 실제 실행하려는 파일에는 다음과같이 위 두개 변수를 불러읽을수 있다 # from 형식 from config import a from config import b print(a) print(b) # import 형식 import config print(config.a) ..
[Python] multiprocessing 작업시 배열 공유 방법 import psutil import os import time from multiprocessing import Process, Pool shared_list = [1,2,3,4,5] def count_step(temp): p = psutil.Process(os.getpid()) time.sleep(shared_list.pop(0)) print(shared_list) num_cores = 5 pool = Pool(processes=num_cores) pool.map(count_step, shared_list) pool.close() pool.join() print("DONE") 이번에 python으로 코딩하면서 Multiprocessing을 활용해야하는 일이 생겼다. 작업과정중에 특정 배열을 모든 프로..
[Python] ssh로 원격 conda python실행시 주의할 점 ssh로 원격 PC에서 python으로 특정 코드를 실행해야할때 주의해야할점이 있다. ssh로 python명령어를 날리면 "conda"의 python이 실행되는것이 아니고, 기본 환경에서의 python이 실행이된다. 따라서, conda환경의 python을 실행하기 위해서는 해당 conda경로의 python으로 실행시켜줘야한다. 아래는 예시이다 # as-is ssh ec2-1 'python test.py' # to-be ssh ec2-1 '/home/ubuntu/.conda/envs/pytorch/bin/python test.py'
[Python] splitlines, pandas splitlines 문자열이 만약 여러줄로 나뉘어져있을때, splitlines를 활용하여 바로 배열형식으로 바꿔줄수가 있다 a = """hi what is your name? haha """ a.splitlines() # ['hi', 'what', 'is', 'your', 'name?', 'haha'] pandas Dataframe column별 null개수 np.sum(df.isnull()) # df->pandas.DataFrame
[Python] psycopg2 라이브러리를 활용하여 table column얻기 airflow쪽에 dag정보를 얻어오기위해 postgre db를 연결하는 코드를 만든이후에 column에 대한 정보값을 얻으려면 아래와같이 작업해주면된다. column정보값을 얻는 코드는 sql 쿼리를 실행한 이후에 cur.description 을 실행해주면된다 import psycopg2 try: # db connect conn = psycopg2.connect( host = "", dbname = "", user = "", password = "" ) cur = conn.cursor() # run sql code cur.execute(""" select * from ( select dag_id, count(distinct id) as CountId from dag_run group by 1) A wh..
[Python] 리스트 일정 구간 통째로 바꾸기 python 에서 일정구간 array 값을 한번에 바꾸고싶을 때 다음과 같은 방식으로 진행 a = [0, 0, 0, 0, 0, 0, 0] b = [1, 2, 3] # a라는 array에서 0번째에서 2번째까지 b의 array 값으로 바꾸고싶을땐 a[0:2] = b print(a) # a = [1, 2, 3, 0, 0, 0, 0] 일정 길이 array를 간단한 코드로 만들고싶을 때 # a라는 array에 3차원 array를 120개 만들고싶을 때 a = [[0] * 3 for i in range(120)]
[Python] relativedelta함수 (timedelta엔 한달빼는게 왜없을까) timedelta에서 month계산하는 방식이없어서 찾아보니 relativedelta 함수를 이용해서 계산한다고함 from datetime import datetime, timedelta from dateutil.relativedelta import relativedelta target_date = '2020-02-10' # 이건 안된다... # month_before = (datetime.strptime(target_date, '%Y-%m-%d') - timedelta(months = 1)).strftime('%Y-%m-%d') # 이렇게 계산해야지만 가능 month_before = (datetime.strptime(target_date, '%Y-%m-%d') - relativedelta(months ..