파이썬/Pandas

CSV 파일 만들기, 불러오기

토마토농장농장 2022. 1. 12. 10:38

Pandas로 만든 DataFrame을 CSV 파일로 변환해본다. 

 

 

 

pd.DataFrame( { 행:열 } ) : 데이터프레임을 만든다. (예시는 딕셔너리 형태의 데이터 프레임)

 

그림 1. Data Frame

 

#dataframe#.to_csv ("경로", encoding='utf-8')  : 데이터 프레임을 경로에 csv 형태로 저장한다. 한글은 utf-8 형태로 인코딩한다. 

import pandas as pd

practice= pd.DataFrame({'날짜':[],'운동':[],'양':[]})


practice.loc[0]=['19-03-01','달리기',1.0]
practice.loc[1]=['19-03-02','걷기',1.0]
practice.loc[2]=['19-03-02','달리기',1.0]
practice.loc[3]=['19-03-02','계단 오르기',1.0]
practice.loc[4]=['19-03-03','걷기',1.5]
practice.loc[5]=['19-03-03','달리기',1.0]

practice.to_csv("D:\\02. CANoe\\CANoe_dbc\\SX2HEV\\새 폴더\\practice.csv",encoding='utf-8')

print(practice)

 

 

만들어진 csv 파일을 엑셀로 열면 그림 2와 같이 글씨가 깨져서 보인다. 

엑셀은 utf-8을 지원하지 않기 때문에 그렇고, 생성된 csv 파일 자체에 이상은 없다. 

그림2. utf-8로 인코딩 된 csv 파일을 엑셀로 열 경우 

텍스트 파일로 열면 다음과 같이 정상적으로 저장되었음을 확인할 수 있다. 

그림 3. txt로 연 csv파일

 

 

pd.read_csv("경로", encoding='utf-8') : csv 파일를 pandas로 읽어온다.

 

index_col=0 : csv파일로 만들면서 인덱스 값이 csv파일에 데이터로 저장되는데, 그림 4와 같이 Unnamed 컬럼이 새로 생긴 것을 볼 수 있다. 이 불필요한 컬럼을 없애기 위해 "index_col"을 없애준다.  

print(pd.read_csv("D:\\02. CANoe\\CANoe_dbc\\SX2HEV\\새 폴더\\practice.csv",index_col=0,encoding='utf-8'))

 

그림 4. index_col 이 포함된 데이터프레임 

 

 

 

 

추가로

#dataframe#.pivot_table (index="컬럼 이름", aggfunc=[np.sum, len]) : 컬럼의 데이터 특성을 나타냄.

aggfunc : default는 평균값이며, sum으로 총합을 나타낼 수도 있고, len 으로 몇번 나오는지도 알 수 있다. 

 

평균
sum

 

 

 

[풀코드]

import pandas as pd
import numpy as np

practice= pd.DataFrame({'날짜':[],'운동':[],'양':[]})


practice.loc[0]=['19-03-01','달리기',1.0]
practice.loc[1]=['19-03-02','걷기',1.0]
practice.loc[2]=['19-03-02','달리기',1.0]
practice.loc[3]=['19-03-02','계단 오르기',1.0]
practice.loc[4]=['19-03-03','걷기',1.5]
practice.loc[5]=['19-03-03','달리기',1.0]

practice.to_csv("D:\\02. CANoe\\CANoe_dbc\\SX2HEV\\새 폴더\\practice.csv",encoding='utf-8')


print(pd.read_csv("D:\\02. CANoe\\CANoe_dbc\\SX2HEV\\새 폴더\\practice.csv",index_col=0,encoding='utf-8'))

print(practice.pivot_table(index="운동", aggfunc=[np.sum, len])) #sum: 총합. len :  며칠을 했는지. 횟수