파이썬 기반 데이터분석을 위하여 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 | import os |
해당 경로에 압출 파일을 푼 다음(현재 폴더에 풀기) 파일 목록을 확인해보자.
1 | os.listdir() |
파일을 읽어오는 실습을 하기 위해서는 상기 코드의 결과 처럼 현재 작업폴더에 읽어오고자 하는 파일이 위치한 경우 그 진행이 상대적으로 수월하다고 할 수 있겠다.
경로와 관련해서 조금 더 학습이 필요하다면 다음의 링크를 통해 관련 게시물을 보도록 하자.
※ https://datadoctorblog.com/2023/03/25/Py-Basic-Paths/
텍스트 파일
텍스트 파일이란 간단하게 말해서 Windows 운영체제 기준으로 메모장으로 열 수 있는 파일이 되겠다. 보통 “csv” 파일 확장자를 가지며 이는 데이터의 각 값이 쉼표(comma)로 구분된(csv, comma-separated values)이라는 뜻을 가지고 있다.
그럼 다음 코드를 사용하여 “csv_sample.csv” 파일을 읽어보자.
1 | df = pd.read_csv("csv_sample.csv") |
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 | pd.ExcelFile("excel_sample.xlsx").sheet_names |
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 | [n for n in dir(pd) if n[:4] == "read"] |