데이터 분석 TIL - 리스트 컴프리헨션, lambda, glob, os

테리·2025년 10월 29일
post-thumbnail

1. 학습 키워드

리스트 컴프리헨션, lambda, glob, os

2. 학습 내용

리스트 컴프리헨션

  • 리스트를 간결하게 생성하는 방법중의 하나
  • 조건문, 반복문을 사용해 리스트를 생성
  • 코드의 가독성을 높여줌
ex)
# 예시: 리스트에서 짝수만 선택하여 제곱한 리스트 생성
even_squares = [x**2 for x in range(1, 11) if x % 2 == 0]
print(even_squares)  # 출력: [4, 16, 36, 64, 100]

# 예시: 리스트 컴프리헨션을 중첩하여 2차원 리스트 생성
matrix = [[i for i in range(1, 4)] for j in range(3)]
print(matrix)  # 출력: [[1, 2, 3], [1, 2, 3], [1, 2, 3]]

lambda

  • 간결한 함수
  • 임시적으로 필요한 경우에 사용함
ex)
add = lambda x, y: x+ y
print(add(3, 5))

square = lambda x: x**2
print(square(2))

filter() 함수 사용: 조건에 충족하는 데이터만 필터링

  • filter(조건 함수, 반복 가능한 데이터)
# 짝수만 출력
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_numbers = list(filter(lambda x: x%2 == 0, numbers))

map() 함수 사용: 여러개의 값을 받아 각 함수에 값을 적용한 결과를 반환

  • map(조건 함수, 반복 가능한 데이터)
numbers = [1, 2, 3, 4, 5]
squared_numbers = list(map(lambda x: x**2, numbers))

glob

  • glob는 파일을 찾을 때 유용하게 사용하는 함수.
import glob

glob.glob('*'): 현재 경로의 모든 파일과 폴더를 리스트로 출력
glob.glob('drive'): drive라는 이름의 파일만
glob.glob('drive*'): drive로 시작하는 모든 파일
glob.glob('sample_data/*'): sample_data 디렉토리 안의 모든 파일
glob.glob('sample_data/*.csv'): sample_data 디렉토리 안의 모든 csv 파일

os

  • 운영 체제와 상호작용 하기 위한 다양한 함수를 제공하는 라이브러리.
  • 디렉토리 탐색에 더해서 폴더 생성, 파일명 변경, 삭제 등등

현재 작업 디렉토리 가져오기

import os
cwd = os.getcwd()
print(cwd)

디렉토리 생성(폴더 생성)

import os
os.mkdir('sample_data/new_directory')

파일명 변경

import os
os.rename('sample_data/new_directory', 'sample_data/new_directory2')

파일 삭제

import os
os.remove('sample_data/data.csv')

파일 경로 가져오기

import os
files = os.listdir('/content')
print(files)

경로 조작

import os
path = os.path.join('/content', 'sample_data', 'mnist_test.csv')
print(path)

3. 배운점

  1. lambda 함수가 아직은 익숙하지 않다. 잘 사용하지 않다보니 사용 하겠다는 생각이 잘 안들고 막상 사용하려고 보면 어떻게 했더라.. 하면서 찾아보게 된다. 그래도 데이터 프레임에서는 df['price'].apply(lambda x: x*2) 이런 형식으로 비교적 자주 사용하긴 했는데 그렇지 않은 경우를 보니 또 헷갈리기도 했다.
  2. glob는 진짜 자주 사용하는 것 같은데 이것 또한 익숙하지가 않아 막상 사용하려고 하면 찾아보게 되는것 같다. 간단한 만큼 외워두면 좋을 것 같다.
  3. 이전에 glob와 os 라이브러리를 막 사용하다 보니 차이를 잘 몰랐었는데 os는 폴더 생성과 수정 관련 기능이 있는 측면에서 차이가 있다는 것을 알게됨.

0개의 댓글