Py) 기초 - Pandas(파일 읽어오기)

Py) 기초 - Pandas(파일 읽어오기)

파이썬 기반 데이터분석을 위하여 Pandas 라이브러리를 사용한 파일 읽어오기를 알아본다.


개요

데이터분석을 위해서는 단순히 직접 객체를 만드는 것도 방법이지만 직접 모든 자료를 입력해야 하기 때문에 그 한계가 명확하다. 그래서 기존에 만들어진 파일을 읽어오거나 데이터베이스에서 데이터를 끌어온다. 읽어오는 파일 종류도 다양하고 데이터베이스 종류 또한 많지만 그 중에서 텍스트 파일의 “csv” 파일 확장자와 엑셀 파일의 “xls”, “xlsx”를 읽어오는 방법을 알아본다.

그리고 Pandas 라이브러리의 함수로 파일을 읽어오는 경우 그 반환 객체유형은 데이터프레임(DataFrame)이다. 그렇기 때문에 데이터프레임에 대한 최소한의 학습을 권장하며 관련 게시물은 다음의 링크를 참고하도록 하자.
Pandas 데이터프레임 기초 링크

파일 확장자

확장자. 보다 정확하게는 파일 확장자. 영어로는 file extension이라고 한다.

파일 확장자 예시

파일명 뒤에 csv, json 이런것이다. 옛날에는 파일 및 확장자에 할당되는 데이터 용량을 제한했기 때문에 파일명도 8자를 못넘기고 확장자의 경우 3자리 까지 표기(FAT의 8.3RULE 참조)했었지만, 요즘에는 json, xlsx같이 길이가 4자 이상인 것이 많아졌다.

아무튼 확장자는 파일에 어떤 내용이 들어있는지, 어떤 프로그램으로 열 수 있는지 알려주는 역할을 하며 확장자를 확인해야 그에 맞는 함수를 선택하여 데이터를 읽어올 수 있다.

경로

파일을 읽어올 때는 파일을 읽어오는 함수에 정확한 파일 경로를 입력해야 한다. 다음의 링크를 통해서 실습파일을 다룬로드 받고

예제 파일: pandas_file_read_sample.zip

다음의 코드를 통해 현재 작업 폴더 경로를 확인하여

1
2
3
import os
os.getcwd()
## 'C:\Users\encai\desktop\blog'

해당 경로에 압출 파일을 푼 다음(현재 폴더에 풀기) 파일 목록을 확인해보자.

1
2
3
4
5
6
os.listdir()
## ['.ipynb_checkpoints',
## 'csv_sample.csv',
## 'excel_sample.xlsx',
## 'pandas_file_read_sample.zip',
## 'Untitled.ipynb']

파일을 읽어오는 실습을 하기 위해서는 상기 코드의 결과 처럼 현재 작업폴더에 읽어오고자 하는 파일이 위치한 경우 그 진행이 상대적으로 수월하다고 할 수 있겠다.

경로와 관련해서 조금 더 학습이 필요하다면 다음의 링크를 통해 관련 게시물을 보도록 하자.
https://datadoctorblog.com/2023/03/25/Py-Basic-Paths/

텍스트 파일

텍스트 파일이란 간단하게 말해서 Windows 운영체제 기준으로 메모장으로 열 수 있는 파일이 되겠다. 보통 “csv” 파일 확장자를 가지며 이는 데이터의 각 값이 쉼표(comma)로 구분된(csv, comma-separated values)이라는 뜻을 가지고 있다.

csv 파일 예시

그럼 다음 코드를 사용하여 “csv_sample.csv” 파일을 읽어보자.

1
2
df = pd.read_csv("csv_sample.csv")
df
ID value
0 1 2938
1 2 3403
2 3 12381
3 4 20391
4 5 328

read_csv() 함수는 굉장히 많은 인자(argument)가 있는데 그 중 중요한 것을 꼽자면 다음과 같다.

  • sep, delimiter: 텍스트 파일의 데이터간 구분자
  • header: 변수명 존재 여부 설정
  • encoding: 파일의 인코딩(encoding) 지정
  • nrows: 읽어올 데이터의 줄 수 지정
  • skiprows: 무시할 줄 수(처음 n개 줄)
  • skipfooter: 무시할 줄 수(마지막 n개 줄)

상기 인자에 대해서는 별도의 포스팅에서 다룰 예정이다.

엑셀 파일

csv파일을 굉장히 많이 사용하긴 하지만 엑셀파일 또한 자주 접하게 되는 파일 확장자이다. 엑셀 파일은 “xls”와 “xlsx” 두 종류의 확장자가 있는데 해당 확장자에 관계없이 read_excel() 함수를 쓸 수 있다.

우선 엑셀파일에 시트가 하나만 있다면 해당 시트를 읽어온다. 하지만 시트가 여러개이고 시트명을 직접 확인하고자 한다면 다음의 코드를 사용할 수 있다.

1
2
pd.ExcelFile("excel_sample.xlsx").sheet_names
## ['Sheet1', 'Sheet2']
1
pd.read_excel("excel_sample.xlsx")
col1 col2
0 A 44
1 B 33
2 C 22

다음과 같이 “sheet_name” 인자에 시트명을 입력하면 해당 시트의 데이터를 읽어올 수 있다.

1
pd.read_excel("excel_sample.xlsx", sheet_name = "Sheet2")
v1 v2
0 10234 -10
1 10345 -15
2 20567 -30
3 20542 200

기타

앞에서 소개한 함수 이외에도 파일을 읽어오는 Pandas의 다양한 함수는 다음의 코드로 확인할 수 있다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[n for n in dir(pd) if n[:4] == "read"]
## ['read_clipboard',
## 'read_csv',
## 'read_excel',
## 'read_feather',
## 'read_fwf',
## 'read_gbq',
## 'read_hdf',
## 'read_html',
## 'read_json',
## 'read_orc',
## 'read_parquet',
## 'read_pickle',
## 'read_sas',
## 'read_spss',
## 'read_sql',
## 'read_sql_query',
## 'read_sql_table',
## 'read_stata',
## 'read_table',
## 'read_xml']
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×