딥상어동의 딥한 생각

[Pandas] 이것만은 알고가자 - 0.파일 불러오기

by 딥상어동의 딥한생각

1. 예시

import pandas as pd
data = pd.read_csv("C:/Users/blarblar/aug_train.csv")

#read_csv #pd.read_csv

2. CSV. 파일에 대한 이해

 

Comma Seperated Values

 

이름, 직업, 나이
철수, 개발자, 30
미희, 분석가, 29

 

,로 값을 구분한다. 이것이 CSV파일에 대한 정의이다.

 

위이미지에서 .jpg를 extension이라고 한다. csv 파일은 구글 스프레드 시트 형태를 보이지만, 파일 이름 끝에 .csv가 붙는다. 즉, csv라는 확장자를 가진다는 의미이다.

 

3. 왜 사용하는가?

txt와 같은 확장자를 plain-text라고 한다. 여기에는 글자 크기 등 다른 옵션은 없고 말 그대로 "텍스트"만 있다고 생각하면 된다. 그래서, 웹 개발자들이 만들어 내기도 쉽고, 스프레드 시트나 다른 DB에서도 파일을 사용할 수도 있다. CSV도 TXT와 같은 Plain-text 파일이다. 쉽게 생각해, 읽을 수 있는 문자열만 포함하기 때문에 확장성이 좋다고 생각하면 된다. 

 

또한, comma로 구분되기 때문에 컴퓨터도, 사람도 읽기가 쉽다. 그리고, 만들기도 쉽다. 

 

결론은 다음과 같다.

 

만들기 쉽다 -> 읽기 쉽다 -> 주변에 많다.

 

그래서, 데이터 분석을 시작할 때 CSV 파일을 흔히들 많이 사용한다.

 

4. 어떻게 불러 올 것인가?

 

4-1. 경로

 

import pandas as pd
data = pd.read_csv("C:/Users/blarblar/aug_train.csv")

 

pd.read_csv("") ""안의 값을 주소라고 한다. 주소에는 절대경로와 상대경로가 있다. 위와 같이 전체 주소를 다 적어주는 형태를 절대경로라고 한다. 

위와 같이 폴더 경로에 마우스를 클릭하여 주소를 복사할 수도 있고, 파일을 우클릭하여 속성에서 가져올 수도 있다. 

 

그렇게 한다음 \를 하나더 붙이고 최종적으로 파일 이름을 적어준다. 근데! 여기서 문제가 있다. 

 

이렇게 불러오면 에러가 발생한다. 예시처럼, /또는 \\로 \를 대체해주어야 한다. 

 

파이썬 주피터 노트북에서는 셀에서 ESC를 누르고 F를 누르면 위와 같은 화면이 나와 셀의 문자를 쉽게 바꿀 수 있다. 

 

 

데이터가 잘 불러와지는 것을 확인할 수 있다.

 

4-2. read_csv를 더 유용하게 사용하는 방법

 

1. 사전에 열의 자료형을 설정할 수 있다.

pd.read_csv(filename = "경로", dtype = {"열이름" : int})

 

2. 미리 열 이름을 수정할 수도 있다.

pd.read_csv(filename = "경로", names = ["col1", "col2"])

 

3. 특정 열만 사용하도록 설정할 수도 있다.

pd.read_csv(filename = "경로", usecols = ["col1", "col2"])

 

4. 특정 열을 날짜 자료형으로 인식하도록 할 수도 있다.

pd.read_csv(filename = "경로", parse_dates = ["date"])

 

5. 에러 행을 무시할 수도 있다.

pd.read_csv(filename = "경로", error_bad_lines = False)

이게 중요한 이유는 가끔 한 행이 가지는 오류 때문에 전체 파일이 불러와지지 않을 수도 있기 때문이다.

 

6. 인코딩 에러 해결

pd.read_csv(filename = "경로", encoding = "CP949")

보통, 파일에 한글이 있을 경우 발생한다. 그 이유는 영어 알파벳의 경우 ASCII 코드로 표현되는데, 한글의 경우 ASCII 코드의 범위를 벗어나기 때문이다. 주로 CP949나 euc-kr로 인코딩이 되어 있다.

 

여기서 잠깐! ASCII 코드는 "미국정보교환표준부호"라고 하는데, 여기서 "교환"이라는 단어에 주목하자. 교환을 하는 이유는 컴퓨터가 숫자 밖에 모르기 때문이다. 인간의 언어를 컴퓨터가 아는 숫자 언어로 "교환"해서 전달해준다고 생각하면 이해하기 쉽다.

 

이외에도 다양한 기능들이 있지만, 우선은 여기까지만 하겠다.

 

5. CSV가 전부인가?

 

아니다. read_pickle, read_table, read_json등 다양한 파일을 읽어올 수 있다.

 

예를들어, 다음과 같은 형식의 파일도 있다. 

 

이름    직업    나이
철수    개발자    30
미희    분석가    29

 

이처럼 탭으로 구분되어 있는 경우를 tsv라고 한다.

 

pd.read_csv(filename = "경로", sep="\t")

이런 경우 위와 같이 구분자를 탭으로 두어 사용할 수 있다.

 

6. 왜 read_csv를 사용하는가?

 

그 이유는, read_csv를 사용하지 않았을 때를 생각하면 된다.

 

import csv
with open("경로", "r") as csvFile:
    csvReader = csv.reader(csvFile)
    for row in csvReader:
    	print(row)

 

위와 같이 코드도 복잡해지고, 결과도 확인하기 번거롭게 된다.

 

 

이게 훨씬 깔끔하다. 

블로그의 정보

딥상어동의 딥한생각

딥상어동의 딥한생각

활동하기