데이터

제로베이스 데이터사이언스 스쿨 - Part 01. 데이터 분석을 위한 Python_Chapter 01-2

Leah (리아) 2025. 9. 16. 21:49
반응형

 Chapter 01. 데이터 분석가에게 꼭 필요한 기초 문법

 

인덱싱과 슬라이싱 - 자료형변환

 

인덱스란?

+인덱스는 0부터 시작

-인덱스는 -1부터 시작

출처 : 제로베이스 테이터사이언스 스쿨 강의

 

슬라이싱이란?

순서가 있는 자료형 [시작 : 종료 : 폭 ]  # 시작 인덱스부터 종료 인덱스까지 증가 폭만큼 증가시킨 배열을 반환

 

1. 종료 인덱스에 해당하는 요소는 포함하지 않는다.

2. 시작 인덱스, 종료 인덱스, 증가 폭의 기본값은 각각 0, 매열의길이 +1, 1이다.

3. 콜론이 하나만 입력되면 앞과 뒤의 인덱스를 각각 시작 인덱스와 종료 인덱스로 인식한다.

4. 증가폭이 음수면 거꾸로 슬라이싱

 

ex)

L = [1,2,3,4,5,6,7,8,9,0]

L[0:5:2]  ## L = [1,3,5]

 

S = '1234567890'

S[5:]  ## S = '67890'

 

L = [1,2,3,4,5,6,7,8,9,0]

L[:3]  ## L = '1,2,3'

 

실습

리스트에서 인덱싱 연습

  • 아래 리스트에서 세 번째 요소를 출력하세요.
  • 마지막 요소를 출력하세요.
  • 첫 번째 요소를 100으로 변경하고 리스트를 출력하세요.
  • my_list = [10, 20, 30, 40, 50]
my_list = [10, 20, 30, 40, 50]
print(my_list[2])
print(my_list[-1], my_list[4])
my_list[0] = 100
print(my_list)
30
50 50
[100, 20, 30, 40, 50]

 

리스트에서 슬라이싱 연습

  • 아래 리스트에서 첫 3개의 요소를 슬라이싱하세요.
  • 리스트의 마지막 두 요소를 슬라이싱하세요.
  • 리스트를 거꾸로 슬라이싱하여 출력하세요.
  • my_list = [1, 2, 3, 4, 5, 6, 7, 8]
my_list = [1, 2, 3, 4, 5, 6, 7, 8]
print(my_list[:3])
print(my_list[-2:])
print(my_list[::-1]) # 값을 역정렬할 때 사용하는 테크닉
[1, 2, 3]
[7, 8]
[8, 7, 6, 5, 4, 3, 2, 1]

 

문자열에서 인덱싱과 슬라이싱 연습

  • 아래 문자열에서 첫 번째 문자를 출력하세요.
  • 문자열의 마지막 문자를 출력하세요.
  • 문자열의 첫 5문자를 슬라이싱하여 출력하세요.
  • 문자열의 홀수 번째 문자만 슬라이싱하여 출력하세요.
  • my_string = "PythonProgramming"
my_string = "PythonProgramming"
print(my_string[0])
print(my_string[-1])
print(my_string[:5])
print(my_string[::2])
P
g
Pytho
PtoPormig

 

리스트와 문자열 혼합 실습

  • 두 번째 요소를 출력하세요.
  • 아래 리스트의 두 번째 요소에서 첫 번째 문자를 출력하세요.
  • 두 번째 요소에서 마지막 두 문자를 슬라이싱하세요.
  • my_mixed_list = ["Apple", "Banana", "Cherry"]
my_mixed_list = ["Apple", "Banana", "Cherry"]
print(my_mixed_list[1])
print(my_mixed_list[1][0])
print(my_mixed_list[1][-2:])
Banana
B
na

 

인덱싱/슬라이싱으로 값 바꾸기

  • 아래 리스트의 맨 뒤 두 개 값을 50과 60으로 바꾸세요
  • my_list = [10,20,30,40,99,99]
# 인덱싱 활용하기
my_list = [10,20,30,40,99,99]
my_list[-2] = 50
my_list[-1] = 60
print(my_list)
# 슬라이싱 활용하기 (1)
my_list = [10,20,30,40,99,99]
my_list[-2:] = [50, 60] # [99,99] = [50,60]
print(my_list)
# 슬라이싱 활용하기 (2)
my_list = [10,20,30,40,99,99]
my_list = my_list[:4] + [50, 60] # 리스트 연산
print(my_list)
[10, 20, 30, 40, 50, 60]
반응형

함수와 메서드

메서드는 함수의 일종이고, 함수는 입력이 들어오면 출력이 나가는 장치

함수는 함수(변수), 메서드는 변수.메서드()

func(s) # 함수
s.method() # 메서드

 

공통 내장 함수

 

type() : 객체의 자료형을 확인한다.

len() : 요소의 개수를 반환한다. (문자열, 리스트, 튜플, 딕셔너리, 세트 등)

sum() : 요소의 합계를 반환한다. (요소가 모두 int나 float일 때 사용 가능)

min() : 요소의 최솟값을 반환한다. (요소가 모두 int나 float일 때 사용 가능)

max() : 요소의 최댓값을 반환한다.  (요소가 모두 int나 float일 때 사용 가능)

sorted() : 요소를 정렬한 결과를 반환한다. (기본값 = 오름차순, reverse=True = 내림차순)

 

문자열 메서드

str.upper(), str.lower()  : 모든 문자를 대문자/소문자로 변환 (주로 문자열 일치 여부 확인 때 사용)

str.strip(), str.lstrip(), str.rstrip() : 양 옆 공백, 왼쪽 공백, 오른쪽 공백 제거

str.replace(a,b) : a 문자열을 b 문자열로 변환

str.split(delimiter) : delimiter(구분자)를 기준으로 문자열을 나누고 list로 만든다.

str.join(iterable) : 문자열을 iterable 요소 사이에 삽입하여 하나의 문자열로 만든다 ( 구분자.join() )

 

리스트 메서드

list.append()  : 리스트 끝에 요소를 추가합니다.

list.insert(index, item) : 특정 위치에 요소를 삽입

list.remove(item) : 특정 요소를 삭제. 요소가 없으면 에러 발생.

list.index(item) : 특정 요소의 첫 번째 인덱스를 반환한다. 없으면 오류 발생. (튜플 지원)

list.count(item) : 특정 요소의 개수를 반환한다. (튜플 지원)

* 값의 위치, 갯수를 찾는 list.index(item), list.count(item)는 튜플도 지원 가능

 

set 메서드

set.remove(item) : 특정 요소를 제거한다. 요소가 없으면 에러 발생.

set.union(other_set) : 두 집합의 합집합을 반환한다. (set1.union(set2))

set.intersection(other_set) : 두 집합의 교집합을 반환한다.

set.difference(other_set) : 차집합을 반환한다.

 

dict 메서드

dict.keys() : 모든 키를 반환한다.

dict.values() : 모든 값을 반환한다.

dict.items() : 키와 값을 튜플로 묶어 반환한다.

 

 

자료형 변환

자료형 변환이란 한 자료형의 데이터를 다른 자료형으로 변경하는 것을 의미한다.

 

int() : 정수 변환 함수로 숫자형 데이터를 정수로 변환. 단, 문자열이 숫자로 수정되어 있으면 변환 가능 ( 소수점 포함 문자열은 변환 불가) ## int (float("2.34")) 로 변환 가능

float() : 실수 변환 함수로 숫자형 데이터를 실수로 변환함. 단, 문자열이 숫자로 수정되어 있으면 변환 가능

str() : 모든 자료형을 문자열로 변환

list() : 순서가 있는 자료형을 리스트로 변환

tuple() : 순서가 있는 자료형을 튜플로 변환

set() : 집합으로 변환 (중복 제거 할 때 사용) 

 

실습

리스트 내 중복 제거 실습

L = [1, 2, 2, 3, 4, 4, 5]
print(L) # 원본
L = set(L)
print(L) # 집합으로 변환
L = list(L) # 리스트로 변환
L = sorted(L) # 정렬
print(L)
[1, 2, 2, 3, 4, 4, 5]
{1, 2, 3, 4, 5}
[1, 2, 3, 4, 5]
L = [1, 2, 2, 3, 4, 4, 5]
L = sorted(set(L))
print(L)
[1, 2, 3, 4, 5]

 

* sorted 함수는 그 자체로 리스트 함수기 때문에 list 함수 생략 가능

 

산술 연산자

산술 연산자란?

숫자 값을 이용한 기본적인 수학 연산 수행

연산자 기능 예제 결과
+ 덧셈 5+3 8
- 뺄셈 5-3 2
* 곱셈 5*3 15
/ 나눗셈 5/3 1.666...
// 5//3 1
% 나머지 5%3 2
** 거듭제곱 5**3 125

 

* // 몫, % 나머지, ** 거듭제곱

 

산술 연산자의 활용

str 자료형 * 숫자 (int 자료형) : 문자열을 숫자만큼 반복

str 자료형 + str 자료형 : 문자열을 연결

list 자료형 * 숫자 (int 자료형) : 리스트를 숫자만큼 반복

list 자료형 + list 자료형 : 리스트를 연결

 

암시적 형변환

암시적 형변환이란?

파이썬이 자동으로 데이터를 다른 자료형으로 변환하는 것으로 서로 다른 두 자료형이 더 큰 범위의 자료형으로 통일되는 것.

 

int 자료형과 float 자료형이 연산되면 float 자료형이 된다.

bool 자료형과 int(float) 자료형이 연산되면 int(float) 자료형이 된다. 이때 bool 자료형은 True은 1, False는 0으로 간주.

 

bool > int > float > str

 

비교 연산자

비교연산자란?

비교 연산자는 두 값을 비교하여 관계를 평가하고, 그 결과로 Bool을 반환하는 연산자.

연산자 설명 예제 결과
== 두 값이 같은지 비교 5 == 5 True
!= 두 값이 다른지 비교 5 != 5 False
< 왼쪽 값이 오른쪽 값보다 작은지 비교 3 < 5 True
> 왼쪽 값이 오른쪽 값보다 큰지 비교 5 > 3 True
<= 왼쪽 값이 오른쪽 값보다 작거나 같은지 비교 5 <= 5 True
>= 왼쪽 값이 오른쪽 값보다 크거나 같은지 비교 7 >= 3 True

 

멤버십 연산자

멤버십 연산자란?

특정 값이 컨테이너 자료형(리스트, 튜플, 문자열, 집합, 딕셔너리 등) 안에 존재하는지 또는 존재하지 않는지를 확인하는 연산자.

 

in 연산자 : 특정 값이 컨테이너에 존재하는지 확인합니다.

not in 연산자 : 특정 값이 컨테이너에 존재하지 않는지 확인합니다.

 

논리 연산자

논리 연산자란?

여러 조건을 결합하거나 조건을 반전시킬 때 사용되는 연산자.

 

and : 양쪽 조건이 모두 참일 때 : 하나라도 거짓 = 거짓

or : 양쪽 조건 중 하나라도 참이면 참 : 두 조건이 모두 거짓일 때 = 거짓

not : 조건이 참이면 거짓, 거짓이면 참을 반환

 

 

* 이 글은 제로베이스 데이터사이언스 파트타임 스쿨의 강의 자료 일부를 발췌하여 작성되었습니다.


생각정리

이번 강의를 통해 인덱싱과 슬라이싱 개념을 더 명확하게 이해할 수 있었다.

인덱스가 0부터 시작하고, 음수 인덱스를 통해 뒤에서부터 접근할 수 있다는 점은 직관적이면서도 코드를 간결하게 만든다는 생각이 든다. 특히 슬라이싱에서 종료 인덱스가 포함되지 않는다는 규칙은 처음엔 헷갈리지만, 익숙해지면 범위를 유연하게 다루는 데 유용할 것 같다.

 

또한 함수와 메서드의 차이를 다시 정리할 수 있었고, 다양한 내장 함수와 문자열/리스트/집합/사전 메서드를 실제로 어떻게 활용할 수 있을지 감이 잡혔다.

자료형 변환 부분에서는 set()을 이용해 중복을 제거하고, list()와 sorted()를 통해 다시 정리된 리스트를 얻는 과정이 실무에서도 자주 쓰일 수 있겠다는 점이 와닿았다.

 

마지막으로 산술 연산자, 비교 연산자, 멤버십/논리 연산자까지 학습하면서 단순 계산을 넘어서 조건문과 데이터 처리에 활용되는 기초 문법을 정리할 수 있었다.

 

적용점

  • 인덱싱·슬라이싱 습관화
    리스트나 문자열을 다룰 때 반복문 대신 슬라이싱으로 문제를 해결할 수 있는지 먼저 고민해보고, 효율적인 코드를 작성하는 연습을 해야겠다.
  • 자료형 변환 적극 활용
    데이터 전처리 과정에서 중복 제거, 자료형 변경, 정렬 등을 자주 다루게 되므로 set(), list(), sorted() 같은 변환과정들을 직접 실습하면서 익숙해져야겠다.
  • 내장 함수/메서드 정리
    len(), sum(), max() 같은 함수는 바로 떠올릴 수 있도록 하고, 문자열과 리스트 메서드는 실제 데이터 처리 과제를 할 때 빠르게 적용할 수 있도록 예시를 만들어봐야겠다.
  • 연산자 실습
    비교 연산자, 멤버십 연산자, 논리 연산자를 조합해 조건문을 구성하는 연습을 해두면 나중에 if, while 같은 제어문을 배울 때 훨씬 자연스럽게 연결될 것 같다.
반응형