본문 바로가기
Python 기초

python 파이썬 각종 파일 불러오기 txt, mat, csv, xls, JSON, 이미지

by LINDSEY_ 2024. 2. 15.
반응형

Python에서는 다양한 유형의 파일을 불러올 수 있습니다. 여기서는 가장 일반적으로 사용되는 몇 가지 파일 유형을 불러오는 방법에 대해 소개하겠습니다.



1. 텍스트 파일 불러오기: Python의 내장 함수 `open()`을 사용하여 텍스트 파일을 읽고 쓸 수 있습니다. `with` 문을 사용하면 파일을 자동으로 닫아주기 때문에 매우 편리합니다. 텍스트 파일을 불러올 때, 내용은 보통 str (문자열) 형태로 저장됩니다. 파일의 내용을 한 번에 읽으면 전체 내용이 하나의 큰 문자열로 저장됩니다. 줄 단위로 읽을 경우, 각 줄이 문자열의 항목으로 구성된 리스트 형태로 저장될 수 있습니다.

with open('example.txt', 'r') as file:
    content = file.read()
    print(content)
content = '여기에는 파일의 전체 내용이 담긴 문자열이 있습니다.'
lines = ['첫 번째 줄 내용', '두 번째 줄 내용', '세 번째 줄 내용']  # 줄 단위로 읽은 경우



2. CSV 파일 불러오기: `csv` 모듈을 사용하거나 `pandas` 라이브러리를 사용하여 CSV 파일을 손쉽게 불러올 수 있습니다.

- `csv` 모듈 사용 예시:

import csv

with open('example.csv', mode='r') as file:
    csv_reader = csv.reader(file)
    for row in csv_reader:
        print(row)

csv 모듈을 사용하면, 각 줄을 리스트로, 각 리스트의 항목은 해당 줄의 각 셀(열) 값을 나타냅니다. 따라서 변수는 리스트의 리스트 형태가 됩니다.

rows = [['Name', 'Age', 'City'], ['Alice', '24', 'New York'], ['Bob', '30', 'Los Angeles']]  # csv 모듈 사용


- `pandas` 라이브러리 사용 예시:

import pandas as pd

df = pd.read_csv('example.csv')
print(df)

pandas를 사용하면, 데이터는 DataFrame 객체로 저장됩니다. DataFrame은 2차원 레이블이 지정된 데이터 구조체로, 열과 행으로 구성되어 있습니다.

# pandas 사용시
import pandas as pd
df = pd.DataFrame(data=rows[1:], columns=rows[0])



3.Excel 파일 불러오기: `pandas` 라이브러리에 있는 `read_excel()` 함수를 사용하여 Excel 파일을 불러올 수 있습니다.

import pandas as pd

df = pd.read_excel('example.xlsx')
print(df)

pandas 라이브러리를 사용하여 Excel 파일을 불러오면, 데이터는 DataFrame 객체로 저장됩니다. Excel 파일의 경우, 여러 시트를 포함할 수 있으며, 각 시트는 별도의 DataFrame으로 불러올 수 있습니다.

import pandas as pd
df = pd.DataFrame()  # Excel 파일의 내용이 담긴 DataFrame



4. JSON 파일 불러오기: `json` 모듈을 사용하여 JSON 파일을 파싱할 수 있습니다.

import json

with open('example.json', 'r') as file:
    data = json.load(file)
    print(data)

JSON 파일을 불러오면, 데이터는 보통 중첩된 딕셔너리(dict) 형태로 저장됩니다. JSON 구조에 따라 리스트와 딕셔너리가 중첩될 수 있으며, 이는 JSON 파일의 구조에 따라 달라집니다.

data = {
    "name": "Alice",
    "age": 24,
    "city": "New York",
    "languages": ["English", "Spanish"]
}  # JSON 파일의 내용이 담긴 딕셔너리

 


5. 이미지 파일 불러오기: `Pillow` 라이브러리(이전에는 `PIL`로 알려짐)를 사용하여 이미지 파일을 불러올 수 있습니다.

from PIL import Image

image = Image.open('example.png')
image.show()

Pillow 라이브러리를 사용하여 이미지 파일을 불러오면, 이미지는 Image 객체로 저장됩니다. 이 객체를 통해 이미지에 대한 다양한 조작과 처리가 가능합니다.

from PIL import Image
image = Image.open('example.png')  # Image 객체

 

 

 

 

6. mat 파일 불러오기 : MAT 파일은 MATLAB에서 사용하는 파일 포맷으로, MATLAB 작업 환경의 변수를 저장합니다. Python에서 MAT 파일을 불러오거나 저장하려면, 주로 scipy.io 모듈의 loadmat 및 savemat 함수를 사용합니다. 이를 통해 Python에서 MATLAB 데이터를 쉽게 읽고 쓸 수 있으며, 데이터 분석, 시각화, 과학 연산 등에 활용할 수 있습니다.

from scipy.io import loadmat

data = loadmat('file.mat')

 

scipy.io.savemat 함수를 사용하여 Python 환경의 변수를 MAT 파일로 저장할 수 있습니다. 이 함수는 딕셔너리 형태의 변수를 받아 MATLAB 호환 파일로 저장합니다.

from scipy.io import savemat

savemat('file.mat', {'variable_name': variable})

 

`loadmat` 함수로 불러온 `data` 변수는 Python 딕셔너리(`dict`) 형태로 저장됩니다. 이 딕셔너리는 MATLAB 파일 내에 저장된 변수들을 키(key)로, 해당 변수에 저장된 데이터를 값(value)으로 가집니다. `data` 딕셔너리의 구조는 다음과 같습니다:

- 키(Key): MATLAB 파일 내의 변수 이름을 나타냅니다. 문자열 형태입니다.
- 값(Value): 각 키에 해당하는 MATLAB 변수의 데이터입니다. 데이터 타입은 저장된 내용에 따라 다양할 수 있으나, 주로 NumPy 배열(ndarray)로 저장됩니다. MATLAB 구조체는 또 다른 딕셔너리로, 셀 배열은 리스트나 NumPy 객체 배열로, 그리고 기타 데이터 유형은 그에 상응하는 Python 데이터 유형으로 변환됩니다.

예를 들어, MATLAB에서 다음과 같은 변수들을 포함하는 파일을 저장했다고 가정해 보겠습니다:

- 변수 `A`는 2x3의 행렬
- 변수 `B`는 문자열
- 변수 `C`는 구조체

Python에서 `loadmat`을 사용하여 이 파일을 불러오면, `data`는 다음과 같은 형태의 딕셔너리가 됩니다:

{
  'A': array([[1, 2, 3], [4, 5, 6]]),  # NumPy 배열
  'B': array(['example string']),      # NumPy 문자열 배열
  'C': {'field1': array([[...]]), 'field2': array([[...]])}  # 구조체는 또 다른 딕셔너리로
}



`loadmat` 함수는 또한 MATLAB 파일 내의 메타데이터를 포함하는 몇 가지 특별한 키도 반환합니다. 예를 들어, `__header__`, `__version__`, `__globals__` 등의 키는 파일의 헤더 정보, MATLAB 버전, 글로벌 변수 목록을 각각 담고 있습니다.

따라서 `data` 변수를 사용할 때는 이러한 구조를 이해하고 있어야 하며, 특정 변수에 접근하거나 조작하기 위해서는 적절한 키와 인덱싱을 사용해야 합니다.

 

 

 

 

 

 



각 예제는 Python에서 해당 유형의 파일을 불러오는 가장 기본적인 방법을 보여줍니다. 실제로 파일을 다룰 때는 파일의 경로, 인코딩 문제, 필요한 라이브러리의 설치 등 추가적인 사항을 고려해야 할 수도 있습니다. 각 방법으로 불러온 데이터는 해당 형태의 메소드와 속성을 사용하여 조작하고 처리할 수 있습니다. 예를 들어, pandas의 DataFrame은 데이터 분석과 처리를 위한 다양한 메소드를 제공합니다. 마찬가지로, Pillow의 Image 객체는 이미지를 변환하고, 필터를 적용하고, 저장하는 등의 작업을 위한 메소드를 제공합니다.

 

 

 

 

반응형