[Python] 유용한 문법들(심화)

yeji·2024년 10월 18일
0

Python

목록 보기
6/36

하나도 모르겠지만... 알면 좋다는 것 뿐이니 그렇구나 하고 넘어가기

파일

파일 불러오기

  • 파일 불러오는 함수
import pandas as pd
df = pd.read_csv('file.csv') 

# 확장자(csv) 부분만 잘 바꾸면 됨
  • 구글 코랩
# 왼쪽의 파일 -> 드라이브 폴더 모양 -> 드라이브 마운트 먼저 해야함

# 마우스로 하고 싶지 않다면 아래의 드라이브 마운트 코드 입력
from google.colab import drive
drive.mount('/content/drive')
# 아래는 제가 데이터 파일을 넣은 구글 드라이브 경로에요!
# 제 구글 드라이브 안에 '스파르타코딩클럽_데이터분석을위한파이썬'이라는 폴더가 있는데
# 그 안에 파일을 넣은 상황 입니다.
# 여러분의 폴더 이름에 맞게 경로를 바꾸어 보세요!
root = "/content/drive/MyDrive/스파르타코딩클럽_데이터분석을위한파이썬"
# 그리고 위 경로에 해당 파일 이름도 함께 이어 붙여서 파일 경로를 하나 완성합니다
file_address = root + "/ssec2403(통계표).xlsx"

# 위에서 지정해 놓은 파일 경로를 활용하여 불러오기만 하면 끝!
import pandas as pd
df = pd.read_excel(file_address)

파일 저장하기

import pandas as pd

data = {
    'Name': ['John', 'Emily', 'Michael'],
    'Age': [30, 25, 35],
    'City': ['New York', 'Los Angeles', 'Chicago']
}

df = pd.DataFrame(data)
excel_file_path = '/content/sample_data/data.csv'
df.to_csv(excel_file_path, index = False)

print("csv 파일이 생성되었습니다.")

# 뒤에 .xlsx로 바꾸면 엑셀로 저장 가능

패키지(라이브러리)

  • 여러개의 모듈(함수)을 포함하는 디렉토리(폴더)
# 아래와 같이 보통은 필요한 패키지를 한번에 다 불러온 다음 코딩을 진행합니다

import pandas as pd
import numpy as np
import tensorflow as tf
import matplotlib.pyplot as plt
import seaborn
  • 종류
    pandas : 데이터 조작과 분석을 위한 라이브러리
    numpy : 컬럼이 많을 때 유용, 다차원 배열과 행렬 연산 지원
    matplotlib : 데이터 시각화를 위한 라이브러리, 다양한 그래프와 플롯 생성
    seaborn : 통계용 데이터 시각화 라이브러리, 더 예쁨
    scikit-learn : 머신 러닝 알고리즘을 사용할 수 있는 라이브러리
    statsmodels : 통계 분석을 위한 라이브러리
    scipy : 과학기술 및 수학적인 연산을 위한 라이브러리
    tensorflow : 딥러닝 및 기계 학습을 위한 오픈소스 라이브러리로 구글에서 개발
    pytorch : 딥러닝을 위한 오픈소스 라이브러리로 Facebook에서 개발

포맷팅(formatting)

  • 문자와 변수를 함께 출력할 때 사용
  • 세가지 방법이 있음, f-string 추천
name = "Alice"
age = 25

# %를 사용한 형식 지정
print("이름: %s, 나이: %d세" % (name, age))

# format() 메서드를 사용한 형식 지정
print("이름: {}, 나이: {}세".format(name, age))

# f-string을 사용한 형식 지정 (Python 3.6 이상) -> 추천
print(f"이름: {name}, 나이: {age}세")

리스트 캄프리헨션

  • 리스트를 간결하게 생성하는 방법 중 하나
  • 반복문과 조건문을 사용하여 리스트를 생성할 때 사용
# 기본적인 구조
[표현식 for 항목 in iterable if 조건문]

# 예시: 1부터 10까지의 숫자를 제곱한 리스트 생성
squares = [x**2 for x in range(1, 11)]
print(squares)  # 출력: [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

# 예시: 리스트에서 짝수만 선택하여 제곱한 리스트 생성
even_squares = [x**2 for x in range(1, 11) if x % 2 == 0]
print(even_squares)  # 출력: [4, 16, 36, 64, 100]

# 예시: 문자열 리스트에서 각 문자열의 길이를 저장한 리스트 생성
words = ["apple", "banana", "grape", "orange"]
word_lengths = [len(word) for word in words]
print(word_lengths)  # 출력: [5, 6, 5, 6]

# 예시: 리스트 컴프리헨션을 중첩하여 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

  • 익명 함수로 이름 없이 정의되는 간단한 함수
  • def를 사용하지 않고 lambda 키워드 사용
  • 한줄로 표현하고 싶을 때 사용
# 덧셈 함수 예시
add = lambda x, y: x + y
print(add(3, 5))  # 출력: 8

# 리스트의 요소 중 짝수만 필터링
# 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]


# 리스트의 각 요소에 대한 제곱
# map(함수, 반복 가능한 데이터) : 각각의 값에 함수를 적용한 결과를 반환
numbers = [1, 2, 3, 4, 5]
squared_numbers = list(map(lambda x: x ** 2, numbers))
print(squared_numbers)  # 출력: [1, 4, 9, 16, 25]

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')

os 모듈

  • 운영 체제와 상호작용하기 위한 다양한 함수 제공
  • 파일 시스템을 관리하고 디렉토리를 탐색하고 파일을 조작하는데 사용

split

  • 문자를 여러개로 쪼개는데 유용
# 특정 구분자를 기준으로 문자열을 분할하여 리스트로 변환
data = "apple,banana,grape,orange"
fruits = data.split(',')
print(fruits)  # 출력: ['apple', 'banana', 'grape', 'orange']

# 리스트의 각 항목을 문자열로 결합 -> split는 아니지만 알아두기
words = ['Hello,', 'how', 'are', 'you', 'doing', 'today?']
sentence = ' '.join(words)
print(sentence)  # 출력: Hello, how are you doing today?

# 문자열을 공백으로 분할한 후 특정 개수의 항목만 가져오기
sentence = "Hello, how are you doing today?"
words = sentence.split()
first_three_words = words[:3]
print(first_three_words)  # 출력: ['Hello,', 'how', 'are']

클래스

  • 객체 지향 프로그래밍의 중요한 개념 중 하나
  • 함수 여러개의 집합 느낌?
# 기본으로 꼭 들어가야 하는 부분
class ClassName:
    def __init__(self, parameter1, parameter2):
        self.attribute1 = parameter1
        self.attribute2 = parameter2

    def method1(self, parameter1, parameter2):
    # 메서드 내용 작성
        pass

불리언 인덱싱(Boolean indexing)

  • 조건에 따라 요소를 선택하는 방법 중 하나
  • Pandas에서 데이터를 조건에 맞게 선택할 때 많이 사용
import numpy as np

# 배열 생성
arr = np.array([1, 2, 3, 4, 5])

# 불리언 배열 생성 (조건에 따라 True 또는 False 값을 갖는 배열)
condition = np.array([True, False, True, False, True])

# 불리언 인덱싱을 사용하여 조건에 맞는 요소 선택
result = arr[condition]

# 결과 출력
print("Result using boolean indexing:", result)  # 출력: [1 3 5]

# 불리언 인덱싱을 사용하여 배열에서 짝수인 요소만 선택
evens = arr[arr % 2 == 0]

# 결과 출력
print("Even numbers using boolean indexing:", evens)  # 출력: [2 4]

데코레이션

  • 기존의 함수를 따로 수정하지 않고도 추가 기능을 넣고 싶을 때 사용
def decorator_function(original_function):
    def wrapper_function(**kwargs):
        # 함수 호출 전에 실행되는 코드
        result = original_function(**kwargs)
        # 함수 호출 후에 실행되는 코드
        return result
    return wrapper_function

에러 대처법

  • 기본 에러문
Traceback (most recent call last):
    File "codeit.py", line 12, in <module> # 어떤 파일에서 몇번째 줄에 에러가 떴는지를 알려줌
    numbers[right] = temp[left] # 어떤 코드가 잘못 되었는지를 알려줌
TypeError: 'int' object is not subscriptable  # 에러의 종류 : 에러에 대한 세부 정보
  • 에러 종류
    SyntaxError(구문 오류) : 문법 오류, 괄호나 따옴표 혹은 쉼표 등
    IndentationError : 들여쓰기 오류
    NameError(이름 오류) : 정의되지 않은 변수를 언급할 때
    TypeError : 타입 오류
    IndexError(인덱스 오류) : 없는 인덱스를 가져오려고 할 때
    KeyError(키 오류) : 딕셔너리에 존재하지 않는 키를 가져오려고 할 때
    FileNotFoundError : 파일을 찾을 수 없음 오류, 경로가 잘못되었을 때
profile
👋🏻

0개의 댓글