- 설치 가이드
- Python 배포판
- Python 설치
- Setuptools 설치
- Python 추가 모듈 설치
- Apache Python Module 설치
- MySQL for Python 설치
- Python 설치
- CentOS에서 Python 설치
- Windows에서 Python 설치
- Python 문법
- Python 기초
- 자료형
- 조건문/반복문
- For for List
- For for Set
- For for Dictionary
- Class
- 함수
- Lambda
- 패키지
- 모듈
- with문
- 오류 처리
- 기타 문법
- Python 입출력
- 전역 변수
- 표준 입출력
- CLI Argument
- 브라우저 입출력
- Cookie 입출력
- 세션 입출력
- 데이터베이스 입출력
- 파일 입출력
- 메일 입출력
- numpy
- pandas Series
- pandas DataFrame
- DataFrame 생성
- DataFrame 기본 정보
- DataFrame 연산
- Python과 Java 연동
- PSP 언어
- Testcase
- 사용자 가이드
- 외부 프로그램 실행
- 관리자 가이드
- Database 연동
- 참고 문헌
오브젝트 지향 프로그래밍, 구조화 프로그래밍, 관점 중심 프로그래밍 및 함수 프로그래밍을 지원하는 프로그램 언어인 Python을 정리 한다.
홈페이지 : http://www.python.org/
*Library : https://docs.python.org/3/library/
다운로드 : http://www.python.org/download/, Apache Python Module
라이선스 : Python 2.6.2 license
플랫폼 :
설치 가이드
Python 배포판
Anaconda : https://www.anaconda.com/
Python(x, y) : http://python-xy.github.com/
Enthought Canopy : https://enthought.com/products/epd
WinPython : http://winpython.github.io/
Python 설치
Python 최신 버전은 3.0.1이나 Apache HTTP Server 2.2와 연동을 위해 Python 2.5 버전을 설치 한다.
다운로드 사이트에서 Python 2.5.4 ("python-2.5.4.msi") 파일을 다운로드 한다.
다운로드 받은 파일을 실행한 후 "Install for all users"를 선택 한다.
[설치 시작](File:Python install 01.png.md)
Python 설치 디렉토리를 설정 한다.
[폴더 설정](File:Python install 02.png.md)
설치할 모듈을 선택 하는 화면으로 그냥 "Next" 버튼을 선택 하여 설치를 완료 한다.
[모듈 선택](File:Python install 03.png.md)
Python 설치 후 사용하기 위해서 필요한 환경을 설정한다.
PYTHON_HOME=c:/app/Python
PATH=c:/app/Python (기존 PATH에 추가)
[환경 설정](File:JDK600 environment.png.md)
바탕화면의 "내 컴퓨터"에서 오른 마우스를 클릭한 후 "속성"을 선택한다.
"고급" 탭에서 하단에 있는 "환경 변수" 버튼을 누른다.
위에 명시한 환경 변수를 추가 또는 수정한다.
환경 설정이 정상적으로 되었는지 확인하기 위해 도스창에서 다음 명령을 사용하여 Python의 버전을 확인한다.
python -V
Setuptools 설치
파이선용 패키지 설치 자동화 툴인 setuptools를 설치 한다.
다운로드 사이트에서 MS Windows Installer인 "setuptools-0.6c9.win32-py2.5.exe" 파일을 다운로드 한다.
다운로드 받은 프로그램을 관리자 권한으로 실행한 후 "다음(N)" 버튼을 선택 한다.
[설치 시작](File:Python install 04.png.md)
Python이 설치된 디렉토리와 설치할 디렉토리를 확인 한다.
[설치 폴더](File:Python install 05.png.md)
"다음(N)" 버튼을 선택하여 설치를 완료 한다.
[설치 완료](File:Python install 06.png.md)
setuptools는 아래 디렉토리에 설치가 된다.
$PYTHON_HOME/Lib/site-packages/'''setuptools'''
$PYTHON_HOME/Scripts/ #--- 실행 프로그램은 여기에 설치가 된다.
Python용 setuptools 설치 후 사용하기 위해서 필요한 환경을 설정한다.
PYTHONPATH=c:/app/Python/Lib;c:/app/Python/DLLs;c:/app/Python/Lib/lib-tk;c:/app/Python/Lib/site-packages
PATH=c:/app/Python/Scripts (기존 PATH에 추가)
[환경 설정](File:JDK600 environment.png.md)
바탕화면의 "내 컴퓨터"에서 오른 마우스를 클릭한 후 "속성"을 선택한다.
"고급" 탭에서 하단에 있는 "환경 변수" 버튼을 누른다.
위에 명시한 환경 변수를 추가 또는 수정한다.
Setuptools을 사용한 python용 추가 모듈 설치 방법
추가 모듈은 도스창에서 다음 명령으로 쉽게 설치할 수 있다.
설치된 python 버전에 맞는 추가 모듈이 자동으로 설치 된다.
easy_install 모듈명
Python 추가 모듈 설치
Apache Python Module 설치
[Apache HTTP Server](Apache HTTP Server.md)와 연동할 필요가 있을 경우에만 설치 한다.
Apache Python Module 설치
[http://www.modpython.org/ mod_python] 또는 Mod_python 다운로드 사이트에서 mod_python-3.3.1.win32-py2.5-Apache2.2.exe 파일을 다운로드 한다.
다운로드 받은 파일을 관리자 권한으로 실행하여 "다음(N)" 버튼만 눌러 주면 설치가 된다.
설치된 [Apache HTTP Server](Apache HTTP Server.md)의 홈 디렉토리를 물어보면 해당 디렉토리를 선택하면 된다.
$PYTHON_HOME/Lib/site-packages/'''mod_python''' #--- 폴더가 생성 된다.
$APACHE_HOME/modules/mod_python.so #--- 파일이 생성 된다.
Python sys.path에는 다음과 같은 값이 설정 된다.
C:/WINDOWS/system32/python25.zip
C:/app/Python/Lib
C:/app/Python/DLLs
C:/app/Python/Lib/lib-tk
C:/app/Apache
C:/app/Apache/bin
C:/app/Python
C:/app/Python/lib/site-packages
$APACHE_HOME/conf/httpd.conf에서 Python 사용을 위한 환경 설정
mode_python은 기본적으로 세가지 handler를 제공 한다.
testhandler : 테스트용으로 Python으로 전달된 값을 웹페이지에 표시 한다.
publisher : CGI 방식으로 Python을 실행 한다. (~.py)
psp : PSP (Python Server Page) 방식으로 Python을 실행 한다. (~.psp)
LoadModule cgi_module modules/mod_python.so #--- 추가
#--- 폴더별로 아래 설정을 다르게 가질 수 있다.
Options Indexes FollowSymLinks ExecCGI #--- CGI를 위해 ExecCGI 추가
###--- Test Hanldler를 사용하여 Python 정보와 요청 정보 등을 확인
###--- http://localhost/pythoninfo.py
# PythonHandler mod_python.testhandler
# PythonDebug On
###--- CGI 방식으로 Python 파일(~.py) 실행
###--- http://localhost/pythoninfo.py/handler
# PythonHandler mod_python.publisher
# PythonDebug On
###--- PSP (Python Server Page) 방식으로 Python 파일(~.psp) 실행
###--- http://localhost/pythoninfo.psp
PythonHandler mod_python.psp
PythonDebug On
#--- index.cgi index.psp index.py 추가
DirectoryIndex index.html index.cgi index.psp index.py
AddHandler mod_python .py .psp #--- 추가
Python에서 한글 설정
[문자셋과 인코딩 - Python](문자셋과 인코딩.md#Python.md)
CGI 방식으로 python 동작 확인 방법
httpd.conf에서 mod_python.publisher를 사용하도록 설정하고 Apache를 재기동 한다.
c:/www/pythoninfo.py (UTF-8 형태로 저장)를 아래와 같이 생성한다.
http://localhost/pythoninfo.py 를 호출 한다.
# -*- coding: utf-8 -*-
from mod_python import apache
def handler(req):
req.content_type = 'text/html'
req.write("\n")
req.write("\n")
req.write(" \n")
req.write(" Python 정보 \n")
req.write("\n")
req.write("\n")
req.write("\n")
req.write("Python Info (파이썬 정보)!\n")
req.write("\n")
req.write("\n")
PSP (Python Server Page) 방식으로 python 동작 확인
httpd.conf에서 mod_python.psp를 사용하도록 설정하고 Apache를 재기동 한다.
c:/www/pythoninfo.psp (UTF-8 형태로 저장)를 아래와 같이 생성한다.
http://localhost/pythoninfo.psp 를 호출 한다.
Python 정보
Python Info (파이썬 정보)!
MySQL for Python 설치
MySQL과 연동할 필요가 있을 경우에만 설치 한다.
다운로드 : http://sourceforge.net/project/showfiles.php?group_id=22307
라이선스 : GNU General Public License (GPL), Python License (CNRI Python License), Zope Public License
다운로드 사이트에서 "MySQL-python-1.2.2.win32-py2.5.exe" 파일을 다운로드 한다.
다운로드 받은 파일을 실행하여 "다음(N)" 버튼만 눌러 주면 아래 폴더에 설치가 된다.
$PYTHON_HOME/Lib/site-packages/'''MySQLdb'''
Python 설치
CentOS에서 Python 설치
yum install python python-*
python -V
Windows에서 Python 설치
http://www.python.org/download/ 사이트에서 Python을 다운로드 받아 설치 합니다.
Python 문법
Python 기초
파일의 문자셋 설정
# -*- coding: utf-8 -*-
코드 블록
:와 들여쓰기로 표시
~:
~
주석
#!/user/bin/python
# _*_ coding: cp949 _*_
# ~
한 라인에서 여러 문장을 실행
~; ~; ~
_ : 인터프리터 모드에서 최종 실행된 결과가 저장되는 변수명
자료형
str(type(~)) : 자료형의 이름을 표시
Python에서 변수는 Call by Reference 값을 가짐, 즉 값을 저장하는 것이 아니라 값이 저장된 곳의 주소를 가짐
import copy
b = a[:](:.md) : a의 값이 복제되어 다른 주소에 저장된 후 b에 할당됨
b = copy.deepcopy(a)
b = a
b = copy.copy(a)
{| cellspacing="0" cellpadding="2" border="1" width="100%" bgcolor="#FFFFFF" align="center"
|-
| width="20%" align="center" valign="middle" style="background-color:#eee;" | 숫자
| width="80%" align="left" valign="middle" |
int, float, complex (복소수)
int 상수 : 0b
. 2진수, 0o. 8진수, 0x~. 16진수int를 진수로 표시된 숫자로 변환 : bin(78), oct(78), hex(78)
x = 3 - 5i
x.real : 실수부
x.imag : 허수부
x.conjugate()
format(숫자, ",.2f")
format(숫자, "6,.2f")
|-
| align="center" valign="middle" style="background-color:#eee;" | 문자
| align="left" valign="middle" |
string : "
", ''
"""
Hear Text
"""
str1 + str2 : 문자열 합치기
str.split'x' : 문자열을 쪼개어 List에 저장 한다.
str(~) : 숫자를 string 형으로 변환
~.rjust(3) : 주어진 인수의 길이로 오른쪽 정렬 합니다.
~.zfill(3) : 주어진 인수의 길이로 왼쪽에 0을 채워 표시 합니다.
format
{
:n} : n. 크기, >. 오른쪽 정렬, < 왼쪽 정렬, ^. 가운데 정렬= 부호 표시, +. Plus 부호, -. 마이너스 분호,
b. 이진수, d. 십진수, o. 8진수, x. 16진수, c. 문자열
e. 지수, f. 실수, %. 퍼센트 ({~:.3f} : 소숫점 세자리까지 표시)
"{0}~{1}".format(~, ~)
"{aaa}~{bbb}".format(aaa=~, bbb=~)
dic = {"item": "apple", "color": "red"}
"{0[item]}" ~ {0[color](color.md)}".format(dic)
"{item}" ~ {color]}".format(**dic)
"{~.~}.format(**vars())
"{0:$>5}".format(~) : 전체 길이 5, 빈공간을 채우는 문자는 $
|-
| align="center" valign="middle" style="background-color:#eee;" | 논리
| align="left" valign="middle" |
bool : True, False
|-
| align="center" valign="middle" style="background-color:#eee;" | Array
| align="left" valign="middle" |
Array, 배열
from array import array
tmpArray = array('i') #--- https://docs.python.org/3/library/array.html
~n : 0, 1, 2, ...
-1. 맨 마지막 항목
0:2 : 0, 1, 2 항목 배열
|-
| align="center" valign="middle" style="background-color:#eee;" | List
| align="left" valign="middle" |
List : ~, ~, 0. 첫번째 항목
len(~) : List의 크기
~.append(val) : 항목 추가
~.extend(valList) : List 추가
~.insert(pos, val) : pos 번째 위치에 x 추가
~.remove(val) : val 값을 갖는 항목 삭제
~pop(pos) : pos 위치에 있는 항목 삭제, 위치 생략시 맨 마지막 항목 삭제
del ~pos : pos 위치에 있는 항목 삭제
~.index(val) : val 값을 갖는 항목의 위치 반환
~.count(val) : val 값이 나타나는 횟수 반환
~.sort() : 정렬
~.reverse() : 전체 항목의 순서를 거꾸로 조정
zip(~, ~, ~) : 여러개의 배열을 같은 인덱스 순으로 합침
|-
| align="center" valign="middle" style="background-color:#eee;" | Set
| align="left" valign="middle" |
Set, 집합, { }
len(~)
add(
), remove(), discard(), pop(), clear()a.union(b) : 합집합
a.intersection(b) : 교집합
~ = {~, ~, ~}
~ = set('문자열')
for name, value in ~.items():
~
x in s
x not in s
|-
| align="center" valign="middle" style="background-color:#eee;" | Dictionary
| align="left" valign="middle" |
생성자 : dict(), {}
Dictionary
~.items(), ~.keys(), ~.values() : Tuple로 반환
['']('~'.md) = ~del
['']('~'.md)
~ = dict(a=1, b=3, c=5)
~ = {'a': 1, 'b':3, 'c': 5}
|-
| align="center" valign="middle" style="background-color:#eee;" | Tuple
| align="left" valign="middle" |
생성자 : tuple(), (~, ~, ~)
Tuple : 변수들의 모임, ( ), 읽기 전용
~ = ~, ~, ~
~ = (~, ~, ~)
~[pos](pos.md) : Tuple에서 pos 위치의 변수, 0, 1, 2, ...
|-
| align="center" valign="middle" style="background-color:#eee;" | 특수
| align="left" valign="middle" |
None : 값이 없음
if ~ is None:
|}
조건문/반복문
블럭의 시작은 :로 표시하고 블럭의 내용은 Identation (들여쓰기)로 구분 합니다.
아무것도 실행하지 않는 코드
pass
if 문
if ~:
~
elif ~:
~
else:
~
while 문
while ~:
~
for 문
for ~ in ~:
~
break
continue
else: #--- while 또는 for 문이 정상적으로 종료 되었을 경우 실행됨
~
표현식
[for ~ in ~ if ~](표현식)
표현식 for ~ in ~ if ~
range(3) : 0, 1, 2
range(5, 8) : 5, 6, 7, 8
range(0, 10, 3) : 0, 3, 6, 9
리스트 내장 : for ~ in ~ if ~
map 함수 : map(맵_함수, ~)
def 맵_함수(val):
return ~ #--- val을 가공한 값을 반환
필터 함수 : filter(필터_함수, ~)
def 필터_함수(val):
return ~ #--- True, False
zip(~, ~) : 변수들의 값을 Tuple 형태로 묶어서 이터레이터 형태로 반환
For for List
msgs = [2, 3, 4, 5](1,)
for value in msgs:
print(value)
msgs = [2, 3, 4, 5](1,)
for idx in range(len(msgs)):
print(msgs[idx](idx.md))
msgs = [2, 3, 4, 5](1,)
for idx in range(len(msgs)):
print(msgs[- idx - 1](len(msgs)))
msgs = [2, 3, 4, 5](1,)
for idx, val in enumerate(msgs):
print(idx, val)
For for Set
msgs = {1, 2, 3, 4, 5}
for value in list(msgs):
print(value)
For for Dictionary
msgs = {'a':1, 'b':2, 'c':3, 'd':4, 'e':5}
for key, value in msgs.items():
print(key, value)
for key in msgs.keys():
print(key, msgs[key](key.md))
Class
Class 선언과 사용
class ~:
"""
클래스 설명
"""
__var = 0 #--- Private 변수
def __init__(self, value): #--- 생성자
pass
def __del__(self): #--- 소멸자
pass
@staticmethod
def funcStatic(): #--- Static Method, ClassName.funcStatic()
pass
def funcName(self): #--- Class Method, instance.funcName()
self.~
~ = className()
~.funcName() #--- Instance를 암묵적으로 parameter로 전달됨
~.__class__.~ #--- Class의 변수나 함수를 참조 합니다.
isinstance(인스턴스, 클래스)
issubclass(하위클래스, 상위클래스)
연산자 중복 (a를 기준으로)
add(self, ~) : a + b
sub(self, ~) : -
mul(self, ~) : *
truediv(self, ~) : /
floordiv(self, ~) : //
mod(self, ~) : %
divmod(self, ~) : divmod(a, b)
pow(self, ~) : a ** b
lshift(self, ~) : <<
rshift(self, ~) : >>
and(self, ~) : &
xor(self, ~) : ^
or(self, ~) : |
abs(self) : abs(a)
pos(self) : +a
neg(self) : -a
invert(self) : ~a
lt, le, eq, ne, ge, gt
연산자 위치 변경, r 추가 : radd(self, ~) : b + a
확장된 연산자 중복, i 추가 : iadd(self, other) : a += b
len(self) : len(a)
contain(self, item) : item in a
getitem(self, key) : akey
setitem(self, key, value) : akey = value
delitem(self, key) : del akey
Class 상속.
class ~(parentClass):
super().__init__() #--- parent class의 함수 호출
super(parentClass, self).__init__() #--- parent class의 함수 호출
parentClass.__init__(self, ~) #--- child class에서 parent class의 함수 호출
class ~ (parentA, parentB): #--- 다중 상속
#--- 생성자 호출 순서 : parentB.__init__() > parentA.__init__() > self.__init__()
issubclass(childClass, parentClass)
object : 모든 class의 최상위 parent class
함수
함수도 변수처럼 다른 변수에 할당 가능
dir(builtins) : 내장 함수의 목록
함수 설명
help(함수명) : 함수 설명 보기
함수명.__doc__ = "~"
def ~(~):
"""
여기에 함수 설명 기술
"""
함수의 정의
locals()
vars()
globals() : 생성된 함수의 객체를 표시
def ~(~, ~ = ~):
global ~ #--- global 변수를 함수내에서 사용하도록 설정
~
yield ~ #--- 함수를 끝내지 않고 값을 전달
#--- 다시 함수가 호출되면 이후에 실행된 yield에서 전달한 값을 전달
return ~
def ~(~, ~):
pass #--- 아무런 동작도 하지 않는 코드
def ~(*args): #--- Tuple 형으로 값을 전달
def ~(**args): #--- Dictionary 형으로 값을 전달, ~(~ = ~, ~ = ~) 방식으로 호출
Generators: Iterator를 만들때 사용
def ~():
yield ~ #--- 함수를 끝내지 않고 값을 전달
def generator_a():
yield ~
raise StopIteration()
Iterator
class iterrator_a:
def __init__(self, n):
self.n = n
def __iter__(self):
self.idx = -1
return self
def __next__(self):
self.idx += 1
if self.idx >= self.n:
raise StopIteration()
return self.idx
iter(~) 함수
x = iter(~)
~ = next(~)
iter1 = filter(함수, 리스트)
iter2 = map(함수, 리스트)
함수 호출
~(~, ~)
~(~ = ~, ~ = ~)
Lambda
lambda 인자: 구문
~ = lambda ~, ~: ~ #--- 변수에 직접 함수를 정의하여 저장
패키지
폴더에 init.py 파일을 생성할 것
모듈
모듈의 위치
$PATHON_HOME/lib/
$PATHON_HOME/lib/python2.7/site-packages/$PYTHONPATH
sys.path.append('
'))
imp.reload(파일 확장자
~.py : Python 파일
~.pyc : 컴파일된 byte cod
모듈 추가
$PATHON_HOME/lLib/ 폴더에서 import할 파일을 찾습니다.
PYTHONPATH 환경 변수에 등록된 path에 import할 파일을 찾습니다.
import package.file as ~
from package.file import class, function, ...
import ~ #--- 모듈 파일 삽입, ~.py
import ~.~.~ as ~ #--- 모듈을 as 뒤에 나오는 이름으로 import 합니다.
~.funcName()
from ~ import funcName #--- 모듈 파일에서 method 삽입
from ~ import * #--- __로 시작하는 변수, 함수를 제외하고 import
funcName()
moduleName.~
sys.path를 사용한 import path 관리
import sys
sys.path.append('~')
sys.path.remove('~')
코드 수정시 동적으로 import
import imp
imp.reload(moduleName) #--- 수정된 모듈을 다시 로드 한다.
Python 파일을 직접 실행
python ~.py
if __name__ == '__main__':
pass #--- 직접 실행시 __name__에 __main__이 저장됨
else:
pass #--- import시 __name__에 모듈 이름이 저장됨
패키지
폴더의 계층 구조로 package 생성,
..~각 폴더마다 패키지를 초기화하는 init.py 파일이 존재함
import ~.~ as ~
참고 문헌
with문
with atomic.ActionTimer(self, key): ``` return self.clients("ceilometer").meters.list(q=query, limit=limit) ```
with문 시작시 ActionTimer class의 enter(self) 함수를 호출하고 with문 종료시 exit(type, value, traceback) 함수를 호출함
오류 처리
BaseEception
Exception : str 함수를 구현할 것
사용자 정의 예외
class ~(Exception):
def __init__(self, value):
self.value = value
try catch 문
try:
~
except ~ as ~:
~
except (~, ~, ~):
~
except Exception as e:
print(e.args[0](0.md))
except:
~
else:
~
finally:
~
예외 발생
raise #--- 예외를 상위로 전달
raise Exception
raise Exception(~)
assert 조건식, 관련_데이터 #--- AssertionError 발생, __debug__ 값이 true인 경우에만 실행됨
eval(~) #--- 문자열을 실행
기타 문법
import fibo : fibo.py 포함
from fibo import ~
sys.path, PYTHONPATH
Python 입출력
전역 변수
표준 입출력
표준 입력 : sys.stdin
~ = input(~)
표준 출력 : sys.stdout
#--- sep. 구분자, end. 끝라인, file. 출력 파일
print(~)
sys.stdout.write('~')
표준 오류 : sys.stderr
CLI Argument
graph_file = sys.argv[1](1.md) task_fr = sys.argv[2](2.md) task_to = sys.argv[3](3.md) step = int(sys.argv[4](4.md))
브라우저 입출력
Cookie 입출력
세션 입출력
데이터베이스 입출력
파일 입출력
파일 입력
finp = open('~.txt')
for line in finp.readlines():
print line
finp.close()
f.read()
#--- readline(), readlines()
#--- seek(~), tell()
~ = pickle.load(finp) #--- 저장된 개체 읽기, rb 모드
f.close()
파일 출력
mode : r, w, a, +, b, t
fout = open('~.txt', 'w')
fout.write('~')
pickle.dump(~, fout) #--- 개체 저장, wb 모드
fout.close()
메일 입출력
numpy
import numpy as np
pandas Series
import pandas as pd
from pandas import Series, DataFrame
data = [200, 300, 400, 500](100,)
index = ['20180702', '20180703', '20180704', '20180705']('20180701',)
series = Series(data, index)
print(series)
for idx in series.index: #--- series.values
print(idx, series[idx](idx.md))
pandas DataFrame
DataFrame 생성
import pandas as pd
from pandas import Series, DataFrame
df = DataFrame(None) #--- 빈 DataFrame 생성
cols = [ 'col1', 'col2' ]
df = DataFrame(None, columns=cols, index=[])
self.results.loc[idx] = [ 0, 0 ] #--- idx = 0, 1, 2, ...
#--- 데이터로 DataFrame 생성
col_1 = [100, 200, 300, 400, 500]()
col_2 = [600, 700, 800, 900, 1000]()
col_3 = [1200, 1300, 1400, 1500](1100,)
col_4 = [1700, 1800, 1900, 2000](1600,)
col_5 = [2200, 2300, 2400, 2500](2100,)
cols = ['high', 'low', 'close', 'other']('open',)
index = ['20180702', '20180703', '20180704', '20180705']('20180701',)
data = {
cols[0](0.md): col_1,
cols[1](1.md): col_2,
cols[2](2.md): col_3,
cols[3](3.md): col_4,
cols[4](4.md): col_5
}
df = DataFrame(data, columns=cols, index=index)
#--- 데이터베이스에서 DataFrame 가져오기
df = pd.read_sql(query, self.MainWindow.con, index_col=None) #--- Table에서 읽기
df.index = range(df.shape[0](0.md)) #--- 행 번호 재지정
columns = ['close', 'volume', 'amount', 'date', 'open', 'high', 'low']('stock',)
df.columns = columns #--- 열 이름 재지정
DataFrame 기본 정보
df.shape #--- shape[0]. 행수, shape[1](1.md). 열수
df.index #--- 행 인덱스
df.columns #--- 열 이름
np.nan #--- 비어 있는 값을 지정할 때 사용
df[['f현재가', 'f저가']] = df['f현재가', 'f저가']('f현재가',_'f저가'.md).astype(float) #--- 열의 유형 변경
dataset.index = range(dataset.shape[0](0.md)) #--- 번호 인덱스 재지정
#--- 행 지정
df.loc['20180701']('20180701'.md) #--- Series
df.loc[ ['20180701']]('20180701'].md) #--- DataFrame
df.iloc[0](0.md) #--- Series
df.iloc[0:2](0:2.md) #--- DataFrame
df.ix['20180701']('20180701'.md) #--- Series (Deprecated)
df.ix[2](2.md) #--- Series (Deprecated)
df.ix[0:2](0:2.md) #--- DataFrame (Deprecated)
#--- 열 지정
df.loc['open'](:,) #--- Series
df.loc[:, ['close']]('open',) #--- DataFrame
df.iloc[0](:,) #--- Series
df.iloc[0:2](:,) #--- DataFrame
df['open']('open'.md) #--- Series
df[ ['high']]('open',) #--- DataFrame
#--- 행 우선 항목 지정
df.loc[ ['20180701'], ['open']]('open'].md) #--- DataFrame
df.loc[ ['20180701']][ ['open']]('open'].md) #--- DataFrame
df.loc[ ['20180701']]['open']('open'.md) #--- Series
df.loc['20180701'][ ['open']]('open'].md) #--- Series
df.ix['20180701']['open']('open'.md) #--- 값
df.ix['open'](:,) #--- Series
#--- 열 우선 항목 지정
df['open']['20180701']('20180701'.md) #--- 값
#--- 부분 DataFrame 생성
dataset = dataset[(dataset['f일자'] >= '20100101') & (dataset[<= '20181231')]('f일자'])
val_mask = np.random.choice(전체_크기, 추출할_크기)
x_val = x_train.loc[val_mask](val_mask.md)
x_train = x_train.drop(val_mask)
DataFrame 연산
#--- DataFrame 합치기
dataset = pd.concat([dataset, datasetTA[idx]](idx].md)) #--- 행이 추가됨
#--- 행 추가/수정/삭제
df.ix[행] = [~, ~, ~](~,)
df4 = df1.append({'c1':2, 'c2':2, 'c3': 3})
df = df.drop('행') #--- 행 삭제
df = df.dropna() #--- 비어 있는 값을 포함한 행을 삭제
#--- 열 추가/수정/삭제
dataset.loc['price'](:,) = Series({'행1': '값1', '행2': '값2'}) #--- 열 추가
dataset[column_name_new](column_name_new.md) = np.nan #--- np.nan으로 초기화한 열 생성
dataset[column_name_new](column_name_new.md) = np.zeros(len(dataset)) #--- 0으로 초기화한 열 생성
dataset[column_name_new][idx:] = dataset[column_name][* idx](:-1)
df = df.drop('열', axis=1) #--- 열 삭제
#--- 행 계산
dataset['profit'] = dataset['price_sale'] - dataset['price_purchase']('price_purchase'.md)
dataset['close_ma{}'.format(5)] = dataset['close']('close'.md).rolling(5).mean() #--- 이동 평균 계산
dataset[column_name_new][idx:] = dataset[column_name][* idx](:-1)
dataset.loc[1:, column_name_new] = (dataset['open'][1:].values - dataset['close'][:-1].values) / dataset['close'][:-1](:-1.md).values
dataset[column_name_new] = (dataset['high'].values - dataset['close'].values) / dataset['close']('close'.md).values
Python과 Java 연동
JPype 설치
#!/usr/bin/env python
import jpype
import os.path
classpath = os.path.join(os.path.abspath('~'), 'bin')
jpype.startJVM(jpype.getDefaultJVMPath(), '-Djava.class.path=%s' % (classpath)
javaPackage = jpype.JPackage('~').~ #--- ~.~ package
javaClass = javaPackage.~
jc = javaClass()
jpype.shutdownJVM()
PSP 언어
Testcase
참고 문헌
사용자 가이드
외부 프로그램 실행
# -*- coding: utf-8 -*-
import os, re, sys, urllib
import subprocess
if __name__ == '__main__':
results = [](.md)
# p = subprocess.Popen('/bin/cat /nas/output/service001.out',stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)
p = subprocess.Popen('/bin/cat /nas/output/service001.out',stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=False)
strInp = ""
strOut = p.communicate(input + "\n")[0](0.md)
lines = strOut.split("\n")
for line in lines:
vals = line.split("\t")
# results.append({'line':line})
results.append({'acnt_no':vals[0], "cnt":vals[1](1.md)})
관리자 가이드
Database 연동
참고 문헌
http://byteofpython-korean.sourceforge.net/byte_of_python.html [[Category:오픈소스|Category:오픈소스]]
분류: [프로그램 언어](분류_프로그램 언어.md)