본문 바로가기
Python/python 기초

Pandas - 3

by winston1214 2020. 2. 23.
반응형

데이터를 분석하려면 csv 파일이나 excel 파일을 python에 로딩을 해야된다. 이를 위해 이번에는 data loading에 대해서 적도록 하겠다.

csv파일 로딩에 대해서 알아보도록 하겠다. csv파일은 (comma-separated values)는 몇 가지 필드를 쉼표(,)로 구분한 텍스트 데이터 및 텍스트 파일이다. 흔히 아는 엑셀과 비슷한 것이라고 생각하면 편하다.

데이터를 로딩하는 방법은 매우 쉽다.

import pandas as pd
pd.read_csv('파일경로/파일이름.csv')

이 형식이 가장 기본이다. jupyter notebook 작업환경이 있는 파일 내에 csv파일 있으면 파일경로를 생략하고 '파일이름.csv'만 입력해도 무관하다.

그리고 파일 경로를 모를 때는 '../../파일이름.csv' 를 적는게 하나의 꿀팁이다. 이 때 동일한 이름의 파일이 존재하면 안된다. 

파일을 불러올 때 많은 에러가 뜰 수 있다. 간단히 에러 종류와 에러의 해결방법을 말해보겠다.

첫번째로 기본 구분자(,)로 지정되지 않는 경우의 해결 방법이다.

pd.read_csv('pandas_file.csv',sep='\t')

위 코드는 구분자 코드가 탭(tab)키로 구분되어있을 때 이다. 엔터가 구분자이면 '\r'를 사용하면 된다.

두번째로 os error 이다.

이 경우에는 백이면 백은 아니지만 보통 아래와 같은 방법을 사용하면 해결이 된다.

pd.read_csv('pandas_file.csv',engine='python')

os error 는 보통 엔진 설정을 하면 해결이 된다. 그래도 해결이 안되는 경우는 더 많은 구글링을 해서 찾아보면 된다.

세번째로 Encoding error 이다. 

이걸 해결하는 방법은 여러가지가 있다.

# 첫번째
pd.read_csv('pandas_file.csv',encoding='utf-8')

# 두번째
pd.read_csv('pandas_file.csv',encoding='cp949')


위와 같이 encoding을 설정하면 대부분 해결이 된다.

다음으로는 read_csv의 파라미터에 대해서 알아보도록 하겠다. 많이 쓰이는 것들 위주로 적어보겠다.

pd.read_csv('pandas_file.csv',header=False,index=False)

위 코드에서 headerindex를 출력하지 않기 위해서 False값으로 지정해준다.

또 다른 파라미터는 skiprow이다.

pd.read_csv('pandas_file.csv',skiprow=[1,3])

이는 행을 사전에 제외하는 것으로 2행과 4열을 제외하는 코드이다.

pd.read_csv('pandas_data/ex4.csv',comment = '#')

이는 주석이 포함되어 있는 파일을 읽을 때 주석기호를 통일 시키기 위한 comment 파라미터이다.

 

다음으로 엑셀 파일을 읽어오는 것에 대해서 설명하겠다. 기본적인 파라미터나 방식은 csv파일 읽어오는 것과 동일하다.

import pandas as pd
pd.read_excel('pandas_file.xlsx')

read부분과 확장자명만 xlsx로 바꿔주면 끝이다. 이 때 기본적으로 sheet1만 불러오므로 유의하여야 한다.

 만약 내가 sheet2만 불러오고 싶다면 어떻게 할까?

pd.read_excel('pandas_file.xlsx',sheet_name='sheet2')

 

 

 

위와 같이 sheet_name 파라미터를 이용하여 불러올 시트명을 설정해주면 된다. 

만약 모든 시트를 다 불러오고 싶다면??

data = pd.read_excel('pandas_file.xlsx',sheet_name=None)

sheet_name을 None 값으로 처리하여 불러오면 된다. 

이 때 sheet1과 sheet2를 구분 짓고 싶다면 data.keys()data.values() 를 기억하면 된다.

data.keys() 는 엑셀 파일의 시트명을 반환하고, data.values() 는 엑셀 파일의 값을 반환한다. 딕셔너리 타입이라고 생각하면 편하다. 따라서 구분해서 저장하기 위해선

sheet1,sheet2 = data.values()

를 이용하여 sheet1 과 sheet2를 구분해서 사용할 수 있다.

 

원래 data loading만 적을라 했지만 data 저장 방법도 간단히 소개하겠다.

1. dataframe을 csv 파일로 저장할 때

df.to_csv('example.csv',index=False)

이 때 df는 저장하려는 dataframe 이다. 또한 이 때 index=False를 하는 이유는 저장할 때 인덱스가 중복으로 생기기 때문에 자신이 이미 작업한 dataframe을 그대로 저장하고 싶다고 하면 index=False를 지정해 주는 것이 좋다.

2. dataframe을 excel 로 저장할 때

df.to_excel('example2.xlsx',index=False)

이도 csv파일과 같은 형식이다.

반응형

'Python > python 기초' 카테고리의 다른 글

파이썬 리뷰  (2) 2020.07.03
Pandas를 이용한 NC 다이노스 선수 분석  (0) 2020.03.05
Pandas - 2  (0) 2020.02.02
Pandas - 1  (0) 2020.01.31
Numpy - 6  (2) 2020.01.22

댓글