pyautogui 키보드 제어 파이썬 모듈인 pyautogui를 통한 키보드 제어방법입니다. 키보드 제어는 원하는 키를 자동으로 입력하고 떼는 기능만이 전부라서 많은 지식이 필요하진 않습니다. pyautogui 키보드 기능 typewrite() : 키보드에 문자열 입력 press() : 단일 키를 누르고 뗀다 keyDown() : 키를 누르고 있는다. keyUp() : 키를 뗀다. hotkey() : 조합 키를 누른다. write() : typewrite() 와 유사하게 문자열 입력. import pyautogui ## 문자열 입력하기 pyautogui.typewrite('Hello.World!) ## 단일키 누르기 pyautogui.press('ctrl') ## 조합키 누르기 pyautogui.hotk..
업무자동화 pyautogui 반복 작업이 많을 때 자동으로 작업을 알아서 해주면 그것만큼 편한게 없는데 키보드와 마우스 제어가 가능한 pyautogui를 사용하면 반복작업을 스스로 하는 매크로 프로그램을 만들 수 있습니다. 역사 Pyautogui는 2014년 소프트개발자 AI Sweigart(Automate the Boring Stuff with Python 책으로 유명하신 분) 에 의해 만들어졌습니다. 반복 작업을 자동화하기 위해서 만들어졌는데 현재 상당히 인기있는 모듈이 되었습니다. 설치방법도 간단합니다. 터미널에서 다음과 같이 입력하면 설치할 수 있습니다. pip install pyautogui pyautogui 기능 pyatugui의 주된 기능은 다음과 같습니다. 마우스 제어 : 마우스 커서를 이..
Matplotlib에서 figure와 axes를 직접 제어하는 방법과 간단한 사용법의 차이 Matplotlib는 그래프를 그릴 때 2가지 방법이 있습니다. figure와 axes를 직접 제어하느냐에 따라 방법이 달라집니다. 직접 제어하면 코딩이 약간 복잡해지지만 관리, 유지보수가 편해지고 그렇지 않으면 바로 그릴 수는 있지만 그래프 갯수가 많아지고 여러가지 스타일을 부여하면 복잡한 코딩이 될 수 있습니다. 간단한 사용법 figure와 axes를 제어하지 않는 방법입니다. 직관적으로 그림을 그릴 수 있습니다. 서브플롯 각각을 설정해서 그래프를 그립니다. import matplotlib.pyplot as plt import numpy as np # 데이터 생성 x = np.linspace(0, 2*np.pi..
Matplotlib으로 초간단 애니메이션 만들기 가장 접근하기 쉬운 matplotlib로 애니메이션 그림을 만드는 방법입니다. 애니메이션은 사실 여러가지 방법이 있을 걸로 아는데 초간단으로 만드는 방법 알려드리겠습니다. plt.pause를 이용하기 matplotlib에는 pause라는 정지 메쏘드가 있습니다. 내가 지정한 시간만큼 정지하고 다음 작업을 진행합니다. pause를 이용해 애니메이션처럼 만들 수 있는데요. for문과 함께 활용하면 쉽게 만들 수 있습니다. 예제로 랜덤으로 정수를 1000천 선택하고 그 선택한 정수를 하나씩 찍는 애니메이션을 만들어보겠습니다. import matplotlib.pyplot as plt import numpy as np import random x_values = [..
동적 계획법이란? 동적 계획법(Dynamic Programming, DP)은 복잡한 문제를 간단한 여러 개의 하위 문제(subproblem)로 나누어 푸는 알고리즘 기법 중 하나입니다. DP는 부분 문제의 결과 값을 저장해놓고 재활용하여 전체 문제를 해결하는 방식으로 동작합니다. 동적 계획법의 조건 DP는 크게 2가지 조건을 만족해야 합니다. 작은 부분 문제들이 반복되어 나타나는 구조여야 합니다. 한 부분 문제에서의 정답이 다른 부분 문제에서의 정답을 결정하는 데 영향을 미쳐서는 안 됩니다. 동적 계획법의 절차 DP 알고리즘은 일반적으로 다음과 같이 세가지 절차를 따릅니다. 주어진 문제를 작은 부분 문제로 분할합니다. 부분 문제의 해결을 위해 이전 단계에서 구한 값을 저장하고 재귀로써 문제를 해결합니다...
클래스 연결 메서드 오버라이딩(Method Overriding)은 객체 지향 프로그래밍에서 하위 클래스가 상위 클래스로부터 상속받은 메서드를 재정의하는 개념입니다. 이는 상속 관계에 있는 클래스 간에 동일한 메서드 이름을 사용하면서 각 클래스에서 특정 메서드의 동작을 변경하고자 할 때 사용됩니다. 메서드 오버라이딩의 주요 특징은 다음과 같습니다: 상속 관계 필요: 메서드 오버라이딩은 부모 클래스와 자식 클래스 간의 상속 관계에서만 발생합니다. 메서드 시그니처 동일: 오버라이딩되는 메서드는 메서드 시그니처(이름, 매개변수 형식, 반환 형식)가 부모 클래스의 메서드와 동일해야 합니다. 동적 바인딩: 어떤 메서드가 호출될지는 객체의 실제 타입에 따라 동적으로 결정됩니다. 즉, 실행 시간에 객체의 실제 타입을 ..
딕셔너리 합치기 딕셔너리 합치는 방법입니다. 간단합니다만 딕셔너리 특성상 key 가 같은 경우에는 덮어쓰기가 되니깐 그부분을 잘 조작하면 내가 원하는대로 딕셔너리를 다룰 수 있습니다. 딕셔너리 합치는 방법 2개의 딕셔너리를 합치는 방법은 간단합니다. update()라는 함수를 쓰면 됩니다. test1 = {'A':1,'B':2,'C':3} test2 = {'A':2,'D':4,'E':5} test1.update(test2) print(test1) 3개 이상일 때도 update를 이용해서 반복하면 됩니다. 한꺼번에 하려면 다음과 같이 합니다. dict1 = {'a': 1, 'b': 2} dict2 = {'b': 3, 'c': 4} dict3 = {'d': 5} merged_dict = {**dict1, *..
데이터의 타입을 일일히 확인한다고? 파이썬은 객체니깐 type 함수를 쓰면 언제든지 확인할 수 있습니다. 그런데 데이터가 많으면 일일이 확인할 수 없어서 for문이나 while을 돌리고 있는데 예상치 못한 타입이 나온다면 대처하기가 어렵습니다. 이럴 때 물론 type()을 활용할 수 있지만 루프를 한다면isintance()를 쓰는 걸 추천드립니다. isinstance란? 파이썬은 동적 타이핑(dynamic typing) 언어로, 변수의 타입이 실행 시간(runtime)에 결정됩니다. isinstance 함수는 이러한 특성을 활용하여 객체가 특정 클래스의 인스턴스인지를 동적으로 확인하는 데 사용됩니다. isinstance 함수 개요 isinstance 함수는 객체가 특정 클래스의 인스턴스인지를 확인하는 파..
원하는 좌표에 점으로 표현할 수 있다면? 그래프를 그리는 건 어찌어찌 하는데 내가 원하는 곳에 점을 표시하고 글씨를 쓸 수 있으면 더 멋진 그래프를 만들 수 있을겁니다. 멋진 그래프를 그리기 위해 마커설정과 글씨 넣는 방법을 정리해봤습니다. 그래프에 점 넣기 점을 넣으려면 scatter를 이용하면 됩니다. matplotlib는 그래프 겹치기가 가능한 라이브러리라는 것을 이용하면 되는데 다음과 같이 합니다. import matplotlib.pyplot as plt # x와 y 좌표 지정 x = [1, 2, 3, 4, 5] y = [10, 15, 13, 18, 20] # 그래프를 그리기 plt.plot(x, y) # 원하는 위치에 점 넣기(3,13) plt.scatter(3, 13, color='red', ..
파이썬으로 선형회귀 모델 만들기 이전 포스팅에서 선형회귀에 대한 이론적인 내용을 했었는데 파이썬으로 구현할 때 본의아니게 많이 어렵게 코딩을 한 것 같습니다. 그래서 scikit-learn 과 statsmodel을 이용해 선형회귀를 구현하는 방법을 포스팅합니다. 이미 되어있는 걸 가져다 쓰면 되기 때문에 간단합니다. scikit-learn 을 이용한 방법 numpy와 scikit-learn을 이용한 방법입니다. 선형회귀 모델에 데이터를 훈련해서 회귀계수를 찾아냅니다. 먼저 데이터를 가져옵니다. 예제이므로 간단하게 만들었습니다. 실제 데이터를 가져온다면 입력데이터와 타킷데이터를 구분합니다. import numpy as np from sklearn.linear_model import LinearRegress..
리스트를 복사하는 이유 파이썬으로 데이터분석에서 가장 중요한게 데이터입니다. 데이터를 보존해놔야 다른 모델을 쓰거나 다른 아이디어를 적용할 수 있기 때문에 반드시 복사를 해놔야합니다. 가끔 리스트로서 데이터를 가지고 있을 때가 있는데 다른것도 마찬가지겠지만 코드 진행을 하다보면 리스트 내용이 바뀌면서(다중 참조) 어그러지기 때문에 원본 구분을 잘 해놓는게 중요합니다. 리스트 복사하기 슬라이싱을 사용한 복사 보통 copy 매쏘드를 쓰는데 슬라이싱을 통해서도 할 수 있습니다. 전체를 슬라이싱하면 복사본으로 인식합니다. original_list = [1,2,3,4,5] copied_list = original_list[:] copy를 이용한 복사 copy 매쏘드를 이용한 방법입니다. 리스트 뒤에 copy()를..
파이썬 대소문자 변경 대소문자 변경하는 방법에 대해 알아보겠습니다. 어째 대소문자는 간단한데 자주 쓰지 않아서 자꾸 까먹게 되는 것 같습니다. 문자열 대문자로 변경 대문자로 변경하려면 upper() 함수를 쓰면 됩니다. 다들 그러는지 모르겠지만 저도 모르게 파라미터 자리에 문자열을 넣어서 오류 한번 나서야 기억이 나는데 대문자로 바꿀 문자열은 upper 앞에 넣어야 합니다. s = 'PipeMime' print(s) print(s.upper()) 숫자가 섞여있어도 알아서 알파벳을 인식해줍니다. s = 'Pipe 123 Mime' print(s) print(s.upper()) 문자열 소문자로 변경 소문자는 lower() 함수를 쓰면 됩니다. 마찬가지로 str.lower()순으로 써줘야 합니다. s = 'P..
현금콤마 표시하기 돈을 숫자로 표지할 때 숫자 3자리(천단위) 마다 콤마를 찍는데요. 콤마로 이 돈이 얼마인지 한눈에 알 수 있도록 해줍니다. 파이썬으로 이런 숫자표기를 하는 방법에 대해 알아볼까 합니다. str.format() 메서드 사용 숫자콤마를 하려면 str.format()에서 format_spec이라는 인자를 쓰면 되는데요. value 값이 자동으로 콤마를 표시해서 나옵니다. formatted_value = format(value, format_spec) value: 콤마를 찍을 숫자입니다. format_spec: value 형태를 변경해주는 기능을 포맷 스펙이라고 합니다. 현재는 콤마를 사용해야 하니 format_spec에 콤마(,) 입력합니다.format_spec에 대한 자세한 내용은 가이드..
문자열 이스케이프 문자열을 다룰 때 특수 문자를 처리하기 위해 이스케이프 문자라는 걸 사용합니다. 특수한 의미를 갖는 문자를 일반 문자처럼 쓰거나 줄바꿈을 하기 위해서 씁니다. 이스케이프의 뜻은 탈출이라는 뜻인데 말 뜻대로 문자열에서 탈출하거나 원래의 쓰임에서 탈출해서 일반 문자가 되는 것을 의미합니다. 주로 쓰는 이스케이프 문자 사실 더 있지만 그나마 사용할만한 것만 소개하겠습니다. 그외의 것은 파이썬 책이나 파이썬 튜토리얼에서 확인하시면 될 것 같습니다. Escape Meaning \\ Backslash(stores one \ ) \' Single quote(stores ') \" Double quot(stores '') \f Formfeed \n Newline(linefeed) \r Carriage..
문자열 패딩 파이썬에서는 f-string이나 문자열 포맷팅으로 변수를 문자열에 삽입할 수 있는데 부등식 기호를 잘 쓰면 패딩 기능이 가능합니다. 즉, 문자열의 최소 길이를 내가 지정할 수도 있고 패딩된 문자열 정렬을 지정할 수 있습니다. 패딩정렬 문자열로써 패딩을 하는 경우 컴퓨터는 부등식을 정렬로 받아들입니다. f-string으로 패딩을 쓰면 다음과 같이 쓰면 됩니다. f"{변수 또는 표현식:패딩정렬}" 각 요소는 다음과 같습니다. 변수 또는 표현식 : 포맷팅하고자 하는 값 또는 표현식 패딩 : 필드의 최소 길이 지정. 길이를 넘지 않는 한도내에서 문자열이 채워집니다. 정렬 : 패딩된 문자열을 어떻게 정렬할지 지정. '' : 오른쪽 정렬 '^': 가운데 정렬 예제를 보면 이해가 되실 겁니다. name ..