본문 바로가기

프로그래밍167

[Python] 모듈 경로(Module Path) 알아보기 1. 모듈 경로(Module Path)를 알아야 할 필요성 파이썬 코딩을 하다보면 가상 환경을 자주 쓰게 된다. 왜냐하면 프로젝트별로 설치할 모듈(Module)이 다르기 때문에 이를 프로젝트별로 관리해야 하기 때문이다. 그런데 가끔 여러 가상환경을 설치하다 보니 모듈의 버전이 다르거나 같은 파일명이지만 다른 역할을 하는 파이썬 파일(.py)이 있는 경우 모듈(라이브러리 또는 패키지)이 잘못 임포트 될 수 있다. 따라서 특정 모듈(라이브러리 또는 패키지)이 제대로 임포트 되었는지 확인하기 위하여 해당 모듈의 경로를 알아야할 필요가 있다. 2. 모듈 경로(Module Path) 확인하기 파이썬에서 임프트된 모듈 경로 확인하는 방법은 예상과 달리 너무 쉽다. 그냥 print문 쓰면 된다. 예를 들어 지금 내가.. 2022. 4. 5.
[병렬 프로그래밍] Joblib을 이용한 병렬 프로그래밍 with Python 이 포스팅은 꽁냥이가 병렬 프로그래밍 공부한 내용을 포스팅하는 곳입니다. 이번에 파이썬(Python) 병렬프로그래밍을 공부하면서 아주 좋은 라이브러리를 찾았다. 바로 Joblib이었다. 이게 왜 좋냐 하면 주피터 노트북에서도 사용할 수 있기 때문이다(파이썬(Python)에서 제공하는 multiprocessing 모듈이 있는데 이는 주피터 노트북에서 사용이 안된다). 이번 포스팅에서는 먼저 joblib의 기본적인 사용법을 알아본다. 그리고 이를 응용하여 작업을 병렬로 처리할때 속도 차이가 나는지 알아보려고 한다. 1. 기본적인 사용법 2. 응용하기 1. 기본적인 사용법 먼저 여기서 사용할 모듈을 임포트 한다. multiprocessing은 파이썬(Python) 병렬 작업을 위한 코어 수를 계산하기 위해 필.. 2022. 4. 3.
[Python] 함수에 어떤 인자(Argument)가 있는지 알아보기 오랜만입니다. 꽁냥이에요~~ 파이썬 코딩을 하시는 분(꽁냥이도 포함)들은 종종 함수 사용법, 특히 함수에 들어가는 인자(Argument 또는 Parameter)가 무엇인지 또는 클래스가 갖고 있는 메서드가 무엇인지 알고 싶을 때가 있지요. 이 경우 구글링을 해도 되겠지만 파이썬에서 도움말 역할을 하는 함수를 사용하면 더 빠르게 알 수 있어요. 그 주인공은 바로 help라는 함수인데요. 이번 포스팅에서는 help 함수에 대해서 알아보려고 합니다. 아 물론! 지난 포스팅에서 소개한 inspect를 이용해서 알 수도 있어요. 이에 대한 내용은 아래 링크를 통해 확인해보세요. [Python] 함수 내부 코드 가져오기 [Python] 함수 내부 코드 가져오기 반갑습니다~ 꽁냥이입니다~ 코딩을 하다 보면(특히 알고.. 2022. 4. 3.
[Python] 함수 내부 코드 가져오기 반갑습니다~ 꽁냥이입니다~ 코딩을 하다 보면(특히 알고리즘을 구현하려고 할 때) 특정 라이브러리가 제공하는 함수가 어떻게 동작하는지 알고 싶을 때가 있습니다. 이를 위해 함수 내부 코드를 알아야 할 필요가 있지요. 파이썬에서는 inspect라는 모듈을 사용하여 특정 함수 내부 코드를 알아낼 수 있습니다(매우 유용한 기능입니다). inspect 모듈 내 getsource라는 함수를 이용하면 함수 내부 코드를 알아낼 수 있습니다. 예를 들어 넘파이(Numpy)의 평균을 계산하는 함수 내부 코드를 알고 싶다면 다음과 같이 해주세요. 이때 print를 꼭 써주세요. 안 그러면 이스케이프 문자(\n, \t 등)가 그대로 출력되어 가독성이 떨어집니다. import numpy as np import inspect p.. 2022. 4. 3.
[오류 해결] Pandas data cast to numpy dtype of object. Check input data with np.asarray(data) 꽁냥이가 회귀 분석을 하다가 아래와 같은 오류를 발생했어요. Pandas data cast to numpy dtype of object. Check input data with np.asarray(data) 해당 오류는 숫자값이 들어가야 할 자리에 다른 타입의 데이터, 예를 들면 문자열 데이터가 들어와서 발생하는 오류인데요. 아래 예제 코드를 통해서 확인해보겠습니다. import pandas as pd import statsmodels.api as sm df = pd.DataFrame() df['y'] = [1,1,2,3,2,4,5,2,3] df['x1'] = ['3','2','2','4','6','5','7','3','1'] df['x2'] = [3.3,1.2,7.7,3.3,2.1,5.7,7.1,0.3.. 2021. 11. 5.
[Python] 인코딩 확인하기 - chardet 안녕하세요~ 꽁냥이에요. 종종 주어진 문자열의 인코딩을 알아야 할 필요가 있지요. 특히 텍스트 파일을 불러올 때 적절한 인코딩 형식을 지정해야 할 때처럼 말이죠. 파이썬에서 chardet이라는 모듈이 해당 문자열의 인코딩 형식을 알려주는 고마운 친구인데요. 이번 포스팅에서는 chardet의 기본적인 사용법에 대해서 알아보려고 합니다. 1. chardet 모듈이란? 2. 사용법 1. chardet 모듈이란? chardet 모듈은 특정 문자열을 분석하여 인코딩 형식을 예측해주는(탐지하는) 모듈입니다. chardet는 아마도 character + detect을 합친 단어인 것 같아요. chardet 문서에 따르면 탐지할 수 있는 인코딩 형식은 다음과 같다고 합니다. 우리에게 익숙한 EUC-KR 형식도 지원하네.. 2021. 8. 4.
[오류 해결] error tokenizing data. c error : expected 안녕하세요~ 꽁냥이에요. Pandas의 read_csv를 이용하여 텍스트 파일을 읽을 때가 있지요. 이때 분명 텍스트 파일을 열어보면 별문제 없어 보이는데 Pandas의 read_csv를 읽으면 아래와 같은 오류가 나타날 때가 있습니다. error tokenizing data. c error : expected ~~ 1. 오류원인 -라인별 구분자로 분리된 단어의 개수가 다르다- 이런 오류는 텍스트의 각 라인마다 구분자로 구분해놓았을 때 길이가 다르기 때문에 발생합니다. 예를 들어볼까요? 먼저 아래의 데이터를 다운받아주세요. pandas를 임포트하고 위 데이터에서 기본 구분자는 쉼표(,)이므로 따로 구분자를 지정하지 않고 read_csv를 통해 데이터를 읽어줍니다. 이때 아래와 같은 오류가 발생합니다. i.. 2021. 6. 25.
[오류 해결] Pandas - query 실행 오류 "TypeError: 'Series' objects are mutable, thus they cannot be hashed" 안녕하세요~ 꽁냥이에요. 데이터를 테이블 형태로 변환하거나 데이터를 전처리할 때, 그리고 데이터를 추출할 때 Pandas를 많이 사용하지요. 꽁냥이는 특히 데이터 추출할 때 query함수를 사용하는데요. 간혹 null 값, nan 값을 포함하는 행을 추출하려고 할 때 query 함수가 제대로 작동하지 않는 경우가 발생합니다. 한번 살펴볼까요? import pandas as pd import numpy as np data = { 'A':[1,2,3], 'B':[3,np.nan, np.nan] } df = pd.DataFrame(data) 위 데이터프레임에는 nan값이 포함되어 있습니다. 이제 B 열에서 nan을 포함하는 행을 추출해보겠습니다. df.query('B.isna()') 하지만 실행되지 않고 아래.. 2021. 6. 13.
[오류 해결] ExecutableNotFound: failed to execute ['dot', '-Kdot', '-Tsvg'], make sure the Graphviz executables are on your systems' PATH 안녕하세요~ 꽁냥이에요. 꽁냥이는 요즘 graphvis 사용법을 배우고 있는데요. pip install graphviz를 실행하여 설치만 하면 되는 줄 알았는데 아니더라고요. 저 같은 경우 아래 코드를 실행했는데 오류가 났어요. ㅠ.ㅠ dot = Digraph(comment='Test') dot.node('A') dot.node('B') dot.node('C') dot.edge('A','B') dot - 오류 내용 - ExecutableNotFound: failed to execute ['dot', '-Kdot', '-svg'], make sure the Graphviz executables are on your systems' PATH 구글에서 확인해보니 해당 오류는 graphviz 설치 파일을 받아서.. 2021. 6. 2.
[병렬 프로그래밍] 4. Multi-Process 응용 with Python 이 포스팅은 꽁냥이가 병렬 프로그래밍 공부한 내용을 포스팅하는 곳입니다. 지난 포스팅에서는 파이썬(Python)으로 멀티 프로세스(Multi Process)를 사용하는 방법과 이를 언제 사용하면 좋은지에 대해서 알아봤다. [병렬 프로그래밍] 3. Multi-Process 사용하기 with Python 이번 포스팅에서는 멀티 프로세스를 이용하여 시간을 단출시킬 수 있는 (실제 쓰일 법한) 예제를 알아보려고 한다. Corey Schafer 님의 Python Tutorial Multi Processing 영상을 참고했다. 여기서 다루는 내용은 다음과 같다. 1. 이미지 처리 2. csv 파일 저장 1. 이미지 처리 여기서는 꽤 용량이 있는 이미지의 처리를 멀티 프로세스를 사용하지 않는 경우와 사용하는 경우에 .. 2021. 5. 17.

맨 위로