본문 바로가기
반응형

Python120

Python - Error Can't pickle local object 오류 해결 Can't pickle local object 에러는 보통 멀티 프로세스 작업에서 발생하는데, 데이터 객채를 가져갈 수 없다는 의미이다.즉 프로세스별로 오브젝트를 관리해야 하는데, 이를 공유할 수 없는 상태의 데이터라는 의미보통 전역 데이터 등은 공유하는데 문제가 없지만, Database 오브젝트 같은 네트워크 세션을 관리하는 데이터와 같이 프로세스 간에 서로 데이터의 갱신이나 호출을 하는 경우에는 프로세스간 자원 공유의 문제이다. 이를 해결 하기 위해서는 함수를 프로세스 안에서 호출 해서 사용하도록 하고, 전역 변수로 선언해서 사용해야 하는데, 전역 변수 일 경우 갱신과 같은 데이터 변경에 주의하는게 좋다. from sqlalchemy import create_engineimport multiproce.. 2024. 6. 20.
SQLAchemy - Column expression, FROM clause, or other columns clause element expected, 오류 해결 SQLAchemy가 2.x로 업그레이드 되면서 과거 버전에서 사용하던 문법들을 간결화 한다는 목적으로 다수 지원하는게 없어져서 1.x 개발을 진행한 개발자들을 힘들게 한다.따라서 개발자는 SQLAchemy 1.x버전을 계속 사용하거나, 문제가 있는 부분을 패치해서 해결해야 한다.그중 오늘은  Column expression, FROM clause, or other columns clause element expected 으로 Metadata로 테이블 정보를 사용할 때 select 와 where를 함께 사용할 때 2.x에서 제거된 문법을 알아보고자 한다.1.x 버전에서 사용되던 문법 방식이다.select([table.c.x, table.c.y]).where(table.c.x == 1).frist()이중에 .. 2024. 6. 10.
머신러닝 - 선형 회귀(Linear regression) 알고리즘 특징과 코드 선형 회귀와 다항 회귀는 머신러닝에서 K-최근접 이웃점 회귀과 함께 기본적으로 배우게 되는 머신러닝 모델이자, 성능이 좋은 모델이라고 할 수 있다. 특히  K-최근접 이웃점 회귀과 다르게 미래를 예측할 수 기능을 가지고 있다. K-최근접 이웃점 회귀 는 미래의 데이터를 예측하는데에는 사용하기 어렵다. 이유는 학습 데이터의 평균으로 예측을 하기 때문에, 만약 측정되지 않은 값이 들어온다면, 예측이 되지 힘들어진다.이 부분에 선형 회귀를 이용해서 해결할 수 있는데, 이유는 학습 데이터를 통해 유의미한 연결 선을 생성하여 해당 선을 통해 측정되지 않은 값도 예측이 가능하게 된다.아래 그림과 같이 파란 점의 학습 데이터가 있다고 하자. 여기에 가장 중심이 되는 선을 하나 긋고, 이를 통해서 학습하지 않은 영역에.. 2024. 6. 8.
Python - 스플렁크(Splunk) Query 검색 Splunk 는 외부에서 손쉽게 쿼리 검색등 다양한 작업을 할 수 있도록 지원하고 있다.그중 쿼리 검색에 대해서 알아보도록 하자.먼저 Splunk 라이브러리 splunk-sdk를 설치하자.pip install splunk-sdk이후 아래와 같은 코드를 통해 쿼리 검색이 가능하다.import splunklib.client as client# 스플렁크 연결HOST = "splunk_host"PORT = 8089USERNAME = "account_username"PASSWORD = "account_password"# 검색 쿼리 설정SEARCH_QUERY = "search index=my_index | stats count by _time"# 스플렁크 연결service = client.connect( ho.. 2024. 6. 8.
Python - 리스트(list) 중복제거, 고유값 만들기 Python에서 리스트를 중복값을 제거하는 가장 손쉬운 방법은 set() 이라는 내부 함수를 이용하는 방법이다.set()을 이용하면 리턴 값으로 중복된 값을 제거한 list를 기본적으로 dict()로 반환하게 된다.다음과 같이 이용이 가능하다. >>> set([1,2,3,4,5,1,2,4,5,6,2,1,1,34,3,]){1, 2, 3, 4, 5, 6, 34}한글과 같은 문자열도 정상적으로 사용이 가능하다. >>> set(["2","1","1","ㄴ","ㄱ","ㄷ","한","ㄴ","ㄱ"]){'한', '1', 'ㄴ', 'ㄱ', 'ㄷ', '2'}결과를 보면, 딕셔너리 형태이긴 하지만 리스트처럼 활용이 가능하다. 하지만 dict 사용에 데이터타입을 list로 활용하고자 한다면, list 문을 추가하여 결과를 반.. 2024. 6. 8.
Python - ' '.join() 리스트(list) 연결하여 문자열 로 만들기 파이썬의 join() 함수는 리스트(list)에 있는 요소들을 지정된 구분자로 연결하여 문자열을 반환하는 함수이다.실무에서 리스트 값을 문자열로 표현하고자 할 때 자주 사용된다.예제 코드로 살펴보면, 아래와 같이 구분자를 \n 를 줄경우 각 리스트에 항목 사이에 \n(줄바꿈)이 들어가서 화면에 표시될때 줄바꿈 효과가 나타나게 된다.strings = ["Hello", "Python", "World"]result = "\n".join(strings)print(result) 만약 공객을 이용하게 되면, 문자열 사이에 공백이 들어가게 된다.strings = ["Hello", "Python", "World"]result = " ".join(strings)print(result) 2024. 6. 8.
Python - Regex 정규식 표현과 직접 함수 구현 정규식 표현에 re 라이브러리를 사용하는데, 어느정도 성능적인 이점을 가져가면서 사용할 수 있는지 확인하기 위해서 비교해보았다.import timeitimport re# 정규식 사용def find_strings_three_more_numbers(input_string): pattern = r'\D*\d\D*\d\D*\d\D*' matches = re.findall(pattern, input_string) return matches# 직접 구현def has_three_more_numbers(input_string): num_count = 0 for char in input_string: if char.isdigit(): num_count +.. 2024. 6. 8.
Python - Days, 날짜 Count 쉽게 계산하기 Datetime 값을 처리하다보면, Days(날짜)값을 확인하고 싶은 경우가 많다.이럴경우 가장 쉽게 진행할 수 있는 방법은 초단위로 변환한 후 Round 내장함수로 처리해주는 것이 가능하다.코드는 다음과 같다. import datetimestart_date = datetime.datetime.now()end_date = datetime.datetime.now()end_date = end_date + datetime.timedelta(days=5)sub_date = end_date - start_date# 전체 초시간을 하루 초단위로 구해진 값day_count = (sub_date.total_seconds() / 86400)#.0 이하를 버리기 위해서는 round로 처리해주는.. 2024. 4. 24.
Python - 리스트(Lists)간 교집합(중복/공통값), 합집합(고유/유일값) 값 확인하기 Python 코드에서 리스트를 자주 다루는데, 이때 동시에 List에서 중복 값, 고유/유일값을 확인해야 하는 상황이 종종 발생한다. 이때 활용할 수 있는 방법으로 List간 교집합을 하는 방법으로 몇가지가 있는지 알아보도록 하자. 그럼 먼저 쉬운 합집합 부터 확인해보자. 1. 합집합(고유/유일값) 합집합은 두 집합의 속한 중복이 제외된 모든 원소의 집합이라고 할 수 있다. 파이썬에서는 합집합을 쉽게 작성할 수 있는데, 바로 set 함수 이다. 이외에도 | 를 이용해서 포함되는 모든 원소를 확인이 가능하다. 1. | 함수 | 함수를 이용해서 중복값을 제외한 값들을 반환한다. >>> alist = {1,2,3,4,5} >>> blist = {4,5,6,7,8} >>> clist = alist | blist.. 2024. 4. 12.
반응형