Python Data

솜몀·2023년 8월 30일
0

Keyboard

목록 보기
2/3
post-thumbnail

Python Data


0. Jupyter

0.1. Cell

주피터 노트북(Jupyter notebook)은 셀(cell) 단위로 구성됩니다.
일반적 파이썬 프로그래밍 툴의 경우, 전체 코드를 한 번에 실행해야 하지만
주피터 노트북에서는 코드를 몇 줄 단위로 끊어서 실행할 수 있습니다.

0.1.1. 셀 단축키

  1. 실행
    1.1. Ctrl + Enter : 실행후 커서 유지
    1.2. Shift + Enter : 실행후 커서 다음셀로 이동

  2. 셀 추가/삭제/복구
    2.1. a : 위에 셀 추가 (above)
    2.2. b : 아래에 셀 추가 (below)
    2.3. dd : 셀 삭제 (delete)
    2.4. z : 삭제 셀 복원

  3. 기타 단축키
    3.1. m : Markdown 셀로 변환
    3.2. y : Code 셀로 변환
    3.3. Shift + m : 셀 병합 (merge)
    3.5. Ctrl + s : 저장
    3.6. Enter : 셀 편집 모드
    3.7. ESC : 명령 모드
    3.8. h : 단축키 리스트 보기

0.1.2. 초기화

  • 변수 초기화 : Kernel 탭의 Restart
  • 출력 결과 초기화 : Kernel 탭의 Restart & Clear Output
  • 초기화 후 재실행 : Kernel 탭의 Restart & Run All
  • 현재 셀 위까지 실행 : Cell 탭의 Run All Above

0.2. Markdown

일반 텍스트로 서식이 있는 문서를 작성할 수 있는 마크업 언어

0.2.1. 마크다운 문법

  • 줄바꿈 : Space x 2
  • 제목 크기 : #, ##, ###, ... (1, 2, 3, ... 숫자키로 변환가능)
  • 인용 : > , >>, >>>
  • 굵게 : **BOLD**
  • 이탤릭체 : *itelic*
  • 인덱스 : -1. 그리고 들여쓰기
  • 코드 박스 : ` code ` ('~'key)
  • 수평선 : ---
  • 공백 :  (1),  (2),  (4)

1. Python

1.1. 커널 (Kernel)

커널(Kernel) 은 주피터 노트북에서 프로그램이 실행되는 환경을 의미합니다.
커널에는 이전 셀의 실행 결과가 모두 기억됩니다.

1.2. 자동 완성 / 도움말

Tab : 자동완성
Shift + Tab : (괄호 ^ 내부) 에서 눌러, 함수의 도움말 확인 가능

import os
os.getcwd()
'C:\\Users\\Learning\\python\\py_citizen\\Py_Data'

Shift + Tab @os.getcwd(^)

  1. Signature: os.getcwd()
  2. Docstring: Return a unicode string representing the current working directory.
  3. Type: builtin_function_or_method
  1. Signature:
    함수의 이름과 매개변수 정보를 나타냅니다. 여기서는 os.getcwd() 함수의 시그니처가 나와있는데, 이 함수는 매개변수 없이 호출됩니다.

  2. Docstring:
    함수에 대한 설명문이며, 함수의 기능과 사용법 등을 간략하게 서술합니다. 여기서는 getcwd() 함수의 도큐먼트 문자열이 제공되며, 현재 작업 디렉토리를 나타내는 유니코드 문자열을 반환한다는 정보가 들어있습니다.

  3. Type:
    이 부분은 해당 항목의 타입을 나타냅니다. 여기서는 내장 함수나 메서드임을 나타내는 builtin_function_or_method 타입이 나와있습니다.

따라서 이 정보를 종합해보면, os.getcwd() 함수는 현재 작업 디렉토리를 나타내는 유니코드 문자열을 반환하는 내장 함수라는 것을 알 수 있습니다.

1.3. 주석

1.3.1. 주석 #

# 주석

1.3.2. 여러줄 주석 Ctrl + /

# Ctrl + /
# 여
# 러
# 줄
# 주
# 석

1.4. 출력

1.4.1. print( )

print("Hello Py World!")
Hello Py World!

1.4.2. print( ,end/sep)

print('삼성전자', end=' : ')
print('DS', 'DX', sep='와 ')
삼성전자 : DS와 DX

default :

sep = ' '
end = '\n'

1.4.3. string format { }

x = 3
y = 7

print('x는 {}이고, y는 {}이다'.format(x, y))
print('이름은 {name}이고, 나이는 {age}입니다'.format(name = 'Justin', age = 20))
x는 3이고, y는 7이다
이름은 Justin이고, 나이는 20입니다

1.4.4. f-format f{ }

print(f'x는 {x}이고, y는 {y}이다')
x는 3이고, y는 7이다

1.5. 문자 / 문자열형

문자형/문자열 상관없이 : '작은 따옴표', "큰 따옴표" 로 묶는다.

aChr ="A"
pyStr = 'Life is too short, You need Python.'

print(aChr)
print(f"Python 명언 : {pyStr}")
A
Python 명언 : Life is too short, You need Python.

1.6. 흐름 제어문

if
for
while

1.6.1. if

if 조건식 :
하위코드
elif 조건식 :
하위코드
else :
하위코드

score = 130 #결측값

if score > 100:
    print("결측값 입니다.")
elif score >= 90:
    print("A")
elif score >= 80:
    print("B")
else:
    print("C")
결측값 입니다.

1.6.2. for

for 변수 in 리스트 :
하위코드

for x in [3,5,6,7]:
    print(x, end=", ")
3, 5, 6, 7, 
# 범위 순회
count = 0
for i in range(10):
    count += 1
    
print(f"count = {count}")
print(f"i = {i}")
print()

# 인덱스 와 값 순회 enumerate(LIST)
fruits = ["apple", "banana", "cherry"]
for i, fr in enumerate(fruits):
    print(f"Index {i}: {fr}")
print()

# 딕셔너리 순회 Dic.items()
person = {"name": "John", "age": 30, "city": "New York"}
for k, v in person.items():
    print(f"{k}: {v}")
print()
    
# 중첩 리스트 순회
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
for row in matrix:
    for element in row:
        print(element, end ='/')
print('\n')

# 문자열 순회
myStr = "Hello, Python!"
for myChar in myStr:
    print(myChar, end = '/')
count = 10
i = 9

Index 0: apple
Index 1: banana
Index 2: cherry

name: John
age: 30
city: New York

1/2/3/4/5/6/7/8/9/

H/e/l/l/o/,/ /P/y/t/h/o/n/!/

1.6.3. while

while 조건식 :
하위코드

x = 0
while x < 3 :
    x += 1
    
print (x)
3

1.6.4. [ for if ]

[ 변수 for 변수 in 리스트 if 조건식]
: 리스트 내포 순회

lsMy = [x for x in range(1,101) if x%7 == 0]

print(lsMy)
[7, 14, 21, 28, 35, 42, 49, 56, 63, 70, 77, 84, 91, 98]

1.7 함수

def 함수명(인자) :
하위코드
return 반환값

def myFunc(x):
    y = x * 7
    return y

print(myFunc(3))
21

2. Python Data

2.1. 자료구조

List
Tuple
Dictionary
Series
DataFrame

2.1.1. 리스트 (List)

[ a, b, c ]

  • 다른 자료형 가능
  • 수정 가능 (mutable)
lsFav = [3, "cloud", True]

print(lsFav)
[3, 'cloud', True]

2.1.1.1. 리스트 인덱싱

LIST[index]
LIST[이상i : 미만i]

  • index 는 0부터 시작
  • 끝에서 부터 -1
lsAbc = ['a', 'b', 'c', 'y', 'z']
        # 0    1    2    3    4
print(lsAbc[0])
print(lsAbc[2])
print(lsAbc[-1])
print(lsAbc[-2])

# Slicing 
print(lsAbc[0:2]) #이상:미만
print(lsAbc[:3]) #처음부터 3미만까지
print(lsAbc[2:]) #2이상 끝까지
a
c
z
y
['a', 'b']
['a', 'b', 'c']
['c', 'y', 'z']

2.1.1.2. 리스트 매서드

# 빈 리스트 생성 가능
lsAbc = []
print(lsAbc)

# 리스트에 항목 1개 추가.append(x)
lsAbc.append('a')
print(lsAbc)

# 리스트 이어 붙이기.extend(LIST)
lsAbc.extend(['b', 'c'])
print(lsAbc)

# 리스트 수열 만들기 range(nStart, nEnd, nGap)
lsNums = list(range(3,10,2))
print(lsNums)

# 리스트 + 연산
lsAbc += lsNums
print(lsAbc)

# 리스트 원소 인덱스로 제거.pop(i)
lsAbc.pop(-1)
print(lsAbc)

# 리스트 원소 이름으로 제거.remove(x)
lsAbc.remove(7)
print(lsAbc)
[]
['a']
['a', 'b', 'c']
[3, 5, 7, 9]
['a', 'b', 'c', 3, 5, 7, 9]
['a', 'b', 'c', 3, 5, 7]
['a', 'b', 'c', 3, 5]

2.1.2. 튜플 (Tuple)

( a, b, c )

  • 다른 자료형 가능
  • 수정 불가 (immutable)
tpRgb = ("RED", "GREEN", "BLUE")
print(tpRgb)
print(tpRgb[0])
tpRgb[0] = "PINK" #오류 발생; Type Error
('RED', 'GREEN', 'BLUE')
RED



---------------------------------------------------------------------------

TypeError                                 Traceback (most recent call last)

Cell In[19], line 4
      2 print(tpRgb)
      3 print(tpRgb[0])
----> 4 tpRgb[0] = "PINK"


TypeError: 'tuple' object does not support item assignment

2.1.3. 딕셔너리 (Dictionary)

{ key: value, key2: val2, key3: val3}

  • 키는 유일, 값은 중복 가능

2.1.4. 시리즈 (Series)

pd.Series( [ a, b, c ] )

  • pandas lib. 제공 1차원 데이터 구조
  • index 와 value 의 쌍으로 이루어져 있다.
  • list 와 유사하며, 추가적인 데이터 분석 기능 제공
  • DataFrame 에서의 하나의 열
  • 다른 자료형 가능

2.1.5. 데이터프레임 (DataFrame)

pd.DataFrame( { 'colA': [valA1, valA2, valA3],
       'colB': [valB1, valB2, valB3] } )

  • pandas lib. 제공 2차원 데이터 구조
  • Row 와 Col. 로 이루어져 있다.
  • 각 Col. 은 Series 로 구성된다.
  • Col. 끼리는 자료형이 달라도 된다.
  • 각 Col. 내부의 자료형은 동일해야 한다.
profile
Cool Kid Never Die

0개의 댓글