데이터 불러오기, 저장하기

2022. 3. 17. 16:27Python

경로 확인하기 및 설정하기

  • 파이썬에서 데이터를 불려오려면 반드시 경로와 확장자까지 포함해서 불러와야함
  • os.getcwd() : 현재 경로를 반환
  • os.chdir(path) : 현재 경로를 path로 설정

> 역슬래시(\)는 특별한 표현이 아님을 나타내야 함

  1.  역슬래시 두 번 사용 : "path\\path"
  2. 역슬래시를 슬래시로 변경 : "path/path"
  3. r을 사용하여 raw string임을 밝힘 : r"path\path"

open 함수를 이용한 파일 불러오기

  • 파일객체 = open(파일 경로 및 이름 , 모드)
  • 정제되지 않은 형태의 데이터를 불러오는 경우에 주로 사용
  • 모드에는 r(read), w(write), a(add)가 있음
  • 파일 객체 사용후 close 함수를 사용하여 닫아줘야 함 (cf. with 구문)
import os
os.getcwd() # 현재 경로 확인
os.chdir(r"C:\Users\user\Downloads\1.-데이터-핸들링\1. 데이터 핸들링\데이터") #데이터가 들어있는 파일 경로 지정
os.getcwd()
open("sample folder/sample data.txt")

read 이용한 데이터 불러오기

f = open("data_reading.csv", "r")
data = f.read() 
f.close()
data[:1000]

readline 이용한 데이터 불러오기

f = open("data_reading.csv", "r")
header = f.readline() # 첫 번째 row를 읽어옴
data = []

line = f.readline() # 두 번째 row를 읽음
while line: # line이 빈 문자열이 될 때까지
    data.append(list(map(float, line.split(','))))
    line = f.readline()
f.close()
  • f.read() : 파일f에 있는 모든 내용을 불러옴
  • f.readline() : 파일f에 있는 한 줄(\n 기준 및 포함)을 불러옴

> read 및 readline의 결과물은 문자열이므로 문자열 관련 함수 숙지 필요

  • str.split(sep) : str을 sep 기준으로 분할하여 리스트로 변환
  • map(함수,L) : iterable한 객체L에 함수를 일괄 적용

write 이용한 데이터 쓰기

  • f.write(string) : string을 파일f에 씀
  • > 리스트등을 string을 변환하는 join 함수 활용 필요
  • sep.join(list) : list의 문자열 요소들을 sep으로 연결
with open("written_data.csv", "w") as f:
    f.write(header)
    for line in data:
        f.write(','.join(list(map(str, line))))
        f.write('\n')

read_csv 함수를 이용한 데이터 불러오기

pd.read_csv(filepath, sep, header, index_col, usecols, parse_dates, nrows )
# filepath : 파일 경로 및 이름
# sep : 구분자 (default : ',')
# header : 헤더의 위치로 None을 입력하면 컬럼명이 자동으로 0,1,2,..로 자동 부여 (default : 'infer')
# index_col : 인덱스의 위치 
# usecols : 사용할 컬럼 목록 및 위치 목록 (데이터가 큰 경우)
# nrows : 불러올 행의 개수 (데이터가 큰 경우)
  • 헤더가 없는 데이터 불러오기
df = pd.read_csv("data_reading_without_header.csv", header = None)
df.columns = ['X1', 'X2', 'X3', 'X4', 'X5'] # 컬럼명 바꾸기
df.head()

to_csv 함수를 이용한 데이터 저장하기

df.to_csv(filepath, sep, index)
# filepath : 파일 경로 및 이름
# sep : 구분자 (default : ',')
# index : 인덱스를 저장할지 여부

read_excel 함수를 이용한 데이터 불러오기

pd.read_excel(filepath, sheet_name, header, index_col, usecols, parse_dates, nrows)
# filepath : 파일 경로 및 이름
# sheet_name : 불러오고자 하는 시트 이름 및 위치
# header :  헤더의 위치로 None을 입력하면 컬럼명이 0,1,2,..로 자동 부여됨 (default:'infer')
# index_col : 인덱스의 위치
# usecols : 사용할 컬럼 목록 및 위치 목록 (데이터가 큰 경우)
# nrows : 불러올 행의 개수 (데이터가 큰 경우)
# skiprows : 불러오지 않을 행의 위치 (리스트)

to_excel 함수를 이용한 데이터 저장하기

  • 테이블 형태의 데이터를 저장하는데 효과적
df.to_excel(filepath, index, sheet_name, mode)
# filepath : 파일 경로 및 이름
# index_col : 인덱스를 저장할지 여부
# sheet_name : 시트 명
  • 여러 시트를 생성해야 하는 경우
writer = pd.ExcelWriter(xlsx file)
df1.to_excel(writer, sheet_name="sheet1")
df2.to_excel(writer, sheet_name="sheet2")

 

'Python' 카테고리의 다른 글

데이터 정렬  (0) 2022.03.18
pivot_table, groupby  (0) 2022.03.18
기초 통계 함수  (0) 2022.03.18
데이터 결합 - merge, concat  (0) 2022.03.17
Input / Output  (0) 2022.03.17