행위

"대문"의 두 판 사이의 차이

DB CAFE

(PYTHON 학습)
(파이썬)
472번째 줄: 472번째 줄:
 
== PYTHON 학습 ==
 
== PYTHON 학습 ==
 
{{:파이썬 입문}}
 
{{:파이썬 입문}}
 
+
{{:PYTHON 입문|PYTHON 자료형}}
# [[PYTHON_입문|PYTHON 자료형]]
 
 
----  
 
----  
 
=== PYTHON 예제 ===
 
=== PYTHON 예제 ===

2020년 11월 8일 (일) 23:45 판

thumb_up 추천메뉴 바로가기


디비 카페

DBCAFE (http:// [dbcafe.co.kr] :: sensing) visited

notifications_active 주제별 등록건수 / 총 1,011건

오라클: 513 건 / 파이썬: 73 건 / R : 14 건 / MySQL: 23 건 / 윈도우: 12 건 / Linux: 12 건 / 주식: 40 건 / 머신러닝: 3 건 / 자동화: 5 건 / WEB: 1 건 / 도서: 5 건


[편집]

1.1 SQL 명령어[편집]

  1. 오라클 DBA 명령어
    1. INSERT
    2. UPDATE
    3. MERGE
    4. DDL SQL
    5. 조인 LATERAL Inline Views (12C)
      1. CROSS APPLY Join
      2. OUTER APPLY Join
    6. 프로시져 기본
    7. 문자열 함수
    8. PL/SQL
      1. 연산자
      2. 타입
      3. 함수/프로시져(Stored logic)
        1. 함수
        2. 프로시져
        3. 익명 블럭
        4. 파라미터 전달
        5. 테이블 함수
      4. 흐름제어 관리
        1. Conditional Operators
        2. Example
        3. If/then/else
      5. Arrays

1.2 DBA 오브젝트 관리(테이블/컬럼/인덱스/뷰/....)[편집]

  1. 테이블/컬럼 CRUD
    1. 컬럼 추가/삭제/변경
    2. 테이블 CRUD
    3. 컬럼정보조회
    4. CLOB 처리
    5. 테이블 추출쿼리
    6. 오라클 DDL 생성 스트립트
    7. 테이블 생성일자 보기
    8. 테이블의 크기 및 블록 보기
    9. 파티셔닝테이블 CRUD
    10. 파티션 테이블의 파티션 범위 보기
    11. 제약조건(CONSTRAINT) 보기
    12. 특정 테이블의 스키마 구조 확인
  2. 인덱스
    1. 인덱스
    2. FK 인덱스
    3. 파티션 테이블 로컬인덱스 생성
    4. FK로 참조되는 테이블
    5. 인덱스 추출쿼리
    6. INDEX 보기
    7. 전체 INDEX 보기
    8. 특정 테이블의 인덱스 확인
    9. 인덱스에 대한 컬럼 조회
    10. PRIMARY KEY 재생성 방법
    11. PRIMARY KEY를 REFERENCE 하는 FOREIGN KEY 찾기
    12. 중복인덱스 체크
    13. 테이블의 PK를 구성하는 컬럼 조회
    14. Index가 없는 Table 조회
  3. 뷰(View)
  4. DBLINK
  5. 시퀀스(Sequence) 관리
    1. 시퀀스
  6. 트리거 CRUD
  7. 테이블 스페이스
    1. 테이블 스페이스 CRUD
    2. 테이블스페이스별 파일 목록 보기
    3. 테이블스페이스별 정보 보기
    4. 테이블스페이스별 사용하는 파일의 크기 합 보기
    5. 테이블스페이스별 디스크 사용량 보기
    6. 테이블스페이스의 테이블 명 보기
    7. 공간의 90% 이상을 사용하고 있는 Tablespace
    8. Object별 테이블스페이스 및 데이터파일
    9. Tablespace별 Table, Index 개수
    10. 위치별 space를 아는 방법
    11. 현재 Extension 횟수가 MaxExtents의 80% 이상인 경우
    12. 테이블의 익스텐트 정보 조회

1.2.1 함수/프로시져/트리거 오브젝트 추출 쿼리[편집]

  1. 함수 추출쿼리
  2. 프로시져 추출쿼리
  3. 트리거 추출쿼리

1.2.2 사용자 관리[편집]

  1. 사용자 생성/삭제 관리
  2. 사용자 롤 관리
  3. 사용자 권한 관리
  4. DBA 작업
  5. 사용자 패스워드 갱신
  6. 프로파일 관리

1.2.3 오라클 ASM 관리[편집]

  1. ASM 관리
    1. ASM Disk 그룹 조회
    2. ASM Disk 조회
    3. ASM File 조회
    4. Disk 그룹/패스 조회
    5. 테이블 스페이스생성
    6. 테이블 스페이스 정보 조회 SQL

1.2.4 오라클 RAC 관리[편집]

  1. RAC 관리
    1. RAC 시작/종료
    2. RAC 리스너 관리
    3. RAC 아카이브모드 변경 절차
    4. RAC Wait Event
    5. RAC 체크 스크립트

1.2.5 파라미터 관리[편집]

  1. 오라클 파라미터
    1. 오라클 히든 파라미터
  2. 오라클 Language 설정

1.2.6 저장공간/용량 관리[편집]

  1. 테이블스페이스
  2. UNDO_REDO
  3. 템프테이블
  4. LOGGING VS. NOLOOGING

1.2.7 DB 관리 SQL [편집]

  1. ROLLBACK SEGMENT의 사용상황 보기
  2. 테이블에 LOCK이 걸렸는지를 보기
  3. Lock을 잡고있는 세션과 기다리는 세션 조회
  4. 테이블에 걸린 비정상적 LOCK 풀기
  5. 작업 중인 데이터베이스 트랜잭션 조회
  6. 열려 있는 커서 조회
  7. 잠금 발생 유형 조회
  8. 잠금 상태 오브젝트 조회
  9. 잠금 SQL 구문 조회
  10. 해당 테이블의 세션을 제거하는 쿼리
  11. Blocking Lock Session 확인
  12. 사용자별 오브젝트 수
  13. 연결되어 있는 OS 사용자 및 프로그램 조회
  14. 1시간 이상 유휴 상태인 세션
  15. Active Session 중 Idle Time이 긴 작업
  16. DBUser 별로 Session 정보를 조회
  17. Session별 사용 명령어
  18. 사용자 session 중에서 2시간 이상 idle 상태가 지속되는 session을 kill
  19. Oracle Process의 정보
  20. 오브젝트에 접속되어 있는 프로그램 조회
  21. 롤백 세그먼트 경합 조회
  22. CPU를 많이 사용하는 세션의 식별
  23. Disk Read 가 많은 SQL문 찾기
  24. Rollback Segment를 사용하고 있는 SQL문 조회
  25. 오래도록 수행되는 Full Table Scan를 모니터링
  26. System 테이블스페이스에 비시스템 세그먼트 조회
  27. 인덱스의 Delete Space 조회
  28. 딕셔너리/뷰 정보 조회
  29. 패키지 검색 1 - 특정 오라클 사용자 중에서 패키지 소스와 일치하는 텍스트를 조회
  30. 특정 사용자의 패키지 내에서 주석처리가 되지 않은 항목을 조회
  31. 다중 UPDATE 쿼리
  32. CPU를 많이 사용하는 세션의 식별(SQL TEXT 조회)
  33. 현재 세션에서 10초이상 걸리는 쿼리 조회 (SELECT절)
  34. 현재 세션에서 PGA, UGA, CPU 사용량 세션별로 조회하는 쿼리
  35. 상호 DB간에 컬럼 이름 비교
  36. DB Link 보기
  37. View의 정의 내역 보기
  38. 동일한 자료 삭제

1.3 DB 모니터링 조회[편집]

  1. 모니터링
    1. 세션/접속사용자 정보
      1. 오래 걸리는 세션 정보
      2. 현재 작업중인 세션 정보
    2. 프로세스 정보
      1. 부하 발생 모니터링
    3. DB 용량 관리
    4. 오라클 서버 스펙
    5. 테이블 스페이스
    6. DB Time 분석하기
    7. SQL 통계 정보확인하기
    8. SQL_ID를 이용하여 SQL문의 PLAN 추출하기
    9. INDEX 정보 추출하기
    10. ASH를 이용한 모니터링
    11. AWR을 이용한 모니터링

  1. 사용자 작업 정보 추적
    1. 오브젝트 DDL 트리거
    2. 오브젝트 CRUD 추적(로그마이너)

  1. 락 조회
    1. LOCK 걸린 개체 확인 및 LOCK 해제
    2. 락 발생 사용자 및 OBJECT 조회 + 어떤 sql 를 실행중하여 lock 을 걸고 있는지 확인
    3. 락 트리 형태 로 보기
    4. 테이블 별 LOCK 확인
    5. Lock을 잡고있는 세션과 기다리는 세션 조회
    6. 작업 중인 데이터베이스 트랜잭션 조회
    7. 열려 있는 커서 조회
    8. 잠금 발생 유형 조회
    9. 잠금 상태 오브젝트 조회
    10. 잠금 SQL 구문 조회
    11. 해당 테이블의 세션을 제거하는 쿼리 KILL / DISCONNECT
    12. Blocking Lock Session 확인

2.1 DBA[편집]

  1. DB구축
    1. SGA/PGA 설정
    2. 히든 파라미터
    3. 파라메터 설정
      1. 오라클 11g 파라미터(aws)
      2. 오라클 12c 파라미터(aws)
      3. 오라클 초기화 파라미터
      4. 오라클 12C 파라미터(권고)
    4. DISK 용량 산정
  2. 오브젝트(테이블,인덱스,시노님,뷰..) 생성/관리
    1. 오라클 DDL 생성/감시
    2. 테이블 관리
      1. 테이블 변경 신청서 양식
    3. 인덱스 관리
      1. 인덱스 신청서 양식
    4. 시노님 관리
      1. 시노님 신청서 양식
    5. 권한 관리
      1. 권한 신청서 양식
    6. 시퀀스 관리
    7. 프로시져/함수 관리
    8. 개인정보 암호화
  3. 모니터링(락,세션,부하)
    1. ORACLE 락 확인/처리
    2. ORACLE 모니터링
  4. 스케줄 관리
    1. 오라클 스케줄러
  5. 데이터 이관
    1. 오라클 데이터펌프(impdp/expdp) 작업절차
    2. Oracle 데이터펌프
  6. 백업/복구
    1. 오라클 rman 복구
    2. 오라클 rman 복구 시나리오
    3. 오라클 데이터 복구
    4. 오라클 복구 RMAN 무정지 복구
  7. 산출물 작성
    1. 데이터베이스 설계서
    2. 데이터베이스 사용 설명서
    3. 테이블 변경 신청서

2.2 DB 모델링/DA[편집]

  1. 표준 작성
  2. ERD 사용법
    1. ERWIN 사용팁
      1. Erwin 컬럼순서 논리/물리 일치 방법
      2. Erwin SQL 생성스크립트
      3. Erwin 테이블 Forward 설정
      4. AM PRO 사용법

2.3 표준화/META[편집]

2.3.1 메타웍스(MetaWork) 엔터티[편집]


2.4 DB 튜닝[편집]

  1. 서버 튜닝 대상
    1. SGA/PGA 튜닝
    2. 파라미터 튜닝
      1. 파라미터 란?
    3. 오라클 바인드피크
    4. 오라클 12C 파라미터(권고)
    5. 주요파라미터 확인
    6. 오라클 12c 히든 파라미터
    7. 로그버퍼 튜닝
    8. Library cache 튜닝
    9. Lock 튜닝
    10. 네트워크 성능 튜닝
    11. 테이블 하이워터마크 조회/조치
    12. Shrink 세그먼트
  2. SQL 튜닝 대상
    1. 오라클 힌트 전체
    2. 조인
      1. NL 조인
      2. HASH 조인
    3. ORACLE_모니터링#하드파싱(leteral,리터럴) 찾기
    4. CPU를 과다사용 세션 조회
    5. 대량 Disk Read SQL 조회
    6. 오래수행되는 FULL SCAN TABLE
    7. CPU 과다사용 SQL 조회
    8. 현재 세션에서 10초이상 SQL
    9. 현재세션에서 PGA,UGA,CPU사용조회
    10. 병렬처리,5초이상 IO발생쿼리 모니터링
    11. ORACLE_모니터링#총 CPU Time 대비 SQL Parsing Time
    12. ORACLE_모니터링#롤백 세그먼트 경합 조회
    13. ORACLE_모니터링#Buffer Cache Hit Ratio
    14. ORACLE_모니터링#Library Cache Hit Ratio
    15. ORACLE_모니터링#Data Dictionary Cache Hit Ratio
    16. Log file sync 대기 조회
    17. 다이니믹 SQL 바인드 변수 처리
  3. SQL PLAN 사용법
    1. XPLAN
      1. XPLAN#DBMS_XPLAN.DISPLAY_CURSOR
      2. 플랜조회시 유저변경 SQL
    2. 오라클 SQL 수집 프로그램
    3. 오라클 플랜수집 / 성능 진단 프로그램
    4. v$sql_plan이용 플랜 보기
    5. 튜닝대상 테이블 실제 건수 조회
  4. AWR 이용 튜닝
    1. ORACLE_모니터링#AWR을 이용한 literal SQL 추출 방법
    2. ORACLE_모니터링#AWR SQL ordered BY Elapsed Time
    3. ORACLE_모니터링#AWR SQL ordered BY CPU Time
    4. ORACLE_모니터링#AWR SQL ordered BY USER I/O Wait Time
    5. ORACLE_모니터링#AWR SQL ordered BY Gets
    6. ORACLE_모니터링#AWR SQL ordered BY READS
    7. ORACLE_모니터링#AWR SQL ordered BY Sharable Memory
    8. ORACLE_모니터링#AWR SQL ordered BY VERSION COUNT
  5. ASH 이용 튜닝
    1. ORACLE_모니터링#ASH를 이용한 모니터링
    2. ORACLE_모니터링#특정 Session이 가장 많이 수행 된 SQL과 수행 점유율(수행 횟수)
    3. ORACLE_모니터링#특정 구간 이벤트 별 대기 시간
    4. ORACLE_모니터링#특정 구간 CPU 점유율 순 - TOP SQL
    5. ORACLE_모니터링#특정 구간 CPU 점유율 순 - TOP SESSION
    6. 특정시간대 수행이력
    7. 튜닝 관련 뷰
  6. 오라클 통계정보
  7. 오라클 히스토그램
  8. ORACLE 튜닝#엑세스 VS FILTER 비교
  9. ORACLE_모니터링#중복 인덱스 찾기
  10. 튜닝 사례

2.5 DB 진단[편집]

  1. 파라미터 진단
  2. 디스크 진단
  3. 네트워크 진단
  4. SQL 진단
  5. WAIT EVENT 진단
  6. ALERT LOG 진단

2.6 데이터 전환 이행[편집]

  1. 전환 전략 수립 #
  2. 데이터 이행 DDL 작업절차
  3. 데이터 전환 시나리오

2.7 데이터 품질(DQ) 진단[편집]

  1. 컬럼속성 불일치 분석현황
  2. 행정표준용어사용현황
  3. 행정표준코드사용
  4. 표준도메인준수
  5. 표준용어준수
  6. 미사용테이블현황
  7. 미사용컬럼현황
  8. 중복테이블현황
  9. 기본키미정의테이블현황
  10. 값진단_코드도메인
  11. DQ_도메인별_리포트_출력
  12. PDQ_05_C_진단대상_테이블컬럼정보
  13. P_DIAG_COLUMN_CODE
  14. P_DIAG_COLUMN_DTM
  15. P_DIAG_COLUMN_EAN
  16. P_DIAG_COLUMN_MONEY
  17. P_DIAG_COLUMN_NAME
  18. P_DIAG_COLUMN_NNULL
  19. P_DIAG_COLUMN_NUMBER
  20. P_DIAG_COLUMN_PATTERN
  21. P_DIAG_COLUMN_RATIO
  22. P_DIAG_COLUMN_YN
  23. P_DIAG_COLUMN_YYYYMM
  24. P_DIAG_COLUMN_YYYYMMDD
  25. P_DIAG_PROC_LOG
  26. P_TABLE_ROWS
  27. P_UNUSED_COLUMNS_CALL_NEW
  28. P_UNUSED_COLUMNS_NEW
  29. WAA_COL_TOT
  30. WDQ_HAN_CHK
  31. 표준코드_사전
  32. 한글값진단

2.8 데이터 웨어하우스/DW[편집]

4.1 PYTHON 학습[편집]

4.2 파이썬 기본기 다지기[편집]

4.3 참고 url[편집]

파이썬 언어 기본 for Finance https://www.notion.so/for-Finance-355667aea8f34c169cd7c0f705aaa875

[PY4E] 모두를 위한 프로그래밍 : 파이썬 https://www.notion.so/PY4E-7573a4454709441fa035d5237163aff0

4.4 데이터 타입 확인[편집]

# int 
>>> a = 3
>>> type(a)
int
  1. float
  2. str
  3. bool
  4. complex
>>> c = 3 + 4j
>>> type(c)
complex

4.5 데이터 구조체[편집]

4.5.1 리스트 (LIST)[편집]

[ ] 으로 표현


  1. 파이썬에는 배열은 없으며 대신에 index를 부여할 수 있는 시퀀스 타입을 제공.
  2. 파이썬에서 시퀀스 타입의 특징은 저장하고 있는 데이터가 순서를 가진다는 점이며, 그 중 하나가 list 타입.
  3. 배열과 거의 흡사하다고 볼수 있다.
  4. list에 담을 수 있는 타입에는 제한이 없음
    1. 정수, 문자열 등의 타입뿐만 아니라 모든 타입의 객체 및 다른 list 객체
      my_list = [1, 'hello', 3.7, [7, 8, 9], {"a": 2, "b": 3}]

4.5.1.1 생성[편집]

>>> names = [ ]
>>> names = ['a', 'b', 'c', 'd’, 'e']

또는

>>> names  = list()
>>> names.append('a')
>>> names.append('b')

4.5.1.2 인덱싱 (indexing)[편집]

>>> names = ['a', 'b', 'c', 'd’, 'e']
>>> names[0]
'a'
>>> names[1]
'b'

4.5.1.3 append (리스트 뒤에 추가)[편집]

>>> names = ['a', 'b','c']
>>> names.append('d')
>>> names
['a', 'b', 'c', 'd']

>>> my_list = [1, 3, 5]
>>> my_list.append(100)
>>> my_list
[1, 3, 5, 100]
>>> my_list.append([200, 300])
>>> my_list
[1, 3, 5, 100, [200, 300]]

4.5.1.4 insert (특정위치에 추가)[편집]

>>> names = ['a', 'b', 'c']
>>> names.insert(1, 'e')
>>> names
['a', 'e', 'b', 'c']

4.5.1.5 확장 (extend)[편집]

  1. list 객체에 새로운 list를 더하여 확장.
  2. extend(x) 에서 x에는 iterable을 구현한 객체만 사용 가능한데, 시퀀스 타입의 자료형들은 모두 iterable을 구현했으므로 사용 가능.
  3. append(x) 와의 차이점은 append()는 하나의 요소로서 추가되지만 extend()는 확장 개념으로 추가된다는 점.
  • 똑같은 list를 추가해보면 바로 차이점을 알 수 있음.
>>> my_list = [1, 3, 5]
>>> my_list.extend([100, 200, 300])
>>> my_list
[1, 3, 5, 100, 200, 300]

4.5.1.6 요소 제거 (remove)[편집]

>>> my_list = [1, 3, 1, 3]
>>> my_list.remove(1)
>>> my_list
[3, 1, 3]
>>> my_list.remove(3)
>>> my_list
[1, 3]

또는 DEL 키워드 사용

>>> my_list = [1, 3, 1, 3]
>>> del my_list[1]
>>> my_list
[1, 1, 3]

4.5.1.7 list 값 꺼내기 (pop)[편집]

  1. list의 요소 중 끝의 요소를 꺼내어 반환.
  2. 복사가 아닌 꺼내는 것이기 때문에 꺼낸 요소는 list 객체에서 사라짐.
>>> my_list = [1, 3, 1, 3]
>>> my_list.pop()
3
>>> my_list
[1, 3, 1]
  • pop(index) 로 사용하면 index 위치의 요소 값을 꺼냅니다.
>>> my_list = [1, 3, 1, 3]
>>> my_list.pop(1)
3
>>> my_list
[1, 1, 3]

4.5.1.8 list 정렬 (sort)[편집]

list의 요소 값들을 오름차순으로 정렬.

>>> my_list = [1, 3, 1, 3]
>>> my_list.sort()
>>> my_list
[1, 1, 3, 3]

내림차순으로 정렬하는 경우는 reverse 값을 True.

>>> my_list = [1, 3, 1, 3]
>>> my_list.sort(reverse=True)
>>> my_list
[3, 3, 1, 1]

4.5.1.9 list 거꾸로 뒤집기 (reverse)[편집]

list의 요소를 거꾸로.

>>> my_list = [1, 2, 3, 4]
>>> my_list.reverse()
>>> my_list
[4, 3, 2, 1]

4.5.1.10 len(s)[편집]

>>> names = ['a', 'b', 'c', 'd, 'e']
>>> len(names)
5

4.5.1.11 COUNT list 특정 값 개수 카운트[편집]

>>> my_list = [1, 2, 3, 4, 1, 2, 3, 4]
>>> my_list.count(1)
2

4.5.1.12 comprehension[편집]

  • 컴프리핸션: 리스트를 한줄의 코드로 쉽게 만들때 사용
>>> data = [3, 4, 5]
>>> float_data = [float(d) for d in data]

4.5.1.13 문자열을 리스트로 형변환[편집]

>>> my_str = 'python'
>>> my_list = list(my_str)
>>> my_list
['p', 'y', 't', 'h', 'o', 'n']

4.5.1.14 다차원 리스트[편집]

  1. 파이썬에서는 모든 것들이 객체이기 때문에 변수에 무엇을 집어넣든지 실제 그 객체가 들어가는 것이 아닌 객체를 가리키는 객체의 참조 주소값이 변수에 할당됩니다.
  2. list의 요소들도 사실은 실제 값이 아닌 요소에 할당된 객체의 주소를 가리키고 있습니다.
  3. 다차원 list를 만들게 되면 또 다른 list가 생성되고 그 list의 주소값을 요소로 가지고 있는 것입니다.
  • 실제로는 나머지 요소들도 실제 정수 값이 아닌 정수 객체를 가리키는 주소값이 들어가 있습니다.
>>> my_list = [1, 3, 5, [11, 13, 15]]
>>> my_list
[1, 3, 5, [11, 13, 15]]
>>> my_list[3]
[11, 13, 15]

4.5.1.15 리스트 요소에 index 범위로 접근[편집]

  1. 파이썬에서 list같은 시퀀스 타입 자료구조의 장점은 다양한 방법으로 요소들을 접근할 수 있다는 점.
  2. 데이터를 다루는데, 매우 유연하게 코드를 작성할 수 있으며, 머릿속에 생각한대로 직관적으로 데이터를 다룰 수 있음.
>>> my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] 
>>> my_list[9:]  # [9]부터 이후의 모든 요소
[10, 11, 12] 
>>> my_list[:4]   # [4] 이전의 모든 요소
[1, 2, 3, 4] 
>>> my_list[::3]  # 요소를 3씩 건너 뛰며 접근
[1, 4, 7, 10] 
>>> my_list[1:5]  # [1] 부터 [5] 이전까지
[2, 3, 4, 5] 
>>> my_list[3::2]  # [3] 부터 2씩 건너 뛰며 접근
[4, 6, 8, 10, 12]

4.5.1.16 list객체 + 연산[편집]

>>> my_list = [1, 3, 5, 7, 9]
>>> my_list = my_list + my_list
>>> my_list
[1, 3, 5, 7, 9, 1, 3, 5, 7, 9]

4.5.1.17 list객체 * 연산[편집]

>>> my_list = [1, 3, 5, 7, 9]
>>> my_list * 3
[1, 3, 5, 7, 9, 1, 3, 5, 7, 9, 1, 3, 5, 7, 9]

4.5.1.18 list 요소 값 부분 수정[편집]

>>> my_list = [1, 3, 5, 7, 9]
>>> my_list[3] = 10
>>> my_list
[1, 3, 5, 10, 9]

4.5.1.19 list 요소 인덱스 범위 연산으로 수정[편집]

  1. 리스트[시작:끝] 범위연산을 같이 사용하면 한꺼번에 값을 수정할 수 있음.
  2. 주의할점은 my_list[3] = [1,2] 와 같은 식으로 수정하려 하면 범위 수정이 아닌 [3] 요소에 [1,2] list가 들어가서 [1, 3, 5, [1, 2], 9] 과 같이 2차원 list가 되어버린다는 점.
  3. [0:3]은 [0], [1], [2] 를 의미하므로 해당 범위를 수정하기 위해 삭제

4.5.2 튜플[편집]

( ) 으로 표현


4.5.2.1 생성[편집]

>>> names = ('a', 'b', 'c', 'd, 'e')

4.5.2.2 len(s)[편집]

>>> names = ('a', 'b', 'c', 'd, 'e')
>>> len(names)
5

4.5.2.3 indexing[편집]

>>> names = ('a', 'b', 'c', 'd, 'e')
>>> names[0]
'a'
>>> names[1]
'b'

4.5.3 딕셔너리[편집]

{ } 으로 표현


4.5.3.1 생성[편집]

>>> cur_price = { }

4.5.3.2 insert[편집]

>>> cur_price['samsung'] = 10000
>>> cur_price
{'samsung': 10000}

4.5.3.3 indexing[편집]

>>> cur_price['samsung']
>>> 10000

4.5.3.4 delete[편집]

>>> del cur_price['samsung']
>>> cur_price{}

4.5.3.5 key, value[편집]

>>> cur_price.keys()
dict_keys(['samsung'])
>>> cur_price.values()
dict_values([10000])

4.6 기본 함수[편집]

4.6.1 print[편집]

4.6.2 다중 변수 print[편집]

print("City", city, 'is in the country', country)

4.6.2.1 값을 매개 변수로 전달[편집]

print("City {} is in the country {}".format(city, country))

4.6.2.2 문자열 형식 사용[편집]

순차적 옵션

print("City {} is in the country {}".format(city, country))

숫자 서식

print("City {1} is in the country {0}, yes, in {0}".format(country, city))

명시 적 이름으로 형식화

print("City {city} is in the country {country}".format(country=country, city=city))

4.6.2.3 튜플로 인수를 전달[편집]

print("City %s is in the country %s" %(city, country))

4.6.2.4 Only from Python 3.6[편집]

print(f"City {city} is in the country {country}".format(country=country, city=city))

4.7 문자열 조작 함수[편집]

4.7.1 len(s)[편집]

>>> mystring = "hello world"
>>> len(mystring)
11
Python-slicing.jpg

4.7.2 indexing[편집]

>>> mystring[0]
'h'

4.7.3 slicing[편집]

>>> mystring[0:5]
'hello'

>>> mystring[6:]
'world'

4.7.4 문자열.split(S)[편집]

>>> companies = "yahoo google"

>>> companies.split(' ')
['yahoo', 'google']

4.7.5 in[편집]

>>> 'google' in companies
True

4.7.6 combining[편집]

>>> s1 = "hello"
>>> s2 = "world"
>>> s3 = s1 + ' ' + s2
>>> s3
"hello world"

4.7.7 replace[편집]

>>> a = "yahoo;google"
>>> new_a = a.replace(';', '-')
>>> new_a
"yahoo-google"

4.7.8 index[편집]

>>> s = "yahoo google"
>>> s.index("google")
6

4.7.9 문자열.find(x)[편집]

>>> s = "yahoo google"

>>> s.find("google")
6

4.7.10 stripping[편집]

>>> a = "  yahoo  "
>>> new_a = a.strip()
>>> new_a
"yahoo"

4.7.11 데이터 형변환[편집]

다음과 같이 데이터를 다른 자료형으로 Casting 할 수 있다.

>>> float(3)    #실수형으로 바꿈
3.0
>>> int(3.0)    #정수형으로 바꿈
3
>>> int('0xc', 16)
>>> int('0o14', 8)
두 번째 인자에 입력 값의 진수를 명시하면 된다. 다른 벡터 형으로 변환할 수도 있다.

>>> str(3)  #문자열로 바꿈
'3'
>>> hex(12) #16진수로 바꿈
'0xa'
>>> oct(10) #8진수로 바꿈
'0o12'
>>> bin(10) #2진수로 바꿈
'0b1010'
다시 10진수로 바꿀 때는 자동으로 바뀐다.

>>> tuple([1,2])    #리스트를 튜플로 바꿈
(1, 2)
>>> list((1,2)) #튜플을 리스트로 바꿈
[1, 2]
>>> set([1,2])  #리스트를 집합 데이터형으로 바꿈
{1, 2}

4.8 딕셔너리로 캐스팅[편집]

  1. 딕셔너리로 캐스팅 하는 것은 조금 까다로운데 key 값을 어떻게 설정할 것인가를 정해야 하기 때문.
  2. key와 value가 한 쌍으로 된 경우 딕셔너리로 캐스팅 할 수 있다.
>>> dict([[1,2],[3,4]])#쌍으로 된 경우만 딕셔너리형으로 변환된다.
{1: 2, 3: 4}

4.8.1 유니코드로 변환[편집]

>>> ord(‘가’)    #문자를 유니코드 값으로 변환
44032   #44032는 ‘가’의 유니코드 값
>>> chr(44032). #chr()함수는 유니코드 값을 문자로 변환한다.
‘가’

4.9 파이썬 제어문[편집]

4.9.1 조건별 분기[편집]

if ending_price > 10000:
    print("sell")
elif ending_price < 8000:
    print("buy")
else:
    print("hold")

4.9.2 반복 처리[편집]

  • Loop – For
>>> for i in range(0, 5):
        print(i)

0
1
2
3
4
>>> for i in range(0, 5):
        if i % 2 == 0:
            print(i, end=' ')
0, 2, 4
>>> buy_list = ['000660', '039490']
>>> for code in buy_list:
        print("buy", code)

buy 000660
buy 039490
>>> hold_list = {'naver': 10, 'samsung': 20}
>>> for company, num in hold_list.items():
        print(company, num)

naver 10
samsung 20

4.9.3 Loop - While[편집]

>>> i = 0
>>> while i < 5:
        print(i)
        i += 1

0
1
2
3
4
>>> i = 0
>>> while i < 5:
        if i % 2 == 0:
print(i)
        i += 1

0 2 4

4.10 파이썬 모듈 임포트 방법[편집]

  • 일반적인 import 방식
import os
  • 필요 함수만 import 하는 방식
from os import xxx
  • 모든 함수를 import 하는 방식
from os import *

4.11 변수[편집]

Python-var.jpg
>>> a = 10
>>> id(a)

4.12 함수 선언[편집]

>>> def cal_upper_price(price):
        increment = price * 0.3
        upper_price = price + increment
        return upper_price

>>> upper_price = cal_upper_price(10000)
>>> upper_price
13000

4.13 모듈[편집]

# stock.py
def cal_upper_price(price):
    increment = price * 0.3
    upper_price = price + increment
    return upper_price
  • stock.py 모듈 import
# test.py
import stock
upper_price = stock.cal_upper_price(10000)
  • stock.py 모듈 import
# test.py
from stock import *
upper_price = upper_price(10000)

4.14 클래스[편집]

  • 클래스 정의(Class Definitions)
    • Class: 인스턴스의 청사진 , a blueprint for an instance ("instance factories")
    • Instance: 클래스의 생성된 객체 , a constructed object of the class
    • Type: 인스턴스가 속한 (타입별)클래스를 가르킴 , indicates the class the instances belong to
    • Attribute: 모든 객체 값 ,any object value: object.attribute
    • Method: 클래스에 선언된 호출 가능한 속성 , a "callable attribute" defined in the class

4.14.1 인스턴스 메소드[편집]

class Joe:
    def callme(self):
        print("calling 'callme' method with instance")

thisjoe = Joe() #인스턴스 할당
thisjoe.callme() #메소스 호출

4.14.2 클래스 정의[편집]

class BusinessCard:
    def __init__(self, name, email):
        self.name = name
        self.email = email

    def print_info(self):
        print(self.name)
        print(self.email)
# instantiation and call the method
mem1 = BusinessCard("Goo", "goo@gmail.com")
mem1.print_info()

4.14.3 클래스 상속[편집]

  • Class – Inheritance
>>> class Parent:
        def can_sing(self):
            print("sing a song")

>>> father = Parent()
>>> father.can_sing()
sing a song


>>> class LuckyChild(Parent):
        pass

>>> child1 = LuckyChild()
>>> child1.can_sing()
sing a song

>>> class LuckyChild2(Parent):
       def can_dance(self):
          print("dance beautifully")

>>> child2 = LuckyChild2()
>>> child2.can_sing()
sing a song
>>> child2.can_dance()
dance beautifully

4.14.4 클래스 상속2[편집]

  • Class – Inheritance II
>>> class Parent:
        def __init__(self):
            self.money = 10000
        
>>> class Child1(Parent):
        def __init__(self):
            super().__init__()        

>>> class Child2(Parent):
        def __init__(self):
            pass
    
>>> child1 = Child1() #Parent의 __init__ 를 할당 받은경우 
>>> child2 = Child2() #받지 않은 경우 
>>> print(child1.money)
10000
>>> print(child2.money)
AttributeError: 'Child2' object has no attribute 'money'

4.15 문자열[편집]

  1. 문자열 치환
    1. 문자열 치환시는 replace 함수 사용
콤마(,) 를 파이프(|)로 치환하는 예제
text = 'aaa,bbb,ccc,ddd'
result = text.replace(",","|")
    1. 2번째 , 까지만 치환할 경우, 파라미터에 2 추가
text = 'aaa,bbb,ccc,ddd'
result = text.replace(",","|", 2)


4.16 리스트[편집]

android [ , , ]로 선언됨

  • 리스트 = [값, 값, 값]


person = ['james', 17, 175.3, True]
  1. range를 사용하여 리스트 만들기
  • 리스트 = list(range(횟수))
a = list(range(10))
  1. apend() 로 추가 하기
a.append([500,600])
  1. extend() 로 확장 하기
a.extend([500,600])
  1. insert() 로 값 중간에 끼워넣기
a.insert(2, 500)
  1. pop() 으로 마지막 항목 삭제
a.pop()
a.pop(1)  1번인덱스 항목 삭제
  1. del 로 삭제
del a[1]
  1. remove()로 값을 찾아서 삭제
a.remove(20)
  1. reverse()로 순서 뒤집기
a.reverse()
  1. sort()로 정렬하기
a.sort(생략,reverse=False)  : 오름차순
a.sort(reverse=True)        : 내림차순
  1. sorted()로 정렬된 신규 리스트 생성
a.sorted(b)
  1. clear()로 리스트 모든항목 삭제
a.clear()
del a[:]로도 가능

4.16.1 리스트 in 딕셔너리[편집]

4.16.2 리스트내 딕셔너리 정렬[편집]

people = [
    {'name': 'kim', 'age': 10},
    {'name': 'lee', 'age': 20},
    {'name': 'park', 'age': 30},
    {'name': 'choi', 'age': 40},
    {'name': 'kim', 'age': 50},
]

4.16.2.1 [방법1] sorted()+ lambda[편집]

- sorted()와 lambda를 사용하여 name으로 오름차순 정렬 후 age로 오름차순 정렬

data = sorted(people, key=lambda person: (person['name'], person['age']))

for d in data:
    print(d)
# {'name': 'choi', 'age': 40}
# {'name': 'kim', 'age': 10}
# {'name': 'kim', 'age': 50}
# {'name': 'lee', 'age': 20}
# {'name': 'park', 'age': 30}

4.16.2.2 [방법2] sorted() + itemgetter (추천)[편집]

- sorted()와 itemgetter를 사용하여 name으로 오름차순 정렬 후 age로 오름차순 정렬

from operator import itemgetter

data = sorted(people, key=itemgetter('name', 'age'))

for d in data:
    print(d)
# {'name': 'choi', 'age': 40}
# {'name': 'kim', 'age': 10}
# {'name': 'kim', 'age': 50}
# {'name': 'lee', 'age': 20}
# {'name': 'park', 'age': 30}

4.17 튜플[편집]

android ( , , , ) 로 선언

  • 리스트처럼 요소를 일렬로 저장하지만, 안에 저장된 요소를 변경, 추가, 삭제를 할 수 없습니다. 읽기전용 리스트
  • 튜플 = (값, 값, 값)
  • 튜플 = 값, 값, 값


a = (38, 21, 53, 62, 19)

4.18 딕셔너리[편집]

  • 딕셔너리 = {'키':'값','키':값}

android { } 로 선언

  • 딕셔너리 = {'키':'값','키':값}


person = {'name': 'smith', 'age': 23}
person = dict( name='smith', age=23 )

5.1 텐서플로우[편집]

5.3 R[편집]

  1. 기본 명령어
  2. DB연결
    1. MYSQL 연결
  3. 챠트
    1. ggplot2



이용자 수 : 16