초보 개발자

4. 파일 열고 저장하기 ( 나도코딩 pandas ) 본문

Python/pandas

4. 파일 열고 저장하기 ( 나도코딩 pandas )

taehyeki 2022. 10. 29. 15:42

pandas data를 excel, txt, csv등의 형태로 열거나, 저장하기

 

CSV로 저장하기 , to_csv('원하는 이름.csv')

생각보다 간단하다.

to_csv함수를 사용하는데 확장자 명까지 적어주면된다. 단 한줄로 끝난다.

이렇게 하면 파일이 생성이된다.

이 파일을 열어보면 csv형태로 잘 적혀있는 것을 확인할 수 있다.

근데 이걸 엑셀파일로 열어보면 한글이 깨져서 나오는 것을 확인할 수 있다.

 

인코딩 문제인데 아래처럼 옵션을 주면 된다. 여기서 utf-8만 적으면 적용이 안되고 sig까지 적어줘야 제대로 반영이 되는 것 같다.

다시 파일을 엑셀에서 열어보면 잘 열리는 것을 확인할 수 있다.

근데 여기서 또 하나의 옵션을 줄 수도 있는데 앞에 보이는 인덱스를 csv형식에서는 빼고 싶다면

index=False 옵션을 주면된다.

그럼 아래와 같이 인덱스가 없어진다.

 

TXT로 저장하기 , to_csv('원하는 이름.txt')

to_txt로 해야만 할 것 같은데 to_csv로 만들 수 있다.

여기서 확장자를 .txt로 주면 된다.

그럼 아래와 같이 텍스트 파일이 잘 만들어 지는데,

여기서 좀 더 데이터를 보기 쉽게 만들어 보자, sep 옵션을 주면된다.

데이터 마다 탭이 들어간 것을 확인할 수 있다. 그럼 \n 을 주면..?

역시나 예상대로다.. 이렇게 txt를 만들어 보았다

EXCEL로 저장하기 , to_excel('원하는 이름.xlsx')

이 역시도 인덱스가 필요없다면 index=False옵션을주면 된다.

 

이제 저장해보았으니 이 파일들을 불러와보자

 

CSV파일 읽어오기 read_csv

앞서 만든 파일을 읽어와보자 앞서 데이터를 내보낼 때에는 dataFrame 객체에서 to_csv를 사용했는데

처음엔 dataFrame객체가 없으니 pandas에서 불러와야한다.

이렇게 df를 만들 수 있다. 여기서 옵션을 몇개 줄 수 있는데

좀 헷갈린다.

 

몇번 째 행부터 불러올 것인지, 또 몇개 불러올 것인지에 대한 옵션이다.

먼저 skiprows가 있는데 몇번째 로우 부터 값을 가져올 것인가이다. 여기서 중요한 점이

skiprows는 컬럼헤더또한 포함한다는 것이다. 즉, 컬럼헤더는 0번째 로우인 것이다.

 

예를들어 skiprows=1 이라고하면 첫번째 컬럼 헤더(0번 인덱스)를 제외하고 1번째 인덱스의 row행부터 출력이된다.

그리고 1번째 인덱스가 컬럼 헤더가 된다.

만약 여기에 int가아닌 배열로 여러 값들을 넣어줄 수 있다. 이 때에는 적힌 로우의 값들이 빠진채 출력된다.

1번째 인덱스에 해당한 채치수가 빠진 걸 보아 제대로 만들어진 것을 확인할 수 있다. 당연히 저기에 0을 넣어주면 컬럼헤더도 빠지게 될 것이다.

skiprows는 해당 인덱스 ( 컬럼 헤더 포함 ) 를  제외 시키거나, 해당 인덱스 부터 시작하거나인데,

nrows 라는 옵션은 몇 개를 가져올 것인지를 적는 것이다. 예를들어 4라고 적으면 4개만 가져온다. 단! 이 경우에는 컬럼헤더를 꼭 하나 확보한 뒤에 가져온다. 내가 적고도 이해가 안되는데

 

예를들어 nows=3을 적으면 컬럼헤더, 0 ,1, 2, 3 이렇게 출력이 된다. 4개니까 컬럼헤더를 포함해서 4개라고 생각했을지도 모르지만

아래와 같다.

이걸 skiprows와 같이 사용할 수 있는데

skiprows=1 nrows=4 이렇게 주면 어떻게 될까? 예상을 해보자면 skiprow를 적으면 컬럼헤더를 포함한 row의 인덱스 부터 보여주기에.

채치수, 북산고 .... 가 컬럼헤더가 될 것이다. 거기에서 nrows4를 적으면 채치수 밑 row부터 4개를 가져오게 될 것이다.왜나면 컬럼헤더는 포함하지 않는 개수이기 때문이다.

TXT파일 읽어오기 read_csv

text파일 또한 read_csv로 읽어오는데 아까 \t으로 sep을 분리시켜두었다. 따라서 그냥 불러오면 위와 같이 나오는데, 아까와 같이 sep옵션을 지정해주면 된다.

여기서 default가 기본 인덱스가 아니고 새로 인덱스가 생성이 되었다. 따라서 기본 인덱스로 지정해주려면 set_index('default')로 해줄 수도 있지만, 만들때 index_col 이라는 옵션을 주면 된다.

EXCEL파일 읽어오기 read_excel

위에서 했던 방식을 다 사용해서 불러와보았다. 여기서 index_col을 default로 하지않고 th로 한 이유는 뭐냐면 앞서 지정한 skiprows때문에 컬럼헤더가 th가 되어버렸기 때문이다.