TIL/Python

TIL #12 <파일 불러오기, 패키지, lambda, filter, map>

jojoon2786 2024. 7. 10. 20:27

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

1). 파일 확장자
- CSV 파일 (.csv)
데이터를 쉼표(,)로 구분하여 저장하는 형식

- Excel 파일 (.xls, .xlsx)
마이크로소프트 엑셀의 형식

- JSON 파일 (.json)
자바스크립트노테이션, 데이터를 저장하는 간단한 형식

- 텍스트 파일 (.txt, .dat 등)

2). 판다스에서 제공하는 함수를 이용하여 불러올 수 있음.
- csv 파일의 경우
read_csv() 함수 사용

import pandas as pd
df = pd.read_csv(파일경로)

- Excel  파일의 경우
read_excel() 함수 사용

위의 코드에서 pd.read_excel(파일경로) 만 바꿔주면 됨.
아래도 위와 동일

- json 파일의 경우
read_json

- 텍스트 파일의 경우엔 read_csv 함수를 사용

3). 파일 저장하기

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

엑셀파일의 경우 2번째 줄 data.excel
3번째 줄 df..to_excel로 수정, 나머지 동일

json 파일의 경우는 with으로 열어줘야 함.

json_file_path = '/content/sample_data/data.json'

# json 파일을 쓰기모드로 열어서 data를 거기에 덮어씌우게 됩니다.
with open(json_file_path, 'w') as jsonfile:
    json.dump(data, jsonfile, indent=4)

dump > data를 jsonfile에 덮어 씌워줌.
indent > 들여쓰기
jsonfile > 파일명

텍스트 파일

text_file_path = '/content/sample_data/data.txt'

with open(text_file_path, 'w') as textfile:
    for key, item in data.items():
        textfile.write(str(key) + " : " + str(item) + '\n')

 

2. 패키지 사용하기

 

import 패키지명 (as 별칭)

1) 패키지 종류
- pandas : 데이터 조작/분석 라이브러리

import pandas as pd
df = pd.read_excel(file_address)
print(df)

- numpy : 과학적 계산 라이브러리, 다차원 배열과 행렬 연산을 지원

import numpy as np
arr = np.array([1, 2, 3, 4, 5])
print(arr.mean())

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

- seaborn : Matplotlib을 기반으로 한 통계용 데이터 시각화 라이브러리

import seaborn as sns
import pandas as pd
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 : 머신 러닝 알고리즘을 사용할 수 있는 라이브러리, 분류, 회귀, 군집화, 차원 축소 등 다양한 머신 러닝 기법을 제공

from sklearn.datasets import load_iris
from sklearn.linear_model import LinearRegression

# Iris 데이터셋 불러오기
iris = load_iris()

# Iris 데이터셋에서 특정 범위의 데이터 슬라이싱하기
X_train = iris.data[:,:-1]  # 데이터 값들 추출
print("학습 데이터:", X_train)
y_train = iris.data[:,-1:]  # 정답값 추출
print("학습 데이터:", y_train)

model = LinearRegression()
model.fit(X_train, y_train)

- statsmodels : 통계 분석을 위한 라이브러리, 회귀 분석, 시계열 분석, 비모수 통계 등 다양한 통계 기법을 제공

import statsmodels.api as sm
model = sm.OLS(y_train, X_train)
result = model.fit()
print(result.summary())

- scipy : 과학기술 및 수학적인 연산을 위한 라이브러리, 다양한 과학 및 공학 분야에서 활용

import numpy as np
from scipy.integrate import quad

# 적분할 함수 정의
def integrand(x):
    return np.exp(-x ** 2)

# 정적분 구간
a = 0
b = np.inf

# 적분 계산
result, error = quad(integrand, a, b)

print("결과:", result)
print("오차:", error)

- tensorflow : 딥러닝 및 기계 학습을 위한 오픈소스 라이브러리, 그래프 기반의 계산을 통해 수치 계산을 수행하며, 신경망을 구축하고 학습할 수 있음.

import tensorflow as tf

input_size = 3

model = tf.keras.Sequential([
    tf.keras.layers.Dense(10, activation='relu', input_shape=(input_size,)),
    tf.keras.layers.Dense(1)
])
model.compile(optimizer='adam', loss='mse')

- pytorch : 딥러닝을 위한 오픈소스 라이브러리, 동적 계산 그래프를 사용하여 신경망을 구축하고 학습할 수 있음.

import torch
import torch.nn as nn
class Model(nn.Module):
    def __init__(self):
        super(Model, self).__init__()
        self.fc1 = nn.Linear(input_size, hidden_size)
        self.fc2 = nn.Linear(hidden_size, output_size)
    def forward(self, x):
        x = torch.relu(self.fc1(x))
        x = self.fc2(x)
        return x

 

- glob
> glob 함수는 파일 시스템에서 파일을 찾을 때 사용
-
import glob
file_list1 = glob.glob('*')
첫 번째 glob => 패키지
두 번째 glob => 함수명

 **참고!) 폴더(디렉토리)에 대한 유용한 개념들!**
    - 폴더를 구분할때는 ‘/’기호를 사용하면 됩니다!
    - 파일명을 입력해줄 때 반드시 확장자도 함께 입력해주어야 합니다!
    - 일치하는 파일이나 디렉토리의 패턴을 나타낼 때 와일드카드 문자를 사용됩니다. 주로 파일이나 디렉토리의 이름을 검색하거나 일괄적으로 처리할 때 유용하게 사용됩니다.
        - *** : 0개 이상의 모든 문자와 일치합니다.**
            - **ex) *.txt : 해당 디렉토리에서 텍스트파일 모두 해당**
        - 그밖의 와일드카드 문자로 ?, [], {} 등이 있습니다.
        - [] : 대괄호 안에 포함된 문자 중 하나와 일치합니다.
        - {} : 중괄호 안에 포함된 문자열 중 하나와 일치합니다.

os : os모듈은 운영체제와 상호 작용하기 위한 다양한 함수들을 제공

주요기능
1) 파일 및 디렉토리 관리
#현재 작업중인 디렉토리 가져오기
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(file_adress)

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

2) 경로 관리
# 파일 목록(경로) 가져오기
import os
files = os.listdir('/content')
print(files)

#경로 조작
import os
path = os.path.join('/content', 'sample_data', 'mnist_test.csv')
print(path)

3) 환경 변수 관리
4) 실행 관리

3. lambda, filter, map

1) lambda

- 이름 없이 정의되는 간단한 함수
- 주로 함수를 매개변수로 전달하는 함수형 프로그래밍에서 유용하게 활용됨.

기본구조
lambda 매개변수 : 수식
ex) add = lambda x,y: x+y

2) filter

- 반복가능한 데이터로부터 값을 가져와 조건에 대해 True인 값만 반환

기본구조
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]

 

3) map

- 반복가능한 데이터로부터 값을 가져와 모든 x의 값을 반환

 

기본구조

map(함수, 반복가능한 데이터)