251030_BootCamp Day 9_파이썬의 여러 가지 기능들

2025. 10. 30. 21:19TIL

1. 오늘의 느낀점

코딩이라는 것이 사실은 설치하는 것부터가 일이다.

파이썬을 쓰려면 파이썬도 깔아야 되고, IDLE에서 작성하지 말고 VS Code 쓰라고 하고, VS Code도 그냥 쓰지 말고 Jupyter Notebook도 설치해야 하고.. 코딩을 시작하기도 전에 벽을 하나 만나는 느낌이다.

Pycharm도 써보고, VS Code도 써보고, Colab도 써보고, 일반 Jupyter Notebook도 다 써봤는데 그냥 VS Code에 Jupyter Notebook 연결해서 쓰는 것이 제일 깔끔한 것 같다. 로컬 파일도 편하게 쓸 수 있고.

SQL은 이제 프로그래머스 난이도 LV.3을 거의 다 풀어가고 있고, 부트캠프도 이제 파이썬으로 넘어가고 있어서 SQL은 추가적인 개념만 더 공부하고 매일 조금씩 복습하는 느낌으로 진행하고, 파이썬을 더 많이 공부해야 할 것 같다.

 

2. 파이썬의 좋은 기능들

1) 파일 불러오기 & 파일에 내용 쓰기 (load, write)

파이썬에서 파일을 불러오고 싶으면 pandas 라이브러리에서 파일 읽기 함수를 이용하면 된다.

#파일을 불러오는 함수
import pandas as pd
csv_load = pd.read_csv("file.csv") # CSV 파일 불러오기
xlsx_load = pd.read_excel("file.xlsx") # XLSX 파일 불러오기
json_load = pd.read_json("file.json") # JSON 파일 불러오기
txt_load = pd.read_csv("file.txt", delimiter='\t') # TXT 파일 불러오기

csv, xlsx, json, txt 파일 등 다양한 종류의 파일을 불러올 수 있고 데이터로 활용할 수 있다.

그리고 pandas의 DataFrame 함수를 이용해 data를 만들고, 이를 파일에 적용할 수 있다.

# Dataframe으로 변환
data = {
    "Name" : ["John", "Emily", "Michael"],
    "Age" : [30, 25, 35],
    "City" : ["New York", "Los Angeles", "Chicago"]
} #딕셔너리 형태의 data 생성

df = pd.DataFrame(data) #data를 DataFrame 형태로 변환

이때 파일에 데이터를 적용하기 위해서는 저장할 경로를 명확히 해주어야 한다.

경로를 설정하는 방식에는 여러 가지가 있겠지만, 로컬에서 특정 폴더에 저장하는 경우면 폴더명까지의 경로를 하나의 변수 (root)로 저장하고, 저장할 파일명+확장자를 다른 변수에 넣어 파일 저장 함수에 사용하면 된다.

# Dataframe을 csv 파일로 저장하는 법
root = "C:/Users/hongildong/Desktop/notebook_jupyter/" # 폴더까지의 경로 저장
excel_file_path = root + "practice_data_1.csv" # 파일명.확장자만 root에 추가해 파일 경로 형성
df.to_csv(excel_file_path, index = False) # csv 파일로 df를 해당 경로에 저장

 

JSON 파일의 경우 조금 다른 방식을 이용해야 한다.

참고 : JSON은 JavaScript Object Notation의 약자로, 사람이 읽을 수도 있고, 시스템도 구문 분석이 가능하게 데이터를 저장한 텍스트 형태의 파일이다. (출처 : Oracle)

import json

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

json_file_path = root + "practice_data_3.json"

with open(json_file_path, 'w') as jsonfile: 
#with를 쓰면 json 파일을 열고 자동으로 닫아준다. 안 쓰면 직접 닫아줘야 함.
    json.dump(data, jsonfile, indent = 4) 
    #dump : json 파일에 덮는 역할. indent : 들여쓰기

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

with는 파일을 자동으로 열고 닫아주는 기능을 하는 명령어이다.

open(json_file_path, 'w')를 통해 파일을 쓸 수 있게 불러오는 명령어이다. ('w'는 write의 약자)

json.dump를 이용해 data를 jsonfile에 덮을 수 있고, indent를 통해 들여쓰기도 맞출 수 있다.

 

Text 파일은 다음과 같은 형태로 만들 수 있다.

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

text_file_path = root + "practice_data_4.txt"
with open(text_file_path, "w") as textfile: 
#텍스트 파일을 읽기 모드로 연다.
    for key, item in data.items(): 
    #dictionary data에 있는 key, value를 items() 메서드를 이용해 불러온다.
        textfile.write(key + ":" + str(item) + "\n") 
        #textfile.write 메서드를 통해 텍스트 파일에 작성한다.

print("텍스트 파일이 생성되었습니다.")

텍스트 파일을 읽기 모드로 여는 것은 동일한데,

data가 dictionary 형태이므로 data.items()를 이용해 data를 (key, value) 형태로 불러오고, key, value를 textfile.write를 이용해 작성한다. 

 

2) f-string 포맷팅 (formatting)

x = 10
print(f"변수 x의 값은 {x}입니다.") #f-string 포맷팅

기존에 print 함수에 변수의 값과 문자열을 함께 쓰고 싶었다면 콤마로 분리해 하나하나씩 작성해야 했는데, f-string 포맷을 사용하면 그렇게 하지 않고도 쉽게 출력문을 작성할 수 있다.

변수가 하나라면 괜찮겠지만, 여러 개가 있다면 f-string이 훨씬 편하고 더 다양한 기능을 많이 제공한다.

lne = 2.7182818
print(f"{lne:.2f}") 
#2.72 (소수점 3째자리에서 반올림)
print(f"{lne:<20}") 
#2.7182818            (20칸 왼쪽 정렬)
print(f"{lne:>20}") 
#           2.7182818 (20칸 오른쪽 정렬)
print(f"{lne:*>20}") 
#***********2.7182818 (20칸 오른 쪽 정렬. 나머지는 *을 채움.)
print(f"{lne:0>10.2f}") 
#0000002.72 (10칸 오른 쪽 정렬, 소수점 3째자리에서 반올림. 나머지는 0을 채움.)
print(f"{lne=}") 
#lne=2.7182818 #self-documenting expressions

f-string에서는 {변수}가 기본 형태고, 변수 뒤에 :(콜론)을 쓰고 다양한 명령어를 통해 출력할 형식을 지정할 수 있다.

 

3) lambda

lambda는 임시로 함수를 만들어야 할 때 사용할 수 있다.

보통 코딩을 할 때 맨 위에는 필요한 라이브러리들을 불러놓고, 그 다음 함수들을 정의한 뒤 코드를 짜게 되는데,

잠깐 다른 함수가 필요하다던지, 아니면 함수를 살짝 바꿔야 하는 경우가 있을 수 있다.

이럴 때 함수를 변경하는 것보단 lambda를 이용해 임시로 함수를 만들면 유용하게 사용할 수 있다.

add = lambda x, y: x + y**2
print(add(3, 5))
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_numbers = list(filter(lambda x: x % 2 == 0, numbers)) 
#filter(조건 함수, 반복 가능한 데이터) : 반복 가능한 데이터 중 조건 함수를 만족하는 경우만 추출
print(even_numbers)

numbers = [1, 2, 3, 4, 5]
squared_numbers = list(map(lambda x: x ** 2, numbers)) 
#map(함수, 반복 가능한 데이터) : 반복 가능한 데이터의 모든 값에 대해 함수를 적용
print(squared_numbers)

filter와 map 같은 함수는 함수와 반복 가능한 데이터를 input으로 넣어줘야 하는데, 이때 마땅히 넣을 함수가 정의되지 않은 경우 lambda를 이용해 임시로 함수를 만들어 사용할 수 있다.

 

4) 라이브러리 (Library)

파이썬의 가장 큰 장점 중 하나는 매우 다양한 기능을 제공하는 더 다양한 종류의 라이브러리가 있다는 것이다.

그 중에 데이터 분석가가 많이 사용하는 것은 pandas, numpy, matplotlib, seaborn, plotly 등이 있다.

pandas : 데이터 조작과 분석, 전처리를 위한 라이브러리. 위에서 봤던 DataFrame과 같은 함수를 이용해 데이터를 전처리, 후처리할 수 있다.

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

import matplotlib.pyplot as plt

x_value = []
y_value = []
for i in range(-10, 11):
    x_value.append(i)
for j in range(-10, 11):
    y_value.append(j ** 2)
plt.plot(x_value, y_value)
plt.xlabel("X-axis")
plt.ylabel("Y-axis")
plt.show()

위 코드의 결과. x^2의 그래프를 x=-10부터 x=10까지 표현.

seaborn : 데이터 시각화를 위한 라이브러리. matplotlib보다 통계적인 데이터를 시각화하는데 유용하다.

import pandas as pd
import seaborn as sns

data_sample = pd.DataFrame({"x":[1, 2, 3, 4], "y":[1, 4, 9, 16]})
sns.barplot(data=data_sample, x='x', y='y')

위 코드의 결과 : 바 형태의 그래프로 표현

이 외에 머신러닝을 위해서 scikit-learn, tensorflow, pytorch 등의 라이브러리를 쓸 수 있다.

 

데이터 분석을 위해서 파이썬의 기초적인 문법도 중요하지만, 라이브러리를 다양하게 많이 다룰 줄 알아야 하고 잘 다룰 줄 아는 것이 중요할 것 같다. 통계나 수학적인 지식도 많이 필요한 것 같아서 그 부분도 준비를 하는 게 필요할 것 같다.

 

5) 리스트 컴프리헨션 (List comprehension)

리스트 컴프리헨션은 파이썬에서 리스트를 간결하게 생성할 수 있는 방법으로, 반복문과 조건문을 사용해 리스트를 간단하게 생성할 수 있다.

기본 구조 : [표현식 for 항목 in 반복성데이터 if 조건문] (조건이 있을 경우 조건문을 추가한다.)

squares = [x**2 for x in range(1, 11)]
print(squares)
#[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

append의 사용 없이 빠르게 리스트에 반복문의 내용을 추가할 수 있다.

만약 짝수인 경우만 제곱해서 리스트에 넣고 싶다면,

squares_even = [x**2 for x in range(1, 11) if x % 2 == 0]
print(squares_even)
#[4, 16, 36, 64, 100]

위와 같이 if 조건문을 추가할 수 있다.