본문 바로가기

Programming/PYTHON_ETC25

Python Open API(XML) 활용하기 - 부동산 매매가격 import pandas as pd import requests from bs4 import BeautifulSoup key = '내 서비스키' # url='http://openapi.molit.go.kr:8081/OpenAPI_ToolInstallPackage/service/rest/RTMSOBJSvc/getRTMSDataSvcAptTrade?LAWD_CD=11110&DEAL_YMD=201512&serviceKey='+key url='http://openapi.molit.go.kr:8081/OpenAPI_ToolInstallPackage/service/rest/RTMSOBJSvc/getRTMSDataSvcAptTrade?serviceKey='+key rowList=[] # 전체 행을 저장할 변수 nam.. 2021. 11. 8.
Python 키보드로 연주하기 키보드 입력에 맞추어 비프음을 내도록 하겠습니다. 이번 프로그램을 위해서는 비프음을 내도록 하는 windsound 모듈과 키보드 인풋을 받아들이는 pynput 모듈이 필요합니다. 그 중 windwound 모듈은 기본으로 내장되어있으니 pynput 모듈만 설치해주도록 합니다. 1. 라이브러리 설치 pip install pynput 2. pynput모듈 pynput 모듈에서는 on_press 이벤트와 on_release 이벤트에 대해 리스너를 통해 입력받는 방법이 있습니다. from pynput import keyboard def on_press(key): print('Pressed Key: %s' % key) def on_release(key): print('Pressed Key: %s' % key) if.. 2021. 10. 13.
파이썬 폴더 내 파일 일괄 수정기능 특정 폴더의 파일 전체에 대해서 일괄 수정하는 기능을 구현해 보았습니다. add_string 함수는 파일명에 접두사와 접미사를 붙여서 출력하는 기능이고, change_string 함수는 파일명에 특정 문자열을 다른 문자열로 바꾸는 기능입니다. 우선은 파일명을 확인하는 부분까지만 구현하고, 실제 변경하는 부분은 주석 처리하였습니다. import os def add_string(path, prefix, suffix): for filename in os.listdir(path): name_only, ext = filename.split('.') # 파일명과 확장자로 분리 print(name_only, ext) new_name = prefix + name_only + suffix + '.' + ext # 새 파.. 2021. 9. 25.
파이썬 kivy 시작하기 2 - kv 파일 1. main.py from kivy.app import App from kivy.uix.gridlayout import GridLayout from kivy.uix.textinput import TextInput from kivy.uix.label import Label from kivy.uix.button import Button from kivy.uix.widget import Widget from kivy.properties import ObjectProperty class MyGridLayout(Widget): name = ObjectProperty(None) # 변수에 아무것도 할당하지 않도록 함 pizza = ObjectProperty(None) color = ObjectProperty(No.. 2021. 9. 24.
파이썬 kivy 시작하기 1 - 레이아웃 포함(no kv 파일) 1. 라이브러리 설치 pip install kivy # 의존성 문제가 발생할 경우 (먼저 설치 필요) pip install docutils pygments pypiwin32 kivy_deps.sdl2 kivy_deps.glew kivy_deps.gstreamer 2. main.py from kivy.app import App from kivy.uix.gridlayout import GridLayout # 그리드 레이아웃 from kivy.uix.label import Label # 라벨 from kivy.uix.textinput import TextInput # 텍스트 인풋 from kivy.uix.button import Button import os class LoginScreen(GridLayout.. 2021. 9. 24.
파이썬 tkinter 로 만드는 PDF 텍스트 추출 프로그램 우선 PyPDF2 라이브러리 설치가 필요합니다. pip install pypdf2 app.py 파일을 하나 생성하여 아래와 같이 입력합니다. 여기에 로고로 쓸 images.png파일이 필요한데, 인터넷에서 적당한 파일을 다운받으시거나 첨부 파일을 사용하시기 바랍니다. import tkinter as tk import PyPDF2 from PIL import Image, ImageTk from tkinter.filedialog import askopenfile root = tk.Tk() canvas = tk.Canvas(root, width=600, height=300) canvas.grid(columnspan=3, rowspan=3) # logo image = Image.open('images.png').. 2021. 9. 23.
파이선 PySimpleGUI 예제 1. hello_world.py import PySimpleGUI as sg sg.Window(title="Hello World", layout=[[]], margins=(100,50)).read() 2. hello_psg.py import PySimpleGUI as sg layout = [ [sg.Text("Hello from PySimpleGUI")], [sg.Button("OK")] ] window = sg.Window("Demo", layout) while True: event, values = window.read() if event =="OK" or event == sg.WIN_CLOSED: break window.close() 3. Image_Viewer.py import PySimpleGU.. 2021. 9. 22.
파이썬 주피터 노트북 Extension 설치 1. npextensions 설치 pip install jupyter_contrib_nbextensions && jupyter contrib nbextension 2. 필요한 기능 선택 - Table of Contents: 자동 목차 생성기능 - Variable Inspector: 변수 값 검사기 ※ 설치 후 리프레쉬 필요 3. 결과 2021. 9. 15.
Python folium을 이용한 지도 불러오기 / 마커 표시하기 import folium as g g_map = g.Map(location=[34.5, 128], zoom_start=7) # tiles='Stamen Terrain', 'Stamen Toner', 'Stamen Watercolor' latlon=[ [33.452278, 126.567803],#제주 [37.56667, 126.97806], #서울 [35.17944, 129.07556], #부산 ] # 마커 marker = g.Marker([37.509671, 127.055517], # 마커를 찍는 과정이다. 해당 위치의 마커를 찍고 popup='campus seven', # 해당 마커의 이름을 넣어준다. icon = g.Icon(color='blue'))# 해당 아이콘의 색깔을 지정해준다. marker... 2021. 9. 5.
Python - 엑셀 자료 분석(셀 참조 with xlwings) 오늘은 KB 부동산시세 사이트에서 제공하는 데이터를 이용해 각 셀의 값을 참조하는 방법에 대해 알아보겠습니다. 테스트를 위해 엑셀은 서식을 없애고 숫자만 표시되도록 했는데요, 아래의 엑셀 차트에 대해 일정 범위별로 수식을 적용하여 색깔을 표시하도록 하는 방법을 알아보겠습니다. (물론 엑셀 활용 측면에서는 조건부 서식으로 지정하는 것이 더 간단할 수도 있습니다만, xlwings 공부하는 차원에서 봐주시기 바랍니다.) 1. 엑셀 매크로 추가 엑셀 파일의 이름은 pyxl.xlsm으로 매크로가 가능한 엑셀파일 형태로 저장해둡니다. 그리고 엑셀에서 Python 코드를 불러올 수 있도록 VBA를 작성해줍니다. Sub some_code() mymodule = Left(ThisWorkbook.Name, (InStrRe.. 2021. 2. 4.
Python - 엑셀에서 파이썬 매크로 사용하기(xlwings 설치) 현대 사회에서 엑셀의 지위는 정말... 이걸 빼고서는 업무를 상상할 수 없을 정도로 막강한데요,,, 한가지 아쉬운 점이 매크로를 작성할 때 Visual Basic을 사용한다는 것입니다. 그게 무슨 아쉬운 점이냐 하실 수도 있는데, VBA라고 하는게 처음에는 쉽다고 해서 접근해보면 딱히 쉽진 않죠. 프로그래머들도 어렵다는 VBA니까요. 물론 프로그래머는 VBA를 집중해서 파기보다는 다른 자신만의 언어(Java, Python, C# 등)가 있으니까 그럴 수도 있겠지만요. 하지만 파이썬은 전문 프로그래머들 뿐만 아니라 일반인들도 많이 쓰는 언어가 되어가고 있습니다. 우선 쉬우니까요. 물론 깊이 들어가면 결국 비슷하게 어려운 부분이 있지만,,, 개인적인 느낌으로는 VBA보다 쉽습니다. 가독성이 너무 좋습니다. .. 2021. 2. 3.
Pyside2 import sys import os from PySide2 import QtUiTools, QtGui from PySide2.QtWidgets import QApplication, QMainWindow from PySide2.QtCore import Slot, Qt class MainView(QMainWindow): def setupUI(self): global UI_set UI_set = QtUiTools.QUiLoader().load("./test.ui") self.setCentralWidget(UI_set) self.setWindowTitle("UI TEST") self.setWindowIcon(QtGui.QPixmap("./images/clock.ico")) self.resize(500, 270.. 2020. 12. 29.
파이썬 matplotlib 차트 그리기 예시 matplotlib를 활용하여 그래프 그리는 예시입니다. 툴은 spider를 이용하여 그려보겠습니다. import numpy as np import matplotlib.pyplot as plt import matplotlib as mpl x = np.random.rand(100) y = np.random.rand(100) plt.plot(y, 'b:') plt.title('1Green Solid Line') plt.title('2Blue Dotted Line') plt.ioff() plt.figure() plt.plot(y, 'g-') plt.title('3Green Solid Line') plt.show() plt.ion() plt.figure() h=plt.plot(y, 'g-') plt.getp(h.. 2020. 8. 17.
wxPython Grid에 pandas dataframe 출력하기 import wx import wx.grid as gridlib import os import psycopg2 import pandas as pd class MyFrame(wx.Frame): def __init__(self): #-------- 1. GUI 초기화 wx.Frame.__init__(self, parent=None, title="DB to Table") self.SetSize(1020, 600) self.mainPanel = wx.Panel(self) self.vtBoxSizer = wx.BoxSizer(wx.VERTICAL) # 전체 레이아웃 self.vhBoxSizer = wx.BoxSizer(wx.HORIZONTAL) # 전체 레이아웃 self.query_txt = wx.TextCtrl.. 2020. 6. 23.
wxpython GridBagSizer 예제 쉽게 레이아웃을 구성할 수 있는 GridBagSizer 예제입니다. import wx class MyFrame(wx.Frame): def __init__(self): wx.Frame.__init__(self, parent=None, title="GridBagSizer Example") sizer = wx.GridBagSizer(9, 9) #GridBagSizer.add(아이템, 가상그리드 위치(행, 열), 크기(높이, 넓이), 정렬상수, 여백) sizer.Add(wx.Button(self, -1, "Button"), (0, 0), wx.DefaultSpan, wx.ALL, 0) sizer.Add(wx.Button(self, -1, "Button"), (1, 1), (1, 1), wx.EXPAND) siz.. 2020. 6. 21.
pandas CSV파일 읽기 - 인코딩 에러 이런 데이터가 CSV파일로 저장되어 있다고 할 때, 1. 인코딩이 부분이 없을 경우 에러가 발생 가능합니다. 우리나라에서 작성하였다면 아래와 같이 코드를 추가하던지, 아니면 CSV의 인코딩을 수정해서 저장하던지 해야 에러가 발생하지 않습니다.. 2. pandas를 이용해서 필터링 할 때에는 df['칼럼']='조건' 으로만 해서는 True/False만 표시하기 때문에, df 안에서 해당 조건을 표시하면(아래 코드 확인) True/False를 기준으로 인덱싱 된 결과를 볼 수 있습니다. 3. head와 tail은 기본적으로 앞/뒤 5개의 데이터를 보여주지만, 내부에 숫자를 넣으면 해당 갯수만큼 출력해줍니다. import pandas as pd df = pd.read_csv('test.csv', encodin.. 2020. 6. 21.
wxpython 간단한 트리 import wx class MyFrame(wx.Frame): def __init__(self): wx.Frame.__init__(self, parent=None, title="TreeCtrl example") self.SetSize(420, 320) self.mainPanel = wx.Panel(self) self.expandButton = wx.Button(self.mainPanel, label = "Expand") self.tree = wx.TreeCtrl(self.mainPanel) root = self.tree.AddRoot('태조') self.tree.AppendItem(root, '방우') self.tree.AppendItem(root, '정종(방과)') self.tree.AppendItem.. 2020. 6. 17.
wxpython 폴더 트리 import wx class TestFrame(wx.Frame): def __init__(self, parent): wx.Frame.__init__(self, parent, -1, 'test', size=(500,700)) dir3 = wx.GenericDirCtrl(self, -1, dir='C:/Television', style=wx.DIRCTRL_SHOW_FILTERS | wx.DIRCTRL_3D_INTERNAL | wx.DIRCTRL_MULTIPLE, filter="Python files (*.py)|*.py") app = wx.App() frm = TestFrame(None) frm.Show() app.MainLoop() 2020. 6. 16.
wxpython 간단한 메뉴 import wx class MyFrame(wx.Frame): def __init__(self): wx.Frame.__init__(self, parent=None, title="Menu Example") self.menuBar = wx.MenuBar() fileMenu = wx.Menu() fileNewMenu = fileMenu.Append(wx.ID_ANY, "새 파일") fileOpenMenu = fileMenu.Append(wx.ID_ANY, "열기") fileMenu.AppendSeparator() fileExitMenu = fileMenu.Append(wx.ID_ANY, "끝내기") customMenu = wx.Menu() customHelloMenu = customMenu.Append(wx... 2020. 6. 16.
wxpython 간단한 프레임 예제(FlexGridSizer) import wx class MyFrame(wx.Frame): def __init__(self): wx.Frame.__init__(self, parent=None, title="FlexGridSizer Example") self.SetSize(400, 370) self.mainPanel = wx.Panel(self) self.fgridSizer = wx.FlexGridSizer(rows=3, cols=2, hgap=5, vgap=5) self.staticName = wx.StaticText(self.mainPanel, label= "name :") self.staticEmail = wx.StaticText(self.mainPanel, label = "email :") self.staticPhone = w.. 2020. 6. 16.
wxpython 간단한 프레임 예제(BoxSizer) import wx class MyFrame(wx.Frame): def __init__(self): wx.Frame.__init__(self, parent=None, title="BoxSizer Example") self.mainPanel = wx.Panel(self) self.upperPanel = wx.Panel(self.mainPanel) self.leftButton = wx.Button(self.upperPanel, label="Left") self.rightButton = wx.Button(self.upperPanel, label="Right") self.hzBoxSizer = wx.BoxSizer(wx.HORIZONTAL) self.hzBoxSizer.Add(self.leftButton) sel.. 2020. 6. 16.
wxpython 간단한 프레임 예제 간단한 윈도우 생성 후 마우스 버튼 클릭에 따라 색상 변하는 예제 import wx class MyFrame(wx.Frame): def __init__(self): wx.Frame.__init__(self, parent=None, title="Window Color") self.Bind(wx.EVT_LEFT_DOWN, self.OnMouseLButtonDown) self.Bind(wx.EVT_RIGHT_DOWN, self.OnMouseRButtonDown) def OnMouseLButtonDown(self, event): self.SetBackgroundColour(wx.Colour(0, 0, 255, 0)) self.Refresh() def OnMouseRButtonDown(self, event): s.. 2020. 6. 16.
Python - GUI에서 DB연결 cx_Oracle의 설치에 이어 DB 연동, 그리고 tkinter를 이용한 GUI 프로그래밍을 해보겠습니다. 화면 구성은 정말 간단히...레이블에 DB 주소를 입력하고 엔터를 누르면 연결해서 결과를 출력하는 구성입니다.import cx_Oracle import os import tkinter #GUI 부분 window=tkinter.Tk() #기본 설정 window.title("GUI Sample") window.geometry("640x640+100+100") #너비X높이+X좌표+Y좌표 window.resizable(True, True) #사이즈 변경 가능 #레이블 label_ip=tkinter.Label(window, text="예: myid.myweb.com:1526/orcl", width=50, .. 2020. 2. 26.
Python-Oracle연동 Python로 Oracle Database에 연결하기 위해서는 cx_oracle 모듈을 설치해야 합니다. 설치 방법은 어렵지 않은데 Pycharm과 일반 커맨드창 파이썬에서 실행하는 방법을 나눠 설명하겠습니다. 1. 우선 주로 쓰는 Pycharm에서는 File - Settings - Project - Project Interpreter 로 진입합니다. 그리고 cx_Oracle 모듈을 찾아서 설치해 줍니다. 2. Command창에 설치해서 사용하는 경우라면, sudo pip install cx_oracle 로 설치할 수 있습니니다. 3. Oracle Client 설치 cx_Oracle을 사용하려면 Oracle Client를 설치해주어야 합니다. Oracle이 설치되어있어도 Library 때문에 필요한 것으.. 2020. 2. 25.
Python GUI - tkinter 예제 회사에서는 예전에 만들어둔 Visual Basic 6.0을 어쩌지 못해 계속 사용하고 있습니다. 저는 그 유지보수 담당입니다. 다른 언어로 갈아 엎고는 싶지만,,, 온지 얼마 안돼서..아니, 실력이 아직 한참 모자라서 그냥 유지보수 중입니다. 그러나 마음만은 항상 다른 언어로 포팅하려고 준비하고 있습니다. 배포가 편리한 Java를 유력 후보로 생각하고 있는데요..(C# 안사줌..ㅠㅠ) 그 전에 간단한 프로그램 프로토타입 설계를 위해 tkinter를 손대보기로 했습니다. 결론은, 필요한 기능 그때그때 불러다 쓸 기본 위젯 종합 선물세트를 만들었습니다. 필요할 때 골라 쓰려구요. 실행하면 이런 gui프로그램이 나오게 될 것입니다. 그리고, 소스는 https://076923.github.io/ 사이트를 참조했.. 2020. 2. 25.