글

2020의 게시물 표시

[Python_trading] 파이썬_GUI_Layout(1)

QMainWindow 대신 QWidget을 상속 받았다. 이후 QTextEdit과 QPushButton 위젯을 생성했다.  #gui_layout_1.py import sys from PyQt5.QtWidgets import * class MyWindow(QWidget):     def __init__(self):         super().__init__()         self.setupUI()     def setupUI(self):         self.setGeometry(800,200,300,300)         self.textEdit = QTextEdit(self)         self.textEdit.resize(280,250)         self.textEdit.move(10,10)         self.pushButton=QPushButton('저장',self)         self.pushButton.resize(280,25)         self.pushButton.move(10,270) if __name__=='__main__':     app=QApplication(sys.argv)     mywindow=MyWindow()     mywindow.show()     app.exec_() 위의 프로그램은 윈도우 크기가 변경될 시에 위젯의 출력 위치와 크기는 변경되지 않기 때문에 이를 수정해 줄 필요가 있다. 윈도우의 크기가 변경될 때 발생하는 시그널과 이를 처리하는 슬롯을 연결 후, 슬롯에...

[Python_trading] 파이썬_GUI(6)_테이블 포함된 창 생성

 파이썬 활용하여 테이블이 포함된 창 생성하기 #gui_11.py import sys from PyQt5.QtWidgets import * class MyWindow(QMainWindow):     def __init__(self):         super().__init__()         self.setupUI()     def setupUI(self):         self.setGeometry(800,200,300,300)         self.tableWidget = QTableWidget(self)         self.tableWidget.resize(290,300)         #출력전 테이블의 행,열의 개수 미리 지정         self.tableWidget.setRowCount(2)         self.tableWidget.setColumnCount(2)         #테이블의 데이터에 관한 함수(지정) 호출         self.setTableWidgetData()     def setTableWidgetData(self):         #setItem메서드는 3개 인자를 받음. (행에 대한 인덱스, 열에 대한 인덱스, QTableWidgetItem 객체) 전달         self.tableWidget.setItem(0, 0, QTableWidgetItem('1사분면'))         self.t...

[Python_trading] 파이썬_GUI(5)

파이썬 활용하여, 스빈박스 포함된 창 생성하기 (조건, 최소,최대치 포함) #gui_10.py import sys from PyQt5.QtWidgets import * class MyWindow(QMainWindow):     def __init__(self):         super().__init__()         self.setupUI()     def setupUI(self):         self.setGeometry(800,200,300,300)         label = QLabel('매도수량',self)         label.move(10,20)         self.spinBox = QSpinBox(self)         self.spinBox.move(70,25)         self.spinBox.resize(80,22)         self.spinBox.setValue(10)         self.spinBox.setSingleStep(10)         self.spinBox.setMinimum(1)         self.spinBox.setMaximum(10000)         self.spinBox.valueChanged.connect(self.spinBoxChanged)         self.statusBar = QStatusBar(self)     ...

[Python_trading] 파이썬_GUI(4)

파이썬 활용하여 체크박스 창 만들기 import sys from PyQt5.QtWidgets import * class MyWindow(QMainWindow):     def __init__(self):         super().__init__()         self.setupUI()     def setupUI(self):         self.setGeometry(800,200,300,300)         #체크박스를 사용하려면 QCheckBox 클래스의 인스턴스를 생성한다. QCheckBox 에 표시될 텍스트와 출력될 부모 위젯을 인자로 전달.         self.checkBox1= QCheckBox('5',self)         self.checkBox1.move(10,20)         self.checkBox1.resize(150,30)         self.checkBox1.stateChanged.connect(self.checkBoxState)         self.checkBox2= QCheckBox('20',self)         self.checkBox2.move(10,50)         self.checkBox2.resize(150,30)         self.checkBox2.stateChanged.connect(self.checkBoxState)         self.checkBox3 = QCheckBox('60',s...

[Python_trading] 파이썬_GUI(3)

파이썬으로 텍스트입력창 생성 import sys from PyQt5.QtWidgets import * class MyWindow(QMainWindow):     def __init__(self):         super().__init__()         self.setupUI()     def setupUI(self):         self.setGeometry(800,400,300,150)         label = QLabel('CODE',self)         label.move(20,20)         #QLineEdit : 한 줄의 텍스트를 입력할 수 있는 위젯         self.lineEdit = QLineEdit('',self)         self.lineEdit.move(80,20)         self.lineEdit.textChanged.connect(self.lineEditChanged)         self.statusBar=QStatusBar(self)         self.setStatusBar(self.statusBar)     def lineEditChanged(self):         self.statusBar.showMessage(self.lineEdit.text()) #self.lineEdit 변수로 QLineEdit 객체에 접근 후 text 메서드를 통해 사용자가 입력한 문자열을 얻어옴. if __name__=='__main...

[Python_trading] 파이썬_GUI(2)

파이썬 이용하여 클릭, 삭제 버튼창 생성하기  #gui_6.py import sys from PyQt5.QtWidgets import * class MyWindow(QMainWindow):     def __init__(self):         super().__init__()         self.setupUI()     def setupUI(self):         self.setGeometry(800,400,300,150)         textLabel = QLabel('Message:',self)         textLabel.move(20,20)         #self 를 붙이는 이유 : label은 setupUI 메서드 외에 다른 메서드에서도 사용할 것이기 때문이다.         #self.label 은 btn1_clicked 와 btn2_clicked 에서도 사용됨.         self.label=QLabel('',self)         self.label.move(80,20) #label 인스턴스의 위치를 조정         self.label.resize(150,30) #resize 로 메서드 크기 재지정 가능         #버튼1(click) 생성         btn1 = QPushButton('click',self)         btn1.move(20,60)         btn1.c...

[Python_trading] 파이썬_GUI

#gui_1.py import sys from PyQt5.QtWidgets import * app = QApplication(sys.argv) label = QLabel('Hello, PyQt') label.show() print('Before event loop') app.exec_() print('After event loop') #gui_2.py import sys from PyQt5.QtWidgets import * def clicked_slot():     print('clicked') app = QApplication(sys.argv) btn = QPushButton('hello') btn.clicked.connect(clicked_slot) btn.show() app.exec_() #gui_3.py import sys from PyQt5.QtWidgets import * class MyWindow(QMainWindow):     def __init__(self):         super().__init__()         self.setupUI()     def setupUI(self): #자기 자신의 UI를 변경하는 메서드         self.setWindowTitle('Review')         btn1 = QPushButton('Click me',self)         btn1.move(20,20)         btn1.clicked.connect(self.btn1_clicked)     def btn1_clicked(self):         QMessageBox.about(self,'message','click...

[Python_trading] 파이썬_PyQt 활용한 GUI(2)

[Python_trading] 파이썬_PyQt 활용한 GUI(2) #pyqt_event.py import sys from PyQt5.QtWidgets import * from PyQt5.QtCore import * class MyWindow(QMainWindow):     def __init__(self):         super().__init__()         self.setWindowTitle('PyStock')         self.setGeometry(300,300,300,400)         btn1 = QPushButton('Click me',self)         btn1.move(20,20)         #이벤트, 이벤트 처리할 메서드를 connect메서드로 연결한다.           btn1.clicked.connect(self.btn1_clicked)                def btn1_clicked(self): #사용자가 버튼을 클릭하면 메시지를 발생시키는 이벤트 메서드         QMessageBox.about(self,'message','Btn1_clicked') if __name__ == '__main__':     app = QApplication(sys.argv)     myWindow = MyWindow()     myWindow.show()     app.exec_() 키움증권 로그인하기 #login_api.py import sys fro...

[Python_trading] 파이썬_PyQt 활용한 GUI

[Python_trading] 파이썬_PyQt 활용한 GUI #hello_PyQt.py import sys from PyQt5.QtWidgets import * app = QApplication(sys.argv) print(sys.argv) #현재 소스코드의 절대경로임을 확인 할 수 있다. QApplication 클래스의 인스턴스를 생성할 때 생성자로 이 값을 전달해야 한다.  #UI 를 구성하는 부분 #label = QLabel("hello PyQt") label = QPushButton("quit") #윈도우 창 속 모양을 바꿀 수 있다. label.show() app.exec_() app.exec_() : 호출시 프로그램은 이벤트 루프에 진입한다.  TUI 기반의 프로그램은 프로그램이 실행된 후 종료됬지만 GUI 프로그램은 사용자가 윈도우를 닫기 전까지는 계속 실행된 상태로 남아있는다.  프로그램이 종료되지 않고 실행상태로 남아있는 이유는 이벤트 루트 때문. 이벤트 루프는 기본적으로 무한 루프 구조로 무한루프 상태에서 사용자가 발생시킨 이벤트를 그때그때 처리한다. #qmain_window.py import sys from PyQt5.QtWidgets import * class Mywindow(QMainWindow):     def __init__(self):         super().__init__()         self.setWindowTitle("Pystock")         self.setGeometry(300,300,300,400) if __name__ =="__main__":     app=QApplication(sys.argv)     mywindow = Mywindow()     mywindow.show()     ...

[Python] 파이썬_집합

집합 : 순서가 없고, 인덱싱, 슬라이싱X, 중복을 허용하지 않는다. 변수 = set([1,2,3]) 튜플이 출력될 때는 {} 형식으로 출력된다. 아무리 같은 문자열이 들어가도 하나의 b인 원소만 기억(저장) 가령 set에 'abbbbc' 가 들어간다면 {'a','b','c'} 로 출력될 것이다.  교집합, 차집합, 합집합 """ A=set(['a',1,4,'c']) B=set([1,'c','4',2]) """ -교집합 : 공통적인 집합 각각 정수, 문자, 실수 동일한 데이터가 없으면 교집합이 되지 않는다.  """ A&B >>> {1, 'c'} """ A.intersection(B) 로 교집합 리턴받는 것도 가능하다 . -합집합 '|' = OR union 메서드 A.union(B) '"" A|B A.union(B) >>> {1, 2, '4', 4, 'a', 'c'} """ - 차집합 : 연산 순서가 데이터를 결정한다.  '-' = 차감 difference 메서드 """ B-A >>> {'4', 2} A-B >>> {'a', 4} B.difference(A) >>> {'4', 2} """ -데이터를 추가하는 경우 :  add() 사용 -여러개의 데이터를 추가하는 경우 : update() 인자로 수정할 값 벡터형태로 넣어도 됨  -수정할 것.difference_update(data) : 들어간 데이터로 수정하기 위해서 사용 is...

[Python] 파이썬의 GUI (Event)

바인드(이벤트) 버튼 누르거나 키를 누르거나 마우스를 눌렀을 때 실행을 도와주는 핸들러 사용하는 방법 - 위젯.bind() 이벤트발생시 Event Object 객체가 생성된다. 클래스 내에 정보를 가지고 잇다.  event 매개변수가 반드시 필요하다.  #tkinter_7.py from tkinter import * from random import * from time import * win = Tk() #마우스를 클릭하면 그 위치를 출력해주는 Event 프로그램 def onClick(event):     print(event.x,"    ",event.y) def dleft(event):     print("더블") def mleft(event):     print("모션") #bind(위젯,함수명) win.bind("<Button-1>",onClick) win.bind("<Double-Button-1>",dleft) win.bind("<B1-Motion>",mleft) #"<Button-1>" 마우스 왼쪽 버튼 #"<Button-2>" 마우스 휠 #"<Button-3>" 마우스 오른쪽 버튼 #드래그 #<B1-Motion> : 마우스 왼쪽 버튼 누른 상태로 움직일 때 #B2 : 휠, B3 : 오른쪽 #더블클릭 #<Double-Button-1> 더블클릭 왼쪽 win.mainloop() #tkinter_8.py from tkinter import * from random import * from time import * def onClick(event):     print('키보드',event.keycode) #키보드를 클릭했을 때 <Key> #char : 키보드를 누른 값을 문자로 반환 ==...

[Python] 파이썬의 GUI (Tkinter, 도형 무작위 그리기)

#tkinter_5.py  #사각형 그리기 from tkinter import * win = Tk() can = Canvas(win,width=400,height=400) #사각형 그림을 가지고 있는 can #create_rectangle(시작하는 x좌표,y좌표,끝x좌표,끝y좌표) can.create_rectangle(50,50,200,200,fill='blue') can.pack() win.mainloop() #tkinter_6.py #사각형 무작위로 그리기 ( random, time 패키지를 임포트하여 사용 ) from tkinter import * from random import * from time import * #choice : 리스트 자료형에서 임의의 값을 반환 #choice([d1,d2,d3,,,]) #randrange(시작,끝-1) #randrange(0,10,2) #0이상 10미만 3의 배수를 반환 #sample() #로또 1~45 중복 X #sample(범위,개수) #sample(range(1,46),6) #자료형을 인자로 전달받아서 임의의 값을 필요한 개수만큼 리스트로 반환 #중복제거 #shuffle() #전달받은 자료형 내용을 임의의 순서대로(랜덤) 전달받는다. 단 리턴값은 없음. ############################################################### # time 패키지를 이용 #sleep() : 프로그램을 지연( 멈춘다 ) win = Tk() can = Canvas(win,width=400,height=400) #사각형 그림을 가지고 있는 can #create_rectangle(시작하는 x좌표,y좌표,끝x좌표,끝y좌표) can.pack() color =['red','blue','yellow','pink','green','orange'] def draw_rect():     x=randint(0...

[Python] 파이썬 GUI (Tkinter)

위젯들은 모두 클래스이기 때문에 원하는 객체를 생성해서 사용하면 된다.  #tkinter_1.py from tkinter import * win = Tk() #윈도우 창을 생성할 수 있도록 도와주는 클래스 win.title('제목없는 윈도우') #윈도우 제목 #geometry("너비*높이+x좌표+y좌표") #좌표는 좌상단기준으로 아래로(y) 오른쪽으로(x) win.geometry("300x300+100+100") #Label() 을 이용하여 값을 추가할 수 있다. label = Label(win,text='파이썬',bg='red',fg='white') #bg: 백그라운드, fg: 폰트 label2 = Label(win,text='box',bg='green',fg='black') label.pack() #화면 배치 관리자 label2.pack() #버튼 만들기 btn1= Button(win,text='첫번째 버튼') btn2= Button(win,text='두번째 버튼') #place(x,y) : 윈도우 창 내에서 x,y좌표 위치를 잡아서 위젯들을 표시해준다. #grid(가로(row), 세로(column)) btn1.place(x=0,y=0) btn2.place(x=100,y=100) #btn1.pack(side=LEFT) #btn2.pack(side=LEFT) #pack() : 윈도우 자체 크기로 압축해서 자동 지정한다. 특별한 지정이 없다면 top에 선언된다. #pack() 은 side()를 통해 배치할 수 있다. #side(LEFT,RIGHT,TOP) #resizeable(상하,좌우) 조정 가능성 False로 주면 변경 불가 #win.resizable(False,False) win.mainloop() #윈도우 창이 종료될 때 까지 윈도우를 실행 시킨다. #tkinter_2.py from tkin...

[Python] 파이썬의 모듈과 데이터베이스(sqlite3)

sqlite3 : 기본적으로 파이썬에서 데이터베이스 프로그램 Demo 파이어베이스 : 파이썬에서 접근 가능 import sqlit3 를 이용한다. 설치 sqlitebrowser.org DBMS : 데이터베이스의 역할, 데이터를 저장하고 운용하는 것 테이블 : 실제 데이터를 담고 있는 것 레코드 : 데이터가 담긴 구조 sqlite3 를 사용하기 위해서는 연결이 이뤄져야한다. connect()를 이용한다. 이후 데이터베이스를 생성하게 된다.  dir(참조변수/클래스) : 내부의 값을 문자열로 반환한다. 리스트 형태로 반환한다. 내의 메서드나 변수를 확인 가능. 드라이브 내 DBMS 폴더 안에 저장 sqlite3 자료형 -문자열 text -float real -int integer -None NULL 데이터를 추가(삽입) 데이터베이스 읽기 : 저장되어있는 테이블의 데이터를 읽는다. select * from 테이블명 #sqlite3_1.py #데이터베이스 접속 from sqlite3 import* #메모리 DB접속(일회성) con = connect('G:\\내 드라이브\\python_Bigdata_AIB\\anaconda_python_file\\DBMS\\Test.db') #테이블을 생성 #cursor 데이터베이스 프로그래밍을 하는 동안 사용되는 커서를 생성 cur = con.cursor() #execute("문자열") #cur.execute("CREATE TABLE ATable(Name text,Number text)") cur.execute("INSERT INTO ATable Values('A','1')") con.commit() #생성된 테이블이나 삽입한 데이터를 저장 con.close() #sqlite3_2.py #데이터베이스 접속 from sqlite3 import* #메모리 DB접속(일회성) con = connect('G:\\내 드라이브\\python_B...

[Python] 파이썬의 접근제어자(public, private) 와 접근자(get)와 생성자(set)

[Python] 파이썬의 접근제어자(public, private) 와 접근자(get)와 생성자(set) 접근제어자 : 접근의 범위를 설정 공개/비공개 속성 public : 클래스 안,밖 모두 접근 기능 __변수명__, 변수명 __메서드명__, 메서드명 private : 클래스 내부에서만 접근 가능 __변수명, __메서드 private 객체를 생성할 때 초기화는 가능하다. 접근자와 생성자 : private 접근이 불가능하기 때문에 별도의 메서드가 필요하다. 접근자는 (getter), 생성자는 (setter) 라고 부른다. 접근자(getter)는 인스턴스의 값을 반환한다는 의미 생성자(setter)는 인스턴스의 값을 변경한다는 의미 protected : 해당 클래스와 그 하위(자식클래스)에 접근이 가능하다. 자식클래스의 객체를 생성한다. _변수명 #security.py #id, pw 저장 class Id:     def __init__(self,id1,pw):         self.__pw = pw #private : 정보 은닉         self.id1 = id1     def info(self):         print(self.__pw)         print(self.id1)     def get(self): #getter         return self.__pw     def set(self,p): #setter         self.__pw = p #main() A = Id('ID',1234) #main직접 호출시 접근이 불가능하다. #print(A.pw) #Error 발생, 클래스 밖에서는 접근이 불가능하기 때문이다. (AttributeError) A.inf...

[Python] 파이썬 오버라이딩(overriding) 및 클래스 변수와 메서드(@classmethod)

[Python] 파이썬 오버라이딩(overriding) 및 클래스 변수와 메서드 클래스변수, 메서드 (공유변수, 공유메서드) 클래스 변수는 모든 인스턴스가 공유, 인스턴스가 생성되기 이전에 이미 메모리 공간에 존재한다.  접근방법 : 객체를 생성하지 않아도 접근이 가능하다. 클래스 메서드는 인스턴스가 생성되기 이전에 메모리 공간에 존재한다. 접근방법 : 클래스명.메서드() @classmethod 라고 적음으로써 인스턴스 메서드와 구별이 가능하다. 인스턴스 메서드 main에서 객체(인스턴스)를 생성할때 메모리 공간에 선언된다. 접근방법 : 인스턴스명.메서드() #class_overrding.py class B:     #클래스 변수     int1=0 #객체를 생성하지 않더라도 이용이 가능하다.     #클래스 메서드, 인스턴스메서드     #def 메서드명():         #인스턴스 변수 b1=B() print(b1.int1) #클래스변수이기 때문에 객체 없이 호출가능하다. (프로그램 시작부터 끝까지 유지한다.) print(B.int1) b1.int1 = 1000 #새로운 인스턴스 b1의 변수에 접근하여 1000을 대입 print(b1.int1) print(B.int1) #class_overrding2.py class Account:     count =1     count_number = 1111     def __init__(self,money):         self.money = money         print(Account.count,"번 고객님 계좌>",Account.count_number)         Account.count +=1     ...

[Python_trading] 파이썬 알고리즘 트레이딩_과거데이터 가져오기 (개수)

[Python_trading] 파이썬 알고리즘 트레이딩_과거데이터 가져오기 조회하려는 종목의 코드값을 활용하여, 과거 데이터를 지정한 개수만큼 반환받는다.  #stockchart.py import win32com.client instStockChart = win32com.client.Dispatch("CpSysDib.StockChart") instStockChart.SetInputValue(0,'A003540') #조회하려는 종목의 코드값 instStockChart.SetInputValue(1,ord('2')) #1은 요청방식에 대한 타입, '2'는 개수로 요청할 때 사용한다. 만약 시간으로 요청하기 위해서는 '1'을 넣어주어야한다. instStockChart.SetInputValue(4,10) #4는 요청개수를 의미하고, 10은 실제로 요청할 데이터의 개수이다. instStockChart.SetInputValue(5,5) #5는 필드, 필드 배열을 의미, 5는 종가에 해당하는 값 조회, #ord라는 함수를 통해 문자열 값을 아스키코드로 변환해야한다. instStockChart.SetInputValue(6,ord('D')) #일 단위의 데이터를 가져오기 위해서 'D' 의 아스키코드 값을 전달한다. instStockChart.SetInputValue(9,ord('1')) #9는 수정주가 ,'1'은 수정주가, '0' 은 무수정주가이다. instStockChart.BlockRequest() numData = instStockChart.GetHeaderValue(3) #인자3은 수신개수를 반환하겠다는 것이다. for i in range(numData):     print(instStockChart.GetDataValue(0,i)) #인자 0는 요청한 데이터의 인덱스를 의미한다. 앞서 일 단위로 종가 하나만 요청했으므로 이 ...

[Python_trading] 파이썬 알고리즘 트레이딩_종목코드 가져오기2 (GetStockListByMarket)

#7.py import win32com.client instCpCodeMgr = win32com.client.Dispatch("CpUtil.CpCodeMgr") #GetStockListByMarket() : 메서드의 인자로 1을 전달하면 유가증권시장의 종목을 파이썬 튜플 형태로 반환받는다.  codeList = instCpCodeMgr.GetStockListByMarket(1) kospi = {} #Dictionary for code in codeList:     name = instCpCodeMgr.CodeToName(code)     kospi[code] = name #kospi 딕셔너리를 csv파일로 저장 f = open("G:\\내 드라이브\\python_API_Programming\\kospi.csv",'w') for key, value in kospi.items():     f.write("%s,%s\n"%(key,value)) f.close() #7_2.py import win32com.client instCpCodeMgr = win32com.client.Dispatch("CpUtil.CpCodeMgr") codeList = instCpCodeMgr.GetStockListByMarket(1) for i, code in enumerate(codeList):     secondCode = instCpCodeMgr.GetStockSectionKind(code) #GetStockSectionKind() 를 활용하면 종목이 주권, ETF, ETN  인지 알 수 있다.      name = instCpCodeMgr.CodeToName(code)     print(i,code, secondCode,name)

[Python_trading] 파이썬 알고리즘 트레이딩_종목코드 가져오기

#6.py import win32com.client instCpStockCode = win32com.client.Dispatch("CpUtil.CpStockCode") stockNum = instCpStockCode.GetCount() #GetCount() : 종목코드의 수 반환, 시기에 따라 다른 수가 리턴됨. #GetData() : 두개의 인자를 받는데, 첫번째 인자로는 0,1,2 를 받는다. 여기서 0은 종목코드, 1이면 종목명, 2이면 FullCode를 리턴한다. 두번째 인자는 index for i in range(stockNum):     if instCpStockCode.GetData(1,i) == 'NAVER': #인덱스의 종목명이 'NAVER' 라면         print(instCpStockCode.GetData(0,i)) #인덱스에 맞는 종목코드를 가져온다.         print(instCpStockCode.GetData(1,i)) #인덱스에 맞는 종목명을 가져온다.         print(i) #인덱스 출력 #6_2.py import win32com.client instCpStockCode = win32com.client.Dispatch("CpUtil.CpStockCode") ncode = instCpStockCode.NameToCode('NAVER') #종목이름으로 코드 가져오기 (NameToCode() : 매개변수에는 종목이름) naverindex = instCpStockCode.CodeToIndex(ncode) #CodeToIndex : 종목코드를 이용해 인덱스를 구하는 메서드 print(ncode) print(naverindex)

[Python] 파이썬 메서드 오버라이딩 (method overriding)

이미지
[Python] 파이썬 메서드 오버라이딩 (method overriding) 오버라이딩_overriding (재정의) : 부모로 부터 받은 메서드 내용을 자식 클래스에 맞게 내용을 변경하는 것 오버라이딩의 조건 : 메서드 이름이 동일해야 한다.  #overriding1.py class Animal:     def __init__(self,name):         self.name = name     def cry(self):         pass class Puppy(Animal):     def __init__(self,name,age):         self.name = name         self.age = age     def cry(self):         print("DOGsound") class Cat(Animal):     def __init__(self,name,age):         self.name = name         self.age = age     def cry(self):         print("CatSound") doggy = Puppy("DOGGY",1) doggy.cry() cat = Cat("cat",1) cat.cry() 부모클래스에게 받은 메서드 보다 우선적으로 호출된다. 자식 클래스가 부모클래스를 호출하고 싶은 경우 사용하는 메서드 super() 사용방법 : 메서드super().부모클래스의 내용 #overriding2.py class point:     def __init__(self,x,...

[Python_bigdata] 파이썬 판다스Pandas 기본 개념 및 활용

#day06_03_pandas.py # -pandas # 판다스 예제 # 판다스 이용하기 및 자료구조  import pandas as pd import numpy as np pd.__version__ #Series 정의 obj=pd.Series([1,2,3,4,5])  obj #Serise 의 값 확인 obj.values #Series 의 인덱스 확인 obj.index #Series 연산 #모든 자리에 3을 더해라  obj + 3 #평균  obj.mean() ##데이터 프레임 만들기  #비정형 데이터  예) list  [1,3] #대표적인 비정형 데이터라고 볼 수 있다 . #반정형 데이터 : 데이터에 대해 순번 또는 키 등을 알 수 있으나 테이블의 형태는 아니다. key와 value로 이뤄진 형태. my_dict={'a':[1,3],'b':[1,2],'c':[2,4]} my_dict #정형 데이터 : 반정형과의 가장 큰 차이는 행과 열을 가지는 테이블의 형태를 가진다.  pd.DataFrame(my_dict) #리스트 타입으로 데이터 프레임 만들기 mylist = [['tom',20],['nick',30],['korea','40']] mylist a= pd.DataFrame(mylist,columns=['name','age']) #columns 를 통해 열 이름 지정 #DataFrame 의 조회 ## loc : 라벨값 기반의 2차원 인덱싱 ## iloc : 인덱스 기반의 2차원 인덱싱 ## at :라벨값 기반의 인덱싱 (데이터1개 ) ## iat : 인덱스 기반의 인덱싱 ( 데이터1개 ) my_dict={'a':[1,4,7],'b':[2,5,8],'c':[3,6,9]} df = pd.DataFrame(my_dict) #df.loc[행,열]  display(df.loc[:,:]) #전체 dis...

[Python_bigdata] 파이썬을 활용한 크롤링(여러 개의 투입값에 따른 결과값 반환)

검색어들을 리스트로 저장 후 해당 검색어에 따른 횟수를 반복문을 통해 받아오는 방식이다. input()을 이용할 수도 있을 것이다. #day06_02_crawling.py from bs4 import BeautifulSoup import requests as req keywords  = ['빅데이터','머신러닝','마스크'] for i in keywords:     url = 'http://jtbc.joins.com/search/news?term='+i     response = req.get(url)     soup = BeautifulSoup(response.text,'html.parser')     cnt = soup.select('.txt_result')[0]     print(i,':',cnt.select('strong')[0].text,'건')     #print({},':',{},'건').format(i,cnt.select('strong')[0].text) #.format 활용

[Python_bigdata] 파이썬을 활용한 크롤링

#day06_01_crawling.py #크롤링 예제, jtbc 뉴스검색 사이트에서 검색어에 따른 기사 갯수 구하기 from bs4 import BeautifulSoup import requests as req keyword  = '빅데이터' url = 'http://jtbc.joins.com/search/news?term='+keyword #url 주소에 요청(request) response = req.get(url) response.text #html #응답 받은 response 객체의 text를 html 형태로 반환 soup = BeautifulSoup(response.text,'html.parser') # '.'은 class, '#'은 id soup.select('.txt_result')[0] #list 형태이기 때문에 첫번째 인덱스 값을 가져올 것이다.  #<strong> 태그 내부의 글자가 필요하다. cnt = soup.select('.txt_result')[0] cnt.select('strong')[0].text #리스트 인덱스 0 의 내용 중 텍스트 값만 뽑아올 수 있다.  print(keyword,':',cnt.select('strong')[0].text,'건')

[Python_bigdata] 파이썬을 활용한 웹 크롤링

# Day05_04_crawling # !/usr/bin/env python # coding: utf-8   # 크롤링으로 원하는 데이터 수집 # python 에서 크롤링을 위해서 필요한 외부 패키지 import requests as req from bs4 import BeautifulSoup # 1. 대상사이트 target_url =' https://www.apache.org/' # 2. 대상 사이트에 통해 페이지 요청하기 response = req.get(target_url) # get 요청에 따른 response 200 이면 성공 # 3. 응답된 결과를 담은 response 변수에서 페이지의 내용보기 BeautifulSoup(response.text) # response.text 는 문자 자체라고 볼 수 있다 . BeautifulSoup 를 통해 html 과 같이 가져온다 . soup = BeautifulSoup(response.text,'html.parser')  #html.parser를 이용하여 html 형태로 출력가능 # 4. html 결과값에서 긁어올 부분 ( 가져올 부분 ) select 하기 categories = soup.select(' # by_category>ul>li>a') # ,> 를 통해 하위의 코드를 가져온다 . categories   # categories 를 반복문을 통해 순회한다 . for i in categories:     print(i.text) # <a 내부의 텍스트만 추출   categories2 = soup.select('.col-lg-6>ul>li>a') # ,> 를 통해 하위의 코드를 가져온다 . categories2 for i in categories2:     print(i.te...

[Python_bigdata] 파이썬 기본 문법 (연산, 반복문, 조건문, 배열, 리스트, 함수, 패키지)

# Day05_01_basic # !/usr/bin/env python # coding: utf-8   # day05_01_data_type   # 주석 print('hello ,world')   # 데이터 타입 # 숫자형 # 정수형 a =123 b=-123 print(a) print(b)   # 실수형 c=123.123 d=100.000 print(c) print(d) print(c-d) # 실수형은 정확하게 계산을 시킬 수 없는 영역이기 때문에 뒤에 0000001 이 붙는다 .   123.123 == 123.123   # 문자형을 만드는 법 print('') print("") a="""   가독성 좋게 하는 법     """ print(a)   # 파이썬은 문자형이 존재하지 않는다 . # 문자열만 존재한다 .   a='hello world' print(a) print(a[0]) print(a[6]) print(a[0:6]) print(a[:]) print(a[0:]) print(a[:7]) print(a[7:])   # 실습 w 를 W 로 변경 # 조합을 해서 변경 w='w' w=w.upper() print(a[:6]+'W'+a[7:]) print(a[:6]+w+a[7:])   a='hello' b='korea' print(a,b)   # LIST # 여러가지 데이터 형을 동시에 가지고 있는 구조 # 파이썬은 배열형이 존재하지 않는다 . # 만드는 방법 a=[1,2,3] a[1]   b=['a','b',...