반응형

19-02 excel로 변환 (to_excel)

DataFrame.to_excel(excel_writer, sheet_name='Sheet1', na_rep='', float_format=None, columns=None, header=True, index=True, index_label=None, startrow=0, startcol=0, engine=None, merge_cells=True, encoding=None, inf_rep='inf', verbose=True, freeze_panes=None, storage_options=None)

 

개요


to_excel 메서드는 데이터프레임 객체를 엑셀 형태로 변환하는 메서드입니다.

 

사용법


기본 사용법
※ 자세한 내용은 아래 예시를 참고 바랍니다.
df.to_excel(excel_writer, sheet_name='Sheet1', na_rep='', float_format=None, columns=None, header=True, index=True, index_label=None, startrow=0, startcol=0, engine=None, merge_cells=True, encoding=None, inf_rep='inf', verbose=True, freeze_panes=None, storage_options=None)

excel_writer : 경로와 파일 이름을 설정하거나 ExcelWriter 객체를 지정합니다.
sheet_name : 시트 이름을 설정해줍니다. 중복인 경우 덮어씌워집니다.
na_rep : 결측치를 대체할 값을 설정합니다. 기본값은 공백(" ") 입니다.
float_format : 부동소수점의 표현방식을 지정합니다.
columns : 엑셀로 변환할 열을 지정합니다.
header : 열 이름을 설정합니다. None인 경우에는 열이름을 출력하지 않습니다.
index : index의 출력 여부를 정합니다.
index_label : index명을 지정합니다. Multi Index의 경우 리스트 형식으로 지정해주어야합니다.
startrow / startcol : 값이 입력되는 위치를 지정합니다.
engine : 사용할 엔진을 지정합니다. 'openpyxl' 또는 'xlsxwriter'. io.excel.xlsx.writer, io.excel.xls.writer 및 io.excel.xlsm.writer 옵션을 통해 이를 설정할 수도 있습니다. merge_cells : Index가 중복인 경우 엑셀로 변환시 병합할지 정합니다. 기본값은 True로 병합이 됩니다.
encoding : 결과 엑셀파일의 인코딩을 지정합니다. xlwt에만 필요하며 다른 경우는 기본 유니코드를 지원합니다.
inf_rep : 엑셀은 기본적으로 무한에대한 표시형식이 없기때문에, 무한인 값을 어떻게 표시할지 정합니다. 기본값은 'inf' 입니다.
vervose : 오류 로그에 추가 정보를 표시할지 여부입니다. 기본값은 True입니다.
freeze_panes : 틀고정을 지정합니다. 튜플로 (값, 값) 형태로 지정합니다.
storage_options : 특정 스토리지 연결에 적합한 추가 옵션을 지정합니다. (예 : 호스트, 포트, 사용자 이름, 비밀번호 등)

반응형

 

예시


먼저 기본적인 사용법 예시를위하여 3x2 데이터 하나와 Multi Index 데이터 하나를 만들어 보겠습니다.

data1 = [[1,np.NaN],['A',4.1],[math.inf,'3']]
df1 = pd.DataFrame(data1)
df2 = pd.DataFrame(data=[[5,6],[7,8],[9,10]],index=[['A','B','B'],[3,4,5]]) #멀티인덱스 객체
print(df1)
print(df2)
adress = 'C:\\Users\\2064055\\Desktop\\pandas\\' # address변수에 경로 지정해둠

 


기본적인 사용법
기본적으로는 excel_writer에 단순히 경로를 지정하는것 만으로 엑셀로의 변환이 실행됩니다.

df1.to_excel(excel_writer=adress+'test1.xlsx')

결과는 아래와 같습니다.



sheet_name 인수의 사용
sheet_name인수를 통해 데이터가 변환되는 엑셀의 시트명을 지정할 수 있습니다.

df1.to_excel(excel_writer=adress+'test2.xlsx',sheet_name='test_sheet')

결과는 아래와 같이 시트명이 적용된 것을 확인할 수 있습니다.


여러 시트에 데이터를 적용하고자 할 경우 ExcelWriter 객체로 writer를 지정해 입력하면 됩니다.

with pd.ExcelWriter(adress+'test3.xlsx') as writer:
    df1.to_excel(writer, sheet_name='test_sheet_1')
    df2.to_excel(writer, sheet_name='test_sheet_2')

결과는 아래와 같이 두 시트에 데이터가 각각 적용된 것을 확인할 수 있습니다.



na_rep 인수의 사용
na_rep 인수를 통해 결측치를 대체할 값을 지정할 수 있습니다. 기본값은 공백(" ")입니다.

df1.to_excel(excel_writer=adress+'test4.xlsx',na_rep='BLANK')

아래와 같이 결측치가 'BLANK'라는 문자열로 대체된 것을 확인할 수 있습니다.



columns인수의 사용
columns인수를 통해 변환할 열을 따로 지정할 수 있습니다.

df1.to_excel(excel_writer=adress+'test6.xlsx',columns=[0])

아래와 같이 0열만 변환된 것을 확인할 수 있습니다.



header 인수의 사용
header인수를 통해 변환될 데이터의 열 이름을 지정할 수 있습니다.

df1.to_excel(excel_writer=adress+'test7.xlsx',header=['col1','col2'])

아래와 같이 열 이름이 'col1', 'col2'로 변경된 것을 확인할 수 있습니다.



Index 인수의 사용
Index 인수를 통해 인덱스를 출력할지 여부를 지정할 수 있습니다. 기본값은 True로 인덱스를 출력합니다.

df1.to_excel(excel_writer=adress+'test8.xlsx', index=False)

아래와같이 인덱스가 제거된 상태로 데이터가 변환된 것을 알 수 있습니다.



Index_label인수의 사용
Index_label 인수를 통해 인덱스명을 지정할 수 있습니다. Multi Index라면 리스트 형식으로 입력해주어야합니다.

df2.to_excel(excel_writer=adress+'test9.xlsx', index_label=['idx1','idx2'])

아래와 같이 Multi Index에서 각각 인덱스의 명칭이 입력된 것을 확인할 수 있습니다.



startrow / startcol 인수의 사용
startrow / startcol 인수는 엑셀 변환시 데이터의 위치를 지정하는 인수입니다. 양수를 입력할 경우 처음 시작위치에서 행의 경우 아래로, 열의 경우 우측으로 해당 숫자만큼 이동하여 변환됩니다.

df1.to_excel(excel_writer=adress+'test10.xlsx', startrow=2,startcol=4)

결과는 아래와 같이 2행 아래로 4열 우측으로 데이터가 입력된 것을 확인할 수 있습니다.



merge_cells인수의 사용
merge_cells의 기본값은 True로 인덱스에 중복값이 있을 경우 병합하여 출력합니다.
False인 경우 각각 인덱스가 그대로 출력됩니다.
merge_cells=True인 경우

df2.to_excel(excel_writer=adress+'test11_1.xlsx')


merge_cells=False인 경우

df2.to_excel(excel_writer=adress+'test11_2.xlsx', merge_cells=False)



inf_rep 인수의 사용
inf_rep 인수는 무한 값의 엑셀 변화시 표현값을 지정합니다. 기본값은 inf입니다. (엑셀에는 무한값에 대한 기본 표현값이 없습니다.)

df1.to_excel(excel_writer=adress+'test12.xlsx', inf_rep='∞')

아래와 같이 무한을 표현하는 math.inf 값이 문자 ∞ 로 입력된 것을 알 수 있습니다.



freeze_panes인수의 사용
freeze_panes인수의 값을 튜플로 입력함으로써 해당 (행,열) 기준으로 틀고정을 설정할 수 있습니다.

df1.to_excel(excel_writer=adress+'test13.xlsx', freeze_panes=(1,1))

아래와 같이 (1,1)을 기준으로 틀고정이 된 것을 확인할 수 있습니다.

반응형

+ 최근 글