πŸ“š μŠ€ν„°λ””/파이썬 μŠ€ν„°λ”” κ°•μ˜μžλ£Œ

[1νŒ€/ν—ˆμ„œμ›] 6μ°¨μ‹œ 파이썬 μŠ€ν„°λ”” - λ¬Έμžμ—΄

ν—ˆμ„œμ› 2023. 5. 4. 01:55

μ°Έκ³ λ„μ„œ - 데이터 과학을 μœ„ν•œ 파이썬 ν”„λ‘œκ·Έλž˜λ°

 

6μ°¨μ‹œ_λ¬Έμžμ—΄_과제.pdf
0.20MB
6μ°¨μ‹œ_λ¬Έμžμ—΄_κ°•μ˜μ•ˆ.pdf
0.95MB
6μ°¨μ‹œ_λ¬Έμžμ—΄_κ³Όμ œλ‹΅μ•ˆ.pdf
0.22MB

λ¬Έμžμ—΄


ν•™μŠ΅ λͺ©ν‘œ

  • λ¬Έμžμ—΄μ˜ κ°œλ…κ³Ό λ©”λͺ¨λ¦¬ 곡간에 λŒ€ν•΄ μ΄ν•΄ν•œλ‹€.
  • λ¬Έμžμ—΄μ˜ 인덱싱과 μŠ¬λΌμ΄μ‹±μ— λŒ€ν•΄ ν•™μŠ΅ν•œλ‹€.
  • λ¬Έμžμ—΄μ˜ μ—°μ‚°κ³Ό λ¬Έμžμ—΄ ν•¨μˆ˜μ— λŒ€ν•΄ μ•Œμ•„λ³Έλ‹€.

λ¬Έμžμ—΄μ˜ ν˜•μ‹μ„ μ •ν•˜μ—¬ 좜λ ₯ν•˜λŠ” μ„œμ‹ 지정에 λŒ€ν•΄ μ΄ν•΄ν•œλ‹€.


01 λ¬Έμžμ—΄μ˜ 이해

  • λ¬Έμžμ—΄(string)의 κ°œλ…

μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ λ§Œλ“€κ±°λ‚˜ 데이터λ₯Ό 뢄석할 λ•Œ 맀우 μ€‘μš”ν•˜κ²Œ λ‹€λ£¨μ–΄μ§€λŠ” μžλ£Œν˜• 쀑 ν•˜λ‚˜ λ¬Έμžμ—΄μ„ μ΄ν•΄ν•˜κΈ° μœ„ν•΄μ„œλŠ” λ¬Έμžμ—΄μ˜ νŠΉμ§•μ„ 이해해야 ν•œλ‹€.

λ¨Όμ € λ¬Έμžμ—΄μ€ μ‹œν€€μŠ€ μžλ£Œν˜• (sequence data type)이닀.

μ‹œν€€μŠ€ μžλ£Œν˜•μ€ λ¦¬μŠ€νŠΈμ™€ 같이 데이터λ₯Ό 순차적으둜 λ©”λͺ¨λ¦¬μ— μ €μž₯ν•˜λŠ” ν˜•μ‹μ˜ 데이터

  • λ¬Έμžμ—΄κ³Ό λ©”λͺ¨λ¦¬ 곡간

일반적으둜 λ¬Έμžμ—΄μ„ μ €μž₯ν•˜κΈ° μœ„ν•΄μ„œλŠ” 영문자 ν•œ κΈ€μžλ‹Ή 1λ°”μ΄νŠΈμ˜ λ©”λͺ¨λ¦¬ 곡간을 μ‚¬μš©

μ»΄ν“¨ν„°λŠ” μ΄μ§„μˆ˜λ§Œ μ‚¬μš©ν•˜λ―€λ‘œ 컴퓨터가 숫자λ₯Ό μΈμ‹ν•˜λŠ” μ΅œμ†Œ λ‹¨μœ„λŠ” 1λΉ„νŠΈμ΄λ‹€.

(1 λΉ„νŠΈλŠ” 0κ³Ό 1 λ§Œμ„ ν‘œν˜„ν•  수 μžˆλŠ” 크기)

1λ°”μ΄νŠΈλŠ” 8λΉ„νŠΈμ™€ 크기가 κ°™μœΌλ©°, 총 2의 8승 크기인 256κΉŒμ§€μ˜ 숫자λ₯Ό μ €μž₯ν•  수 μžˆλ‹€.

λ˜ν•œ μ»΄ν“¨ν„°λŠ” 문자λ₯Ό 직접 μΈμ‹ν•˜μ§€ μ•ŠλŠ”λ‹€.

ex) 컴퓨터에 a라고 μ•Œλ €μ€˜λ„ μ»΄ν“¨ν„°λŠ” μ •ν™•νžˆ aλΌλŠ” ν…μŠ€νŠΈλ‘œ μΈμ‹ν•˜λŠ” 것이 μ•„λ‹ˆλ‹€.

λŒ€μ‹  μ»΄ν“¨ν„°λŠ” 이 정보λ₯Ό μ΄μ§„μˆ˜λ‘œ λ³€ν™˜ν•˜μ—¬ μ €μž₯ν•œλ‹€. → 01001011처럼 λ³€ν™˜λ˜μ–΄ λ©”λͺ¨λ¦¬μ— μ €μž₯

우리 λˆˆμ—λŠ” a둜 λ³΄μ΄μ§€λ§Œ 컴퓨터 λ©”λͺ¨λ¦¬μ™€ CPUμ—λŠ” 01001011κ°™ μˆ«μžλ“€μ΄ 처리되고 있음

 

컴퓨터 κ³΅ν•™μžλ“€μ€ 문자λ₯Ό μ²˜λ¦¬ν•˜κΈ° μœ„ν•΄ μ΄μ§„μˆ˜λ‘œ λ³€ν™˜λ˜λŠ” ν‘œμ€€ κ·œμΉ™μ„ λ§Œλ“€μ—ˆμŒ.

λŒ€ν‘œμ μœΌλ‘œ ASCII (American Standard Code for information Interchange)κ°€ 있고, μœˆλ„μš°μ—μ„œ ν•œκΈ€ 처리λ₯Ό μœ„ν•΄ 많이 μ“°λŠ” CP949 λ˜λŠ” MS949, UTF-8 등이 μžˆλ‹€.

→ μ΄λŸ¬ν•œ κ·œμΉ™μ„ 인코딩 encoding이라고 ν•œλ‹€.

  1. μ»΄ν“¨ν„°λŠ” 문자λ₯Ό 직접 μΈμ‹ν•˜μ§€ λͺ»ν•œλ‹€.
  2. μ»΄ν“¨ν„°λŠ” 문자λ₯Ό 숫자둜 λ³€ν™˜ν•˜μ—¬ μΈμ‹ν•œλ‹€.
  3. μ‚¬λžŒλ“€μ€ 문자λ₯Ό 숫자둜 λ³€ν™˜ν•˜κΈ° μœ„ν•œ κ·œμΉ™μ„ λ§Œλ“€μ—ˆλ‹€. 일반적으둜 이 κ·œμΉ™μ€ 1개의 영문자λ₯Ό 1λ°”μ΄νŠΈ. 즉 2의 8승 μ •λ„μ˜ 곡간에 μ €μž₯ν•œλ‹€.

⇒ 이 κ·œμΉ™μ„ μ΄μš©ν•˜μ—¬ μˆ«μžμ™€ 문자λ₯Ό λ§΅ν•‘ν•˜λŠ” 것이 μš΄μ˜μ²΄μ œμ™€ μΈν„°ν”„λ¦¬ν„°μ˜ μ—­ν•  쀑 ν•˜λ‚˜

 

  • λ¬Έμžμ—΄μ˜ 인덱싱(indexing)

λ¬Έμžμ—΄μ€ μ‹œν€€μŠ€ μžλ£Œν˜•, (μ‹œν€€μŠ€ μžλ£Œν˜•μ€ λ¦¬μŠ€νŠΈμ™€ νŠΉμ§•μ΄ 거의 같은 μžλ£Œν˜•μ΄λ‹€.) → λ¬Έμžμ—΄μ˜ νŠΉμ§• 쀑 ν•˜λ‚˜. 인덱싱

리슀트처럼 κΈ€μž ν•˜λ‚˜ν•˜λ‚˜κ°€ μƒλŒ€μ μΈ μ£Όμ†Œλ₯Ό 가짐. 이 μ£Όμ†Œλ₯Ό μ‚¬μš©ν•΄ μ €μž₯된 값을 κ°€μ Έμ˜€λŠ” 인덱싱을 μ‚¬μš©ν•  수 μžˆλ‹€.

  • λ¬Έμžμ—΄μ˜ μŠ¬λΌμ΄μ‹±(slicing)

λ¬Έμžμ—΄μ˜ μ£Όμ†Œκ°’μ„ μ΄μš©ν•΄ λ¬Έμžμ—΄μ˜ 뢀뢄값을 μΆ”μΆœν•΄λ‚΄λŠ” 기법 (리슀트)

기본적으둜 λ¬Έμžμ—΄ μŠ¬λΌμ΄μ‹± 기법과 리슀트 μŠ¬λΌμ΄μ‹± μ‚¬μš©λ²•μ΄ μ™„μ „νžˆ κ°™μŒ

 

  • λ¬Έμžμ—΄μ˜ μ—°μ‚°

λ¬Έμžμ—΄λ„ 일반적인 λ³€μˆ˜μ™€ λ§ˆμ°¬κ°€μ§€λ‘œ 연산이 κ°€λŠ₯ν•˜λ‹€. (리슀트 μ—°μ‚°κ³Ό κ°™μŒ)

ex) λ¬Έμžμ—΄ λ³€μˆ˜ ‘a’와 μ •μˆ˜ν˜• 2λ₯Ό ‘a+2’와 같이 연산은 μ•ˆ λ˜μ§€λ§Œ ‘a*2’와 같은 연산은 κ°€λŠ₯

 

1. λ¬Έμžμ—΄μ˜ λ§μ…ˆ μ—°μ‚°

λ§μ…ˆ 연산은 λͺ¨λ“  λ³€μˆ˜κ°€ λ¬Έμžμ—΄μΌ 경우 ν…μŠ€νŠΈ 뢙이기가 이루어진닀.

πŸ™Œ μ—¬κΈ°μ„œ 자주 ν•˜λŠ” μ‹€μˆ˜!!

print( ) ν•¨μˆ˜μ—μ„œ μ •μˆ˜ν˜•κ³Ό λ¬Έμžμ—΄μ„ 같이 보여주렀고 ν•  λ•Œ λ°œμƒν•œλ‹€.

→ λ¬Έμžμ—΄κ³Ό μ •μˆ˜ν˜•μ˜ μ—°μ‚°μœΌλ‘œ μΈμ‹ν•˜μ—¬ λ§μ…ˆ 연산이 μ‹€ν–‰λ˜μ§€ μ•ŠλŠ” μ½”λ“œ

 

2. λ¬Έμžμ—΄μ˜ κ³±μ…ˆ μ—°μ‚°

a * 2λ₯Ό ν’€λ©΄ a + a의 μ—°μ‚°μ΄λ―€λ‘œ, 같은 κΈ€μžκ°€ 두 번 좜λ ₯

 

3. 포함 μ—¬λΆ€λ₯Ό ν™•μΈν•˜λŠ” in μ—°μ‚°

: ifλ¬Έκ³Ό ν•¨κ»˜ μ‚¬μš©ν•˜λŠ”λ°, νŠΉμ • λ¬Έμžκ°€ νŠΉμ • λ³€μˆ˜μ— λ“€μ–΄μžˆλŠ”μ§€ ν™•μΈν•˜λŠ” μ—°μ‚°

 

  • λ¬Έμžμ—΄ ν•¨μˆ˜

λ¬Έμžμ—΄ ν•¨μˆ˜λŠ” λ¬Έμžμ—΄μ„ λ‹€λ£° λ•Œ μ‚¬μš©ν•˜κΈ° μœ μš©ν•œ ν•¨μˆ˜

λŒ€ν‘œμ μœΌλ‘œ len() ν•¨μˆ˜. ν…μŠ€νŠΈμ˜ 길이λ₯Ό λ°˜ν™˜ν•œλ‹€.

λ¬Έμžμ—΄ ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜λŠ” 방법은 λ¬Έμžμ—΄ λ³€μˆ˜ λ‹€μŒμ— ‘.λ¬Έμžμ—΄ ν•¨μˆ˜λͺ…’을 μž…λ ₯ν•˜λ©΄ λœλ‹€.

 

  • μ£Όμš” λ¬Έμžμ—΄ ν•¨μˆ˜
    • λ¬Έμžμ—΄μ„ λŒ€λ¬Έμžλ‘œ λ³€ν™˜ν•˜λŠ” upper() ν•¨μˆ˜ / μ†Œλ¬Έμžλ‘œ λ³€ν™˜ν•˜λŠ” lower() ν•¨μˆ˜
    • 제λͺ©κ³Ό κ΄€λ ¨λœ ν•¨μˆ˜
      • title() ν•¨μˆ˜: 각 λ‹¨μ–΄μ˜ μ•žκΈ€μžλ§Œ λŒ€λ¬Έμžλ‘œ λ°”κΎΈλŠ” ν•¨μˆ˜
      • capitalize() ν•¨μˆ˜: 첫 번째 κΈ€μžλ§Œ λŒ€λ¬Έμžλ‘œ λ°”κΎΈλŠ” ν•¨μˆ˜

πŸ™Œ λ¬Έμžμ—΄ ν‘œν˜„κ³Ό 특수문자

νŒŒμ΄μ¬μ—μ„œ λ¬Έμžμ—΄μ„ ν‘œν˜„ν•  λ•Œ μž‘μ€λ”°μ˜΄ν‘œλ‚˜ ν°λ”°μ˜΄ν‘œλ₯Ό μ‚¬μš©ν•œλ‹€.

ν•˜μ§€λ§Œ I’m OK와 같이 μ•„ν¬μŠ€νŠΈλ‘œν”Ό(')κ°€ λ¬Έμž₯에 λ“€μ–΄κ°€λ©΄ μž‘μ€λ”°μ˜΄ν‘œλ₯Ό μ‚¬μš©ν•˜κΈ° μ–΄λ ΅λ‹€.

λ§Œμ•½ μž‘μ€λ”°μ˜΄ν‘œλ‘œ λ¬Έμžμ—΄μ„ ν‘œν˜„λ©΄ μΈν„°ν”„λ¦¬ν„°λŠ” 이 λ¬Έμžκ°€ μ œλŒ€λ‘œ λ‹«νžˆμ§€ μ•Šμ•˜λ‹€κ³  νŒλ‹¨

또 λ‹€λ₯Έ λ¬Έμ œλ‘œλŠ” μ€„λ°”κΏˆμ— λŒ€ν•œ 것이닀. μ΄λŸ¬ν•œ κ²½μš°μ—λ„ λ¬Έμžμ—΄λ‘œ ν‘œν˜„ν•˜κΈ° μ–΄λ ΅λ‹€.

I’m OK

How about you?

→ μ΄λŸ¬ν•œ 문제λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄ νŒŒμ΄μ¬μ—μ„œλŠ” μ—¬λŸ¬ 가지 κΈ°λŠ₯을 μ§€μ›ν•œλ‹€.

λ¬Έμžμ—΄ μžμ²΄μ— μž‘μ€λ”°μ˜΄ν‘œλ‚˜ ν°λ”°μ˜΄ν‘œκ°€ λ“€μ–΄κ°€ μžˆλŠ” 경우.

  1. μž‘μ€λ”°μ˜΄ν‘œκ°€ λ“€μ–΄κ°„ λ¬Έμžμ—΄μ€ ν°λ”°μ˜΄ν‘œλ‘œ μ„ μ–Έ (ν°λ”°μ˜΄ν‘œ → μž‘μ€λ”°μ˜΄ν‘œ) 
  2. 파이썬의 특수문자 κΈ°λŠ₯을 μ‚¬μš©

이 νŠΉμˆ˜λ¬ΈμžλŠ” λ¬Έμžμ—΄μ—μ„œ ν‘œν˜„ν•˜κΈ° μ–΄λ €μš΄ μ—¬λŸ¬ 문자λ₯Ό ν‘œν˜„ν•  수 μžˆλ„λ‘ 도와쀀닀.

기본적으둜 μ—­μŠ¬λž˜μ‹œ(\)기호λ₯Ό μ‚¬μš©! (μœˆλ„μš°μ—μ„œλŠ” 원 ν‘œμ‹œ)

02 λ¬Έμžμ—΄ μ„œμ‹ 지정

  • μ„œμ‹ 지정(formating)의 κ°œλ…

print( ) ν•¨μˆ˜λŠ” 기본적으둜 λ³€μˆ˜ λ˜λŠ” 값을 콀마(,)둜 띄어쓰기 ν•˜μ—¬ 좜λ ₯ν•œλ‹€.

ν•˜μ§€λ§Œ print() ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜λ‹€ νŠΉμ •ν•œ ν˜•μ‹μ— λ§žμΆ”μ–΄ κ²°κ³Όλ₯Ό 좜λ ₯ν•΄μ•Ό ν•˜λŠ” κ²½μš°λ„ λ°œμƒ

ex) μ—‘μ…€ - 톡화 λ‹¨μœ„. μ„Έ 자리 숫자 λ‹¨μœ„λ‘œ 띄어쓰기, % 좜λ ₯ λ“± λ‹€μ–‘ν•œ ν˜•μ‹μ— λ§žμΆ”μ–΄ 좜λ ₯

⇒ μ„œμ‹ 지정

  • % μ„œμ‹κ³Ό format() ν•¨μˆ˜

λ¬Έμžμ—΄μ˜ μ„œμ‹μ„ μ„€μ •ν•  λ•Œ print() ν•¨μˆ˜λŠ” κΈ°λ³Έ 좜λ ₯ ν˜•μ‹ μ™Έ % μ„œμ‹κ³Ό format()ν•¨μˆ˜λ₯Ό μ‚¬μš©

μ„œμ‹μ„ μ§€μ •ν–ˆμ„ λ•Œ μž₯점

  1. 데이터와 좜λ ₯ ν˜•μ‹μ„ λΆ„λ₯˜ν•  수 μžˆλ‹€.
    같은 λ‚΄μš©μ„ μ—¬λŸ¬ 번 λ°˜λ³΅ν•˜κΈ° μœ„ν•΄ κΈ°μ‘΄ print()문에 μŠ€νŽ˜μ΄μŠ€λ°”λ₯Ό μ΄μš©ν•΄ 띄어쓰기λ₯Ό λ„£μ–΄μ„œ + 기호둜 λ¬Έμžμ—΄ ν˜•νƒœλ₯Ό λΆ™μ—¬μ£ΌλŠ” 것보닀 μ‹œκ°μ μœΌλ‘œ 훨씬 μ΄ν•΄ν•˜κΈ° μ‰½κ²Œ μ½”λ“œλ₯Ό μž‘μ„±
  2. 데이터λ₯Ό ν˜•μ‹μ— 따라 λ‹€λ₯΄κ²Œ ν‘œν˜„ν•  수 μžˆλ‹€.
    μ„œμ‹ 지정 κΈ°λŠ₯은 각 λ³€μˆ˜μ˜ μžλ£Œν˜•μ— 맞게 μ„œλ‘œ λ‹€λ₯΄κ²Œ 지정할 수 μžˆλ‹€.
    • %μ„œμ‹
      • 좜λ ₯ 양식
        ‘%μžλ£Œν˜• % (κ°’)’

→ %dλŠ” μ •μˆ˜ν˜•μ˜ λ³€μˆ˜λ₯Ό, %sλŠ” λ¬Έμžμ—΄μ˜ λ³€μˆ˜λ₯Ό 할당받을 수 μžˆλ‹€.

즉, %dμ—λŠ” ‘3’이. %sμ—λŠ” ‘five’κ°€ λŒ€μ‘λœλ‹€.

λ³€μˆ˜μ˜ μžλ£Œν˜•μ— 따라 λ‹€μ–‘ν•˜κ²Œ μ„€μ •ν•  수 μžˆλ‹€.

  • format() ν•¨μˆ˜
    • μ„œμ‹ 지정 ν˜•νƒœ
      "{μžλ£Œν˜•}”.format(인수)
  • νŒ¨λ”©(padding)
    μ„œμ‹ 지정 κΈ°λŠ₯ 쀑 μ—¬μœ  곡간을 μ§€μ •ν•˜μ—¬ κΈ€μž 배열을 λ§žμΆ”κ³  μ†Œμˆ˜μ  자릿수λ₯Ό λ§žμΆ”λŠ” κΈ°λŠ₯
    % μ„œμ‹κ³Ό format() ν•¨μˆ˜ λͺ¨λ‘ νŒ¨λ”© κΈ°λŠ₯을 제곡!

 

πŸ™Œ 넀이밍(naming)

λ³€μˆ˜λͺ…을 μ„œμ‹μ— ν• λ‹Ήν•  수 μžˆλŠ” κΈ°λŠ₯

κΈ°μ‘΄ λ²ˆν˜Έλ‚˜ μˆœμ„œλŒ€λ‘œ μžλ£Œν˜•μ— λŒ€μ‘μ΄ μ•„λ‹Œ νŠΉμ • λ³€μˆ˜λͺ…을 μ‚¬μš©ν•˜μ—¬ 좜λ ₯값에 직접 ν• λ‹Ή

특히 ν•œ λ²ˆμ— 좜λ ₯ν•΄μ•Ό ν•˜λŠ” λ³€μˆ˜κ°€ λ§Žμ„ λ•Œ λ³€μˆ˜μ˜ μˆœμ„œλ₯Ό ν—·κ°ˆλ¦¬μ§€ μ•Šκ³  μ‚¬μš©ν•  수 μžˆλ‹€!