[오픈소스기반 데이터분석] 2강 - 데이터 분석을 위한 파이썬 프로그래밍(1)

2026. 9. 18. 23:22·방송통신대학교/📊 오픈소스기반 데이터분석

📌 개요

🔑 학습 키워드

┗  리스트 슬라이싱: 리스트이름[시작 인덱스: 끝 인덱스: 간격]

┗  리스트 컴프리헨션: 반복문을 이용해서 새로운 리스트를 간결하게 만드는 문법

┗  딕셔너리 컴프리헨션: 반복문을 이용해서 새로운 딕셔너리를 간결하게 만드는 문법

┗  문자열 형식 지정: C 스타일, str.format(), f-문자열 포맷팅

┗  컨텍스트 관리: with => 자원 사용 후 close 등 자동 관리 문법

 

💡 1. 시퀀스 슬라이싱과 컴프리헨션

[ 리스트 슬라이싱 ]

┗  대상 리스트의 "부분 리스트"를 "생성" 또는 "수정"하는 문법

┗  문법 형식:

- 리스트이름[시작 인덱스:끝 인덱스:간격]

┗  예제:

< '예제' >
numbers = [10, 20, 30, 40, 50, 60, 70]

(1) '끝 인덱스'
subset1 = numbers[ :3]
인덱스   0   1   2   3   4   5   6
값      10  20  30  40  50  60  70
        └───────┘
- '결과': 10, 20, 30
-> 시작 인덱스 지정이 없으면 0부터 -> 끝 인덱스 3이므로 10, 20, 30 부분 리스트 생성
-> 참고로 끝 인덱스 3은 포함을 하지 않으며, 간격 지정이 없을 땐 0임

(2) '시작 인덱스, 음수'
subset2 = number[-3: ]
양수:   0   1   2   3   4   5   6
값:    10  20  30  40  50  60  70
음수:  -7  -6  -5  -4  -3  -2  -1
-> 음수는 리스트 뒤에서부터 시작 끝 인덱스는 없으므로 리스트의 끝인 6까지 진행
- '결과': 50, 60, 70

(3) '간격'
list1 = numbers[ : : 2 ]
인덱스   0   1   2   3   4   5   6
값      10  20  30  40  50  60  70
        └──────┘└───────┘└──────┘
-> 간격 2 = 2칸씩 이동
- '결과': 10, 30, 50, 70

list2 = numbers[ : : -1 ]
양수:   0   1   2   3   4   5   6
값:    10  20  30  40  50  60  70
음수:  -7  -6  -5  -4  -3  -2  -1
-> 간격 -1 음수인 경우 진행 방향 뒤에서부터 진행
- '결과': 70, 60, 50, 40, 30, 20, 10

 

[ 리스트 컨프리헨션 ]

┗  반복문을 이용해서 새로운 리스트를 간결하게 만드는 문법

┗  문법 형식:

- '문법형식1': [표현식 for 변수 in 반복가능한 객체]
- '문법형식2': [표현식 for 변수 in 반복가능한 객체 if 조건]
- '반복가능한 객체': 리스트, 튜플, 딕셔너리, 문자열, 집합, range 객체

┗  예제:

< '기존 방식' >
numbers = []
for i in range(5):
    numbers.append(i)
print(numbers) => 0, 1, 2, 3, 4

< '컴프리헨션' >
numbers = [ i for i in range(5) ]
print(numbers) => 0, 1, 2, 3, 4

┗  리스트 컴프리헨션 응용:

(1) '원소 조작'
numbers = [1, 2, 3, 4, 5]
squares = [num ** 2 for num in numbers]
print(squares) => 1, 4, 9, 16, 25
-> num ** 2 을 통해 각 원소의 제곱을 통해 원소 조작

(2) '조건 적용'
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_numbers= [num for num in numbers if num % 2 == 0]
print(even_numbers) => 2, 4, 6, 8, 10
-> if 조건을 통해 짝수인 경우 true -> true 인 경우에만 원소 삽입

 

[ 딕셔너리 컨프리헨션 ]

┗  반복문을 이용해서 새로운 딕셔너리를 간결하게 만드는 문법

┗  문법 형식:

- '문법형식1': {키: 표현식 for 변수 in 반복가능객체}
-> 배열과 같은 반복가능객체를 통해 각 요소의 값을 키로 쓰고 표현식의 결과를 값으로 씀
- '문법형식2': {키: 표현식 for 키변수, 값변수 in 딕셔너리.items()}
-> 이미 존재하는 딕셔너리를 반복가능객체로 쓰는 경우임
-> 딕셔너리.items() = 각각의 키와 값을 한 쌍으로 가져오는 함수

┗  예제:

< '문법형식1 기존 문법' >
squares = {}
for i in range(5):
    squares[i] = i ** 2
print(squares) => '0, 1, 4, 9, 16'

< '문법형식1: 딕셔너리 컴프리헨션 문법' >
squares = {i: i ** 2 for i in range(5)}
print(squares) => '0, 1, 4, 9, 16'

< '문법형식2 기존 문법' >
new_scores = {}
for name, score in scores.items():
    new_scores[name] = score + 10
print(new_scores) => '{"홍길동": 90,"김철수": 100,"이영희": 80}'

< '문법형식2: 딕셔너리 컴프리헨션 문법' >
scores = {"홍길동": 80,"김철수": 90,"이영희": 70}
new_scores = {name: score + 10 for name, score in scores.items()}
print(new_scores) => '{"홍길동": 90,"김철수": 100,"이영희": 80}'
-> scores.items() 를 통해 기존 딕셔너리를 반복가능객체로 활용

 

💡 2. 문자열 형식 지정

[ 문자열 형식 지정의 개념 ]

┗  데이터 분석 과정에서 특정 형식의 데이터를 출력

┗  변수 값을 포함한 문자열을 생성하는 상황이 자주 발생

┗  파이썬 포맷팅 스타일 종류:

- C 스타일(%) 포맷팅
- str.format() 메서드 활용 포맷팅
- f-string 포맷팅

 

[ C 스타일(% 연산자) 포맷팅 ]

┗  C 언어의 printf() 스타일과 유사

┗  C 스타일 포맷팅 문법형식:

- "형식 지정자를 포함한 문자열" %(변수 리스트)
- 'Python 문법 예시': print("상품명: $s, 가격: %d" % (item, price))

┗  C 스타일의 단점:

- 변수의 개수가 증가할수록 복잡해지고 가독성이 저하
- 변수의 개수가 잘못되거나 순서 불일치 시 오류 발생
- 딕셔너리, 리스트 등 중첩된 데이터 구조를 직접 활용하기 어려움

┗  주요 형식 지정자:

┗  C 스타일 포맷팅 활용 예(Python):

item = "프린터"
price = 360000
print("상품명: %s, 가격: %d" % (item, price))

 

[ str.format() 메서드 활용 ]

┗  중괄호 내에는 공백, 인덱스, 키워드 또는 속성 이름을 지정

┗  형식 지정자를 통해 정렬, 패딩, 소수점 자릿수, 천 단위 구분자 등 출력 형식을 지정

<'공백 중괄호'>
basic_format = '이름: {}, 나이: {}, 월급: {}원'.format(name, age, salary)

<'인덱스'>
index_format = '직원 {0}의 나이는 {1}세이고, {0}의 세후 월급은 {2}원 입니다.'
    .format(name, age, int(salary * (1 - tax_rate)))
    
<'키워드'>
keyword_format = '이름: {employee}, 나이: {years}세'.format(employee=name, years=age)

 

[ f-문자열 ]

┗  파이썬 3.6 버전부터 도입된 문자열 포맷팅 방식

┗  문자열 앞에 'f' 또는 'F' 접두사를 붙이고, 문자열 내부에 중괄호({})를 사용하여 변수나 표현식을 표현

┗  직관적 표현으로 코드의 길이가 줄고 가독성 향상

┗  f-문자열 포맷팅 문법형식:

f"문자열 {표현식}"

name = "홍길동"
age = 30
print(f"이름: {name}, 나이: {age}")

┗  예제:

basic_format = f'이름: {name}, 나이: {age}, 월급:
                {salary}원'
index_format = f'직원 {name}의 나이는 {age}세이고,
                {name}의 세후 월급은 {int(salary *
                (1 - tax_rate))}원입니다.'
keyword_format = f'직원정보: 이름: {name} 나이:
                {age}세 월급: {salary:,}원 세금:
                {tax_rate:.1%} 실수령액:
                {int(salary * (1 - tax_rate)):,}원'

 

💡 3. 컨텍스트 관리

[ 리소스의 사용 ]

┗  리소스는 획득 및 사용 후 명시적으로 폐기

┗  자원 사용 예제:

file = open("output.txt", "w")
file.write("Hello, world!\n")
3 file.close()

 

[ 컨텍스트 관리 ]

┗  자원을 효율적이고 안전하게 사용할 수 있도록 하는 메커니즘

┗  즉, 자원 사용 후 명시적으로 폐기해 주어야 하는 자원의 획득과 해제를 자동으로 처리

┗  "with" 키워드 사용:

<'기존 방식'>
file = open("output.txt", "w")
file.write("Hello, world!\n")
file.close()

<'with 키워드 방식'>
with open("output.txt", "w") as file:
file.write("Hello, world!\n")

'방송통신대학교 > 📊 오픈소스기반 데이터분석' 카테고리의 다른 글

[오픈소스기반 데이터분석] 3강 - 데이터 분석을 위한 파이썬 프로그래밍(2)  (0) 2026.09.25
[오픈소스기반 데이터분석] 1강 - 데이터분석과 오픈소스  (0) 2026.09.17
'방송통신대학교/📊 오픈소스기반 데이터분석' 카테고리의 다른 글
  • [오픈소스기반 데이터분석] 3강 - 데이터 분석을 위한 파이썬 프로그래밍(2)
  • [오픈소스기반 데이터분석] 1강 - 데이터분석과 오픈소스
junbin2
junbin2
java.lang.NullPointerException
  • junbin2
    bin's Development Diary
    junbin2
  • 전체
    오늘
    어제
    • 전체보기 (249) N
      • 방송통신대학교 (103) N
        • 📝 프로그래밍 언어론 (13)
        • 📊 오픈소스기반 데이터분석 (3) N
        • ⚙️ 컴퓨터의 이해 (11)
        • 💻 컴퓨터과학 개론 (15)
        • 🔢 자료구조 (14)
        • 🧬 알고리즘 (10)
        • ⚙️ 운영체제 (14)
        • 🕸️ 이산수학 (11)
        • 🌍 유비쿼터스 컴퓨팅 (11)
        • 🖥️ 컴퓨터과학과 (1)
      • 공부 (72)
        • 📚백엔드 공부 (6)
        • ☕Java (23)
        • 🌳Spring (13)
        • ⚙️C (12)
        • ⚡Python (15)
        • JavaScript (1)
        • 🛢️Database (0)
        • Algorithm Problem Solving (2)
      • 네트워크 (7)
        • 📜HTTP (7)
      • 스파르타코딩클럽 (64)
      • 정보 (2)
      • 정리가 필요한 글 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • GitHub
  • 공지사항

  • 인기 글

  • 태그

    방통대
    Java
    함수
    Python
    컴퓨터의 이해
    그래프
    배열
    프로그래밍 언어론
    알고리즘
    운영체제
    spring
    방송대
    C언어
    자료구조
    컴퓨터과학과
    방송통신대학교
    이산수학
    컴퓨터과학 개론
    자바
    파이썬
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
junbin2
[오픈소스기반 데이터분석] 2강 - 데이터 분석을 위한 파이썬 프로그래밍(1)
상단으로

티스토리툴바