티스토리 뷰

반응형

판다스는 다양한 형태의 외부 파일을 읽어와서 데이터프레임으로 변환하는 함수를 제공한다. csv json xlsx등 다양한 파일 확장자를 판다스로 열 수 있다.

 

판다스의 기초는 아래와 같다.

2021/01/10 - [인공지능(Artificial Intelligence)/python] - [pandas] 판다스 기초 한번에 정리

 

 

CSV 파일

데이터 값을 쉼표(,)로 구분하고 있다는 의미로 CSV(comma-separated values)라고 부르는 텍스트 파일이다. 기본적으로 쉼표(,)로 열을 구분하고 줄 바꿈으로 행을 구분한다. 사용법은 판다스 read_csv() 함수에 확장자(.csv)를 포함하여 파일 결로를 입력하면 CSV 파일을 읽어봐서 데이터프레임으로 변환한다. 인덱스를 지정하는 옵션에는 header(열 이름으로 사용할 행 지정)과 index_col(행 인덱스로 사용할 열을 지정) 옵션이 존재한다.

 

아래와 같은 CSV 파일이 있다고 가정하고 실습을 진행해보자.

 

# ./sample.csv
# 현재 코드를 작성 중인 폴더 안에 sample.csv 파일이 있다는 말이다.
# 아래의 4줄이 포함되어 있다.
c0,c1,c2,c3
0,1,4,7
1,2,5,8
2,3,6,9

 

위의 예시에서 볼 수 있듯이 쉼표(,)와 행으로 구분된 것을 확인할 수 있다. 위의 데이터를 기준으로 header 옵션이 없으면 CSV 파일의 첫 행의 데이터인 c0, c1, c2, c3가 열 이름이 된다. 그리고 index_col 옵션을 지정하지 않으면 행 인덱스는 정수 0,1,2가 자동으로 생성된다. 만약 index_col('c0') 옵션을 사용하면 'c0' 열이 index가 되는 것을 볼 수 있다.

 

 

 

이제 코드를 작성해보자.

 

import pandas as pd
file_path= './sample.csv'

df1 = pd.read_csv(file_path)
df2 = pd.read_csv(file_path, header=None)
df3 = pd.read_csv(file_path, index_col=None)
df4 = pd.read_csv(file_path, index_col='c0')

 

df1, df2, df3, df4가 어떻게 출력 될지 생각해보면, 아래의 print된 내용을 보자.

 

# df1
  c0 c1 c2 c3
0  0  1  4  7
1  1  2  5  8
2  2  3  6  9

# df2
   0  1  2  3
0 c0 c1 c2 c3
1  0  1  4  7
2  1  2  5  8
3  2  3  6  9

# df3     df1과 동일
  c0 c1 c2 c3
0  0  1  4  7
1  1  2  5  8
2  2  3  6  9

# df1
  c1 c2 c3
c0
0  1  4  7
1  2  5  8
2  3  6  9

 

위에서 CSV 파일은 쉼표(,)로 구분한다고 말했다. 하지만 CSV 파일에 따라 쉼표(,) 대신 탭(\t)이나 공백(" ")으로 텍스트를 구분하기도 한다. 이때는 구분자 옵션(sep 이나 delimiter)을 알맞게 입력해야한다.

 

 

 

pd.read_csv() 옵션

옵션 설명
path 파일의 위치, URL
seq(또는 delimiter) 텍스트 데이터를 필드별로 구분하는 문자
header 열 이름으로 사용될 행의 번호(기본값은 0인덱스)
header가 없고 첫 행부터 데이터가 있는 경우 None으로 지정 가능
index_col 행 인덱스로 사용할 열의 번호 또는 열 이름
names 열 이름으로 사용할 문자열의 리스트
skiprows 처음 몇 줄을 skip 할 것인지 설정. 리스트로 넣어서 []
parse_dates 날짜 텍스트를 datetime64로 변환할 것인지를 설정
skip_footer 마지막 몇 줄을 skip 할지 설정(int)
encoding 텍스트 인코딩 종류를 지정(ex_'utf-8')

 

위에서 나온 내용 중에 몇 가지만 더 가지고 놀아보자.

 

df5 = pd.read_csv(file_path, names= ['첫번째', '두번째', '세번째'])


# output
   첫번째 두번째 세번째
c0  c1  c2  c3
0    1   4   7
1    2   5   8
2    3   6   9

 

 

df6 = pd.read_csv(file_path, delimiter=',')


# output
   c0  c1  c2  c3
0   0   1   4   7
1   1   2   5   8
2   2   3   6   9

 

 

부족한 부분이 있다면, 아래의 pandas 공식문서에서 확인해 보도록 하자.

pandas.pydata.org/docs/user_guide/io.html#io-read-csv-table

 

IO tools (text, CSV, HDF5, …) — pandas 1.2.0 documentation

The pandas I/O API is a set of top level reader functions accessed like pandas.read_csv() that generally return a pandas object. The corresponding writer functions are object methods that are accessed like DataFrame.to_csv(). Below is a table containing av

pandas.pydata.org

 

반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
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
글 보관함