일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- HTML
- 리눅스
- 오라클
- 리눅스 명령어
- 파이썬
- 데이터베이스
- Oracle
- 코딩테스트
- csharp
- 알고리즘
- MariaDB
- 파이썬 데이터프레임
- python algorithm
- Python 라이브러리
- RFP
- it 용어
- it용어
- 파이썬 전처리
- C#
- Python DataFrame
- tibero
- putty
- VirtualBox
- Oracle VM VirtualBox
- Algorithm
- linux
- sql
- 파이썬 알고리즘
- PYTHON
- dbeaver
- Today
- Total
오경석의 개발노트
Python_csv파일 불러오기 본문
파이썬에서 데이터 분석을 할 때 가장 먼저 수행할 일은 csv나 excel파일을 불러오는 것이다.
CSV(comma-separated values)는 몇 가지 필드를 쉼표(,)로 구분한 텍스트 데이터 및 텍스트 파일이다. 확장자는 .csv이다.
1. csv 파일을 불러오는 방법
import pandas as pd
crime_data = pd.read_csv("./Data/crime_data.csv", encoding="cp949")
먼저 pandas 라이브러리를 import 한다. csv파일이나 excel파일을 불러오는 패키지는 Pandas 라이브러리 안에 존재하기 때문이다. 그다음 csv파일 데이터를 저장할 변수를 지정하고 pandas 라이브러리를 'pd'라는 별칭으로 설정했기 때문에 pd.read_csv 문장으로 데이터를 불러온다.
필자는 스크립트 바깥에 Data라는 디렉터리에 csv파일을 저장했기 때문에 "./Data/crime_data.csv"라는 경로로 파일을 불러왔다. 참고로 파일을 불러올 땐 절대경로가 아닌 상대경로로 불러온다.
마지막으로 파이썬은 한글 파일을 불러올 때 글자가 깨져서 에러가 나온다. 그 경우에는 파일을 불러오는 문장을 적은 뒤 encoding="cp949"를 적으면 된다. 그런 다음 crime_data를 출력하면 다음과 같은 결과가 출력된다.
2. column이 없는 csv파일 불러오기
위의 데이터를 보면 dataset에 컬럼이 존재하지 않는다. 이 데이터를 위와 같은 방법으로 불러오면 어떻게 될까?
다음과 같이 출력된다.
import pandas as pd
data = pd.read_csv('./housing.csv')
data
>>>
위의 결과를 보면 컬럼을 지정해주지 않아서 첫 행의 값이 컬럼이 됐고 데이터가 분리되지 않아 각 행마다 하나의 데이터로 인식해버린다.
따라서, 컬럼이 없는 데이터셋이라면 컬럼(names)을 지정해주고 구분 문자(delimiter)를 설정해줘야한다.
import pandas as pd
column_names = ['CRIM', 'ZN', 'INDUS', 'CHAS', 'NOX', 'RM', 'AGE', 'DIS', 'RAD', 'TAX', 'PTRATIO', 'B', 'LSTAT', 'MEDV']
data = pd.read_csv('./housing.csv', names=column_names, delimiter=r"\s+")
data
>>>
위의 결과를 보면 'column_names' 라는 컬럼 리스트 변수를 생성해 pd.read_csv 옵션에 컬럼을 지정해주는 names를 추가해서 총 14개의 컬럼을 지정했고, delimiter 옵션으로 whitespace로 데이터값을 구분하는 데이터를 처리하기 위해 정규식을 사용했다.
참고로 다음과 같이 delimiter 옵션이 아닌 delim_whitespace=True 옵션으로도 같은 결과를 출력한다.
import pandas as pd
column_names = ['CRIM', 'ZN', 'INDUS', 'CHAS', 'NOX', 'RM', 'AGE', 'DIS', 'RAD', 'TAX', 'PTRATIO', 'B', 'LSTAT', 'MEDV']
data = pd.read_csv('./housing.csv', names=column_names, delim_whitespace=True)
data
>>>
참고로 다음과 같이 공백 그 자체로 구분 문자를 설정하면 에러가 난다.
import pandas as pd
column_names = ['CRIM', 'ZN', 'INDUS', 'CHAS', 'NOX', 'RM', 'AGE', 'DIS', 'RAD', 'TAX', 'PTRATIO', 'B', 'LSTAT', 'MEDV']
data = pd.read_csv('./housing.csv', names=column_names, delimiter=" ")
data
>>>
ParserError: Error tokenizing data. C error: Expected 30 fields in line 2, saw 31
참고로 컬럼 이름을 지정하지 않고 그대로 사용하고 싶을 경우 첫번째 행이 컬럼으로 지정되는데 컬럼을 지정하고 싶지 않다면 header=None 옵션을 설정해준다.
import pandas as pd
data = pd.read_csv('./housing.csv', header=None)
data
>>>
'프로그래밍 언어 > Python' 카테고리의 다른 글
Python_Series (0) | 2022.09.06 |
---|---|
Python_Pandas (0) | 2022.09.05 |
Python_변수의 개념과 생성, 작명법 (0) | 2022.09.05 |
Python_스타일 가이드 (0) | 2022.09.02 |
Python_클래스 정의 (0) | 2022.08.31 |