Python

[1216 TIL] 파이썬 종합반 5강(유용한 문법들)

sjy0074 2024. 12. 16. 22:16

5강 수강 내용 강의안에 예시를 보아야 이해가 빠르므로 복붙이 많지만 이렇게라도 정리해놔야될듯 ㅠ

 

5-1. 파일 불러오기 및 저장하기

1) 파일 확장자

CSV 파일(.csv) / Excel 파일(.xls, .xlsx) / JSON 파일 ( .json) / 텍스트파일 (.txt , .dat 등 )

 

5-2. 패키지(라이브러리)사용하기

패키지 : 관련된 여러 개의 모듈을 포함하는 디렉토리.(패키지 안에는 일반적으로 라이브러리나 다른 패키지가 포함될 수 있음. 데이터수집, 전처리, 시각화, 모델링, 통계 분석 등 다양한 기능을 제공)

--> 장점 : 코드의 재사용성 높임, 개발 속도 빨라짐, 코드의 가독성 향상

**패키지는 맨 처음 파이썬을 사용할 때 필요한 패키지들을 맨 위에 한번에 불러놓고 사용하면 편리함

 

패키지 종류

(1) 판다스 pandas

데이터 조작과 분석을 위한 라이브러리.

데이터를 효과적으로 조작하고 분석할 수 있도록 도와준다.

 

import pandas as pd

df = pd. read_excel(file_address)

print(df)

 

(2) numpy

과학적 계사능ㄹ 위한 핵심 라이브러리로, 다차원 배열과 행렬 연산을 지원함.

 

import numpy as np

arr = np.array([1, 2, 3, 4, 5])

print(arr.mean())

 

(3) matplotlib

데이터 시각화를 위한 라이브러리로, 다양한 그래프와 플롯을 생성할 수 있다.

 

import matplotlib.pyplot as plt

plt,plot([1, 2, 3, 4], [1, 4, 9, 16])

plt.xlabel('X-axis')

plt.ylabel('Y-axis')

plt.show()

 

(4) seaborn

Matplotlib 을 기반으로 한 통계용 데이터 시각화 라이브러리. 보다 간편하고 아름다움!

 

(5)scikit-learn

머신 러닝 알고리즘을 사용할 수 있는 라이브러리(분류, 회귀, 군집화, 차원 축소 등 다양한 머신 러닝 기법 제공)

 

(6)scipy

과학기술 및 수학적인 연산을 위한 라이브러리

다양한 과학 및 공학 분야에서 활용(선형대수, 최적화, 신호 처리, 통계 분석)

 

(7) tensorflow

딥러닝 및 기계 학습을 위한 오픈소스 라이브러리(구글에서 개발)

그래프 기반의 계산을 통해 수치 계산을 수행(신경망을 구축하고 학습할 수 있음)

 

(8)pytorch

딥러닝을 위한 오픈소스 라이브러리(페북에서 개발) 

동적 계산 그래프를 사용하여 신경망을 구축하고 학습할 수 있음.

 

8-3. 포맷팅(Formatting ) 사용하기

f-string(문자와 변수를 함께 출력할 때 위와 같이 콤마(,)와 함께 쓰는것보다 간결~)

x = 10
print(f"변수 x의 값은 {x}입니다.")

 

<-> 다른 방법

x=10

print("변수 x의 값은 %d입니다." % (x))

 

but 별로 비효율적임.........안쓸래

 

8-4리스트 캄프리헨션

리스트를 간결하게 생성하는 방법 중 하나.(반복문과 조건문을 사용하여 리스트를 생성할 때 사용됨)

->코드 간결, 가독성 높아짐

->데이터 처리 및 변환에 유용함

##기본구조
[표현식 for 항목 in iterable if 조건문]

 

->표현식 : 각 항목에 대한 계산이나 변환을 의미

->항목 : 반복되는 값

->iterable : 반복 가능한 객체

if 조건문은 선택적으로 사용될 수 있으며, 조건이 참일 때만 해당 항목을 결과리스트에 추가함

 

 

8-5 람다 Lambda

 

람다 : 익명함수, 이름 없이 정의되는 간단한 함수

주로 한줄로 표현되며, 일반적인 함수 정의와는 달리 def 키워드를 사용하지 않고 lambda 키워드를 사용하여 정의됨

(주로 함수를 매개변수로 전달하는 함수형 프로그래밍에서 유용하게 활용)

-일반 함수의 경우 함수의 이름을 지정하여 호출할 수 있지만, 람다함수는 이름이 없기 때문에 한 번만 사용되거나 임시로 필요한 경우에 사용

-일반 함수의 경우 어떤 경우에도 사용할 수 있지만, 람다함수는 주로 함수를 매개변수로 받거나 함수를 반환하는 고차 함수, 즉 함수형 프로그래밍에서 사용

 

장점 : 간결성, 익명성, 함수형 프로그래밍, 가독성

 

람다 함수의 예시

<간단한 덧셈 함수>

add = lambda x, y: x + y
print(add(3,5))           ##출력 : 8

<제곱함수>

square = lambda x : x **2
print(square(4)).     ## 출력 : 16

<리스트의 요소 중 짝수만 필터링>

##filter(조건 함수, 반복 가능한 데이터)

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
print(even_numbers)  # 출력: [2, 4, 6, 8, 10]

 

8-6 

  • glob란?
    • glob 함수는 파일 시스템에서 파일을 찾을 때 사용되는 유용한 도구
    • 이 함수는 파일 이름의 패턴 매칭을 통해 파일을 검색하고, 일치하는 파일들의 리스트를 반환
    • 주로 파일 이름이나 확장자에 따라 파일을 필터링하는 데 사용
    • glob 함수를 사용하면 특정 패턴에 맞는 파일을 간단하게 찾을 수 있음, 이는 파일 시스템에서 파일을 검색하고 처리하는 데 유용
import glob

# 현재 경로의 모든 파일을 찾기
file_list1 = glob.glob('*')
# 단일 파일 패턴으로 파일을 찾기
file_list2 = glob.glob('drive')
# 디렉토리 안의 모든 파일 찾기
file_list3 = glob.glob('sample_data/*')
# 특정 확장자를 가진 파일만 찾기
file_list4 = glob.glob('sample_data/*.csv')

 

5-7 OS

 

5-8 split

  • 리스트의 split 메서드를 활용하면 문자열을 여러개로 쪼개는데 유용
  • 이러한 메서드를 알고 있으면 문자열로 되어 있는 파일 경로로 부터 파일 제목을 추출하는 등의 상황에서 아주 유용하게 사용
문자열을 공백 기준으로 분할하여 리스트로 변환하기
Python
복사
sentence = "Hello, how are you doing today?" words = sentence.split() print(words) # 출력: ['Hello,', 'how', 'are', 'you', 'doing', 'today?']
 
특정 구분자를 기준으로 문자열을 분할하여 리스트로 변환하기
Python
복사
data = "apple,banana,grape,orange" fruits = data.split(',') print(fruits) # 출력: ['apple', 'banana', 'grape', 'orange']
 
리스트의 각 항목을 문자열로 결합하기 (split 메서드는 아니지만 함께 알아두도록 해요!)
Python
복사
words = ['Hello,', 'how', 'are', 'you', 'doing', 'today?'] sentence = ' '.join(words) print(sentence) # 출력: Hello, how are you doing today?
리스트의 각 항목을 문자열로 결합하되, 특정 구분자를 사용하여 결합하기
Python
복사
fruits = ['apple', 'banana', 'grape', 'orange'] data = ','.join(fruits) print(data) # 출력: apple,banana,grape,orange
 
여러 줄로 이루어진 문자열을 줄 단위로 분할하여 리스트로 변환하기
Python
복사
text = """First line Second line Third line""" lines = text.split('\n') print(lines) # 출력: ['First line', 'Second line', 'Third line']
 
문자열을 공백으로 분할한 후 특정 개수의 항목만 가져오기
Python
복사
sentence = "Hello, how are you doing today?" words = sentence.split() first_three_words = words[:3] print(first_three_words) # 출력: ['Hello,', 'how', 'are']
문자열에서 공백을 제거한 후 문자열을 리스트로 변환하기
Python
복사
text = " Hello how are you " cleaned_text = text.strip() words = cleaned_text.split() print(words) # 출력: ['Hello', 'how', 'are', 'you']

 

 

**

  • split가 실전에서 사용되는 예시1 : 데이터 불러올때 경로 처리할때 split 사용
    • 아래의 예시에서는 **file_path**라는 문자열 변수에 데이터의 경로를 저장하고, split() 함수를 사용하여 문자열을 / 기준으로 분할합니다.
    • 이때, rsplit() 함수를 사용하여 오른쪽에서부터 최대 1회만 분할하도록 설정하여 파일명과 디렉토리로 나눕니다.
    • 분할된 결과를 각각 **directory**와 filename 변수에 할당하여 출력합니다.
    # 데이터의 경로를 문자열로 표현
    file_path = "/usr/local/data/sample.txt"
    
    # split() 함수를 사용하여 디렉토리와 파일명으로 분할
    directory, filename = file_path.rsplit('/', 1)
    print("디렉토리:", directory)  # 출력: 디렉토리: /usr/local/data
    print("파일명:", filename)    # 출력: 파일명: sample.txt
    
    • 이러한 방식으로 데이터의 경로를 문자열로 표현하고, 이를 split() 함수를 활용하여 필요한 정보를 추출할 수 있습니다.

 

5-9 클래스

파이썬 클래스(Class)는 객체 지향 프로그래밍(OOP)의 중요한 개념 중 하나

객체 지향 프로그래밍은 현실 세계의 사물을 모델링하여 프로그래밍하는 방법으로, 이를 통해 코드의 재사용성과 유지보수성을 향상시킬 수 있음

 

  • 클래스(Class)의 기본 구조
    • 파이썬에서 클래스는 다음과 같은 형태로 정의됩니다.
    class ClassName:
        def __init__(self, parameter1, parameter2):
            self.attribute1 = parameter1
            self.attribute2 = parameter2
    
        def method1(self, parameter1, parameter2):
        # 메서드 내용 작성
            pass
    
    • 여기서 __init__ 메서드는 클래스의 생성자로, 객체가 생성될 때 호출되며 초기화 작업을 수행합니다.
    • 클래스 내부의 메서드들은 클래스의 동작을 정의하는 함수입니다.
    • 메서드의 첫 번째 매개변수로 self를 반드시 사용해야 합니다. 이는 해당 메서드가 속한 객체를 가리킵니다.
클래스와 객체(Object)의 관계
 
클래스는 객체를 만들기 위한 틀 또는 설계도입니다. 객체는 이러한 클래스를 이용하여 생성됩니다.
 
예를 들어, Person 클래스를 정의하면 이 클래스를 사용하여 여러 사람 객체를 만들 수 있습니다.
Python
복사
class Person: def __init__(self, name, age): self.name = name self.age = age # 객체 생성 person1 = Person("Alice", 30) person2 = Person("Bob", 25)

 

  • 다형성(Polymorphism)
    • 다형성은 같은 이름의 메서드가 서로 다른 클래스에서 다른 기능을 수행하도록 하는 개념입니다.
    class Animal:
        def sound(self):
            print("Some generic sound")
    
    class Dog(Animal):
        def sound(self):
            print("Woof")
    
    class Cat(Animal):
        def sound(self):
            print("Meow")
    
    # 다형성 활용
    animals = [Dog(), Cat()]
    for animal in animals:
        animal.sound()
    
    • 위 코드에서 Animal 클래스의 sound 메서드를 각각의 하위 클래스인 **Dog**와 **Cat**에서 재정의하여 다른 동작을 수행하게 됩니다