2. 데이터 불러오기

wandajeong·2024년 4월 15일
0

Data Handling

목록 보기
3/15

데이터 분석의 첫 단계는 효율적으로 데이터를 불러오는 것이다다. 본 글에서는 다양한 소스 또는 환경에서 데이터를 불러오는 다양한 방법을 정리하고자 한다.

1. excel

Excel 데이터를 불러올 때, index_col=0을 설정하면 데이터 프레임에서 불필요한 unnamed column의 생성을 방지할 수 있다.

import pandas as pd

df = pd.read_excel('data/data.xlsx', index_col=0)

2. 여러 파일 일괄 로딩

지정된 경로에서 시작하는 특정 파일명을 가진 여러 개의 파일을 한 번에 불러오기

import pandas as pd
from glob import glob

path = '파일이 위치한 경로/'
files = glob(f"{path}파일명*.csv")  # 파일명으로 시작하는 모든 CSV 파일

df = pd.concat(
	[pd.read_csv(file) for file in files], 
    ignore_index=True
    )

3. csv 파일 tokenizing error 처리

CSV 파일 로딩 시 발생할 수 있는 토크나이징 에러를 처리하는 방법

import csv
import pandas as pd
from pathlib import Path

file_path = Path.cwd() / 'data.csv'
f = open(file_path, encoding='utf-8')
reader = csv.reader(f)
csv_list = []
for row in reader:
    csv_list.append(row)
f.close()

log_df = pd.DataFrame(csv_list)

4. 외부 데이터 로딩

외부 웹 소스에서 데이터를 다운로드하여 로컬 파일로 저장

import requests

res = requests.get('https://github.com/e9t/nsmc/raw/master/ratings_train.txt')
with open('nsmc_train.csv', 'wb') as f:
    f.write(res.content)

5. 데이터 베이스 연결

pymssql 라이브러리를 사용하여 SQL Server 데이터베이스와 연결

import pymssql
import pandas as pd

conn = pymssql.connect(server='', user='아이디', password='패스워드', database='데이터베이스')
cursor = conn.cursor()
query = "SELECT * FROM DATABASE"
data = pd.read_sql(sql=query, con=conn)
conn.close()

df = pd.DataFrame(data)

6. 보안 환경에서의 파일 로딩

사내 VDI나 보안 문서에서 Excel 파일을 안전하게 로딩

import xlwings as xw
import pandas as pd

book = xw.Book('file.xlsx')
df = book.sheets(1).used_range.options(pd.DataFrame).value

7. 압축 파일 처리

ZIP 파일 내의 데이터를 추출하고 처리

import zipfile
from pathlib import Path

file_path = Path.cwd() / '폴더이름'
my_zip = zipfile.ZipFile(path, 'r')
zip_list = my_zip.namelist()
data = my_zip.read(zip_list[0])
data = data.decode('utf-8')

8. .DAT파일

pd.read_table(path, sep=',', names=['DATE', tag_name])

9. 표본 데이터 생성

python 내에서 간단하게 샘플 데이터셋 생성

from sklearn import datasets

classification_data = datasets.make_classification()
clustering_data = datasets.make_blobs()
profile
ML/DL swimmer

0개의 댓글