
시작하기 전에 import 하기
import numpy as np import pandas as pd import numba from pandas import DataFrame from datetime import datetime import math import pyperclip
DataFrame.to_csv(path_or_buf=None, sep=',', na_rep='', float_format=None, columns=None, header=True, index=True, index_label=None, mode='w', encoding=None, compression='infer', quoting=None, quotechar='"', line_terminator=None, chunksize=None, date_format=None, doublequote=True, escapechar=None, decimal='.', errors='strict', storage_options=None)
to_csv 메서드는 데이터프레임 객체를 csv 형식으로 변환하는 메서드입니다.
기본 사용법
※ 자세한 내용은 아래 예시를 참고 바랍니다.
df.to_csv(path_or_buf=None, sep=',', na_rep='', float_format=None, columns=None, header=True, index=True, index_label=None, mode='w', encoding=None, compression='infer', quoting=None, quotechar='"', line_terminator=None, chunksize=None, date_format=None, doublequote=True, escapechar=None, decimal='.', errors='strict', storage_options=None)
path_or_buf : csv파일이 생성되는 경로와 파일명 입니다.
sep : csv 파일의 구분자 입니다. 기본값은 ' , ' 입니다.
na_rep : 결측값을 어떻게 출력할지 지정할 수 있습니다. 기본값은 공백 입니다.
float_format : 부동소수점의 경우 어떤 형식으로 출력할지 지정할 수 있습니다.
columns : 출력할 열을 지정하는 인수 입니다.
header : 열 이름을 설정합니다. False일 경우 열 이름을 출력하지 않습니다.
index : 인덱스의 출력 여부 입니다. False일 경우 인덱스를 출력하지 않습니다.
index_label : 인덱스의 레이블(인덱스명)을 설정합니다.
mode : {'w' / 'a'} 쓰기 모드를 지정합니다. a로 지정할 경우 기존 파일 아래에 값을 추가하여 입력하게됩니다.
encoding : 인코딩 설정입니다. 기본값은 utf-8입니다.
compression : {‘infer’, ‘gzip’, ‘bz2’, ‘zip’, ‘xz’, None} 압축 설정을 지정합니다. 기본값은 'infer'로 적절한 압축형식을 추론합니다.
quoting : 값에 대해서 인용구 설정을 할 수 있습니다. 어떤 값에 대해서 인용구를 설정할지는 아래와 같습니다.
{0 : MINIMAL 문자와 특수문자 / 1 : ALL 모든필드 / 2 : NONNUMERIC 숫자가 아닌것 / 3 : NONE 안함}
quotechar : quoting에서 지정한 인용구에 대해서 인용구에 사용할 문자를 지정합니다. 기본값은 쌍따옴표 입니다.
chunksize : 한번에 불러올 행의 수를 지정합니다. 예를들어 100을 입력할 경우 한번에 100행씩 변환합니다. 속도 향상에 기여합니다.
date_format : 값이 시계열(datetime) 데이터인 경우 그 값의 포맷을 지정합니다.(예 : '%Y-%m')
doublequoto : 값중에 quotechar과 같은 값이 있을때, 그 값을 인용구 처리할지의 여부 입니다.
escapechar : doublequoto=False인 경우 인용구와 중복되는 그 값을 어떤 값으로 변경할지 여부입니다.
decimal : 자리수로 쓰이는 문자를 지정합니다.즉, 100,000의 경우 decimal="."으로 할 경우100.000으로 표시합니다.
errors : 인코딩 오류에 대해서 오류 처리를 정할 수 있습니다. 가능한 값은 아래와 같습니다.
{strict : 인코딩 오류에 ValueError 발생 / ignore : 무시 / replace 잘못된 데이터를 대체마커 '?' 지정 / ...}
더 많은 값에 대해서는 python library 의 strict 문서 참고 바랍니다.
storage_options : 특정 스토리지 연결에 적합한 추가 옵션, 예: 호스트, 포트, 사용자 이름, 비밀번호 등을 지정합니다.
그 전에 먼저 콜웹과 구글드라이브를 연동하고, content폴더에 파일을 생성합니다.
먼저 기본적인 사용법 예시를위하여 3x2 짜리 데이터를 만들어 보겠습니다.
data = [[1,np.nan],['A',4.1],['-','3']] df = pd.DataFrame(data)
기본적인 사용법
기본적으로 path_or_buf에 경로와 파일 이름을 지정해주면, 해당 경로에 df가 변환된 csv파일이 생성됩니다.df.to_csv(path_or_buf='test1.csv')
sep 인수의 사용
sep 인수는 csv파일의 구분자를 설정해 줍니다. 기본값은 쉼표(,)입니다.df.to_csv(path_or_buf='test2.csv', sep='-')
na_rep인수의 사용
na_rep인수는 데이터의 결측값(NaN)을 어떤 값으로 출력할지를 지정할 수 있습니다.df.to_csv(path_or_buf='test3.csv', na_rep=100)
float_format 인수의 사용
float_format인수는 부동소수점 형식 데이터의 출력 포맷을 설정할 수 있습니다.
만약 값으로 그냥 string 형태의 값을 입력할 경우 해당 값이 출력됩니다.df.to_csv(path_or_buf='test4.csv', float_format='%.2f')
columns인수의 사용
columns인수는 출력할 대상 열을 지정하는 인수입니다. 따로 입력하지 않는경우 모든 열이 csv변환 됩니다.df.to_csv(path_or_buf='test5.csv', columns=[0])
header 인수의 사용
header인수는 열의 이름을 지정하는 인수입니다. False일 경우 열 이름을 출력하지 않습니다.df.to_csv(path_or_buf='test6.csv', header=['col1','col2'])
index인수의 사용
index인수는 인덱스의 출력 여부를 지정할 수 있습니다. 기본값은 True 입니다.df.to_csv(path_or_buf='test7.csv', index=False)
index_label인수의 사용
index_lable인수는 출력되는 csv파일의 인덱스명을 지정하는 인수 입니다.df.to_csv(path_or_buf='test8.csv', index_label=['index'])
결과는 아래와 같습니다. 인덱스에 대해서 맨위에 인덱스명이 지정되었습니다.
mode 인수의 사용
mode 인수는 기본값이 w로 기존 데이터에 새 데이터를 덮어씌웁니다. mode='a'인 경우 기존 데이터 아래에 새 데이터를 추가해서 입력합니다.df.to_csv(path_or_buf='test9.csv', mode='w') #기존 데이터 csv파일생성 df2 = pd.DataFrame(data=[[7,8],[9,10]],index=[3,4]) # 추가 입력할 새 데이터 객체 생성 df2.to_csv(path_or_buf='test9.csv', mode='a') # mode=a로 기존데이터 아래에 추가함
이렇게 단순히 추가하는경우 열 이름이 새로 추가되기 때문에, 보기에 깔끔하지 않습니다. 이경우 header=False하여 새로 추가하는 데이터의 열 이름을 삭제해서 깔끔하게 합치는것이 가능합니다.
df.to_csv(path_or_buf='test10.csv', mode='w') df2.to_csv(path_or_buf='test10.csv', mode='a',header=False)
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)
기본적인 사용법
기본적으로는 excel_writer에 단순히 경로를 지정하는것 만으로 엑셀로의 변환이 실행됩니다.df1.to_excel(excel_writer='test1.xlsx')
sheet_name 인수의 사용
sheet_name인수를 통해 데이터가 변환되는 엑셀의 시트명을 지정할 수 있습니다.df1.to_excel(excel_writer='test2.xlsx',sheet_name='test_sheet')
여러 시트에 데이터를 적용하고자 할 경우 ExcelWriter 객체로 writer를 지정해 입력하면 됩니다.
with pd.ExcelWriter('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='test4.xlsx',na_rep='BLANK')
columns인수의 사용
columns인수를 통해 변환할 열을 따로 지정할 수 있습니다.df1.to_excel(excel_writer='test6.xlsx',columns=[0])
header 인수의 사용
header인수를 통해 변환될 데이터의 열 이름을 지정할 수 있습니다.df1.to_excel(excel_writer='test7.xlsx',header=['col1','col2'])아래와 같이 열 이름이 'col1', 'col2'로 변경된 것을 확인할 수 있습니다.
Index 인수의 사용
Index 인수를 통해 인덱스를 출력할지 여부를 지정할 수 있습니다. 기본값은 True로 인덱스를 출력합니다.df1.to_excel(excel_writer='test8.xlsx', index=False)아래와같이 인덱스가 제거된 상태로 데이터가 변환된 것을 알 수 있습니다.
Index_label인수의 사용
Index_label 인수를 통해 인덱스명을 지정할 수 있습니다. Multi Index라면 리스트 형식으로 입력해주어야합니다.df2.to_excel(excel_writer='test9.xlsx', index_label=['idx1','idx2'])아래와 같이 Multi Index에서 각각 인덱스의 명칭이 입력된 것을 확인할 수 있습니다.
startrow / startcol 인수의 사용
startrow / startcol 인수는 엑셀 변환시 데이터의 위치를 지정하는 인수입니다. 양수를 입력할 경우 처음 시작위치에서 행의 경우 아래로, 열의 경우 우측으로 해당 숫자만큼 이동하여 변환됩니다.df1.to_excel(excel_writer='test10.xlsx', startrow=2,startcol=4)
merge_cells인수의 사용
merge_cells의 기본값은 True로 인덱스에 중복값이 있을 경우 병합하여 출력합니다.
False인 경우 각각 인덱스가 그대로 출력됩니다.
merge_cells=True인 경우df2.to_excel(excel_writer='test11_1.xlsx')
merge_cells=False인 경우
df2.to_excel(excel_writer='test11_2.xlsx', merge_cells=False)
inf_rep 인수의 사용
inf_rep 인수는 무한 값의 엑셀 변화시 표현값을 지정합니다. 기본값은 inf입니다. (엑셀에는 무한값에 대한 기본 표현값이 없습니다.)df1.to_excel(excel_writer='test12.xlsx', inf_rep='∞')아래와 같이 무한을 표현하는 math.inf 값이 문자 ∞ 로 입력된 것을 알 수 있습니다.
freeze_panes인수의 사용
freeze_panes인수의 값을 튜플로 입력함으로써 해당 (행,열) 기준으로 틀고정을 설정할 수 있습니다.df1.to_excel(excel_writer='test13.xlsx', freeze_panes=(1,1))아래와 같이 (1,1)을 기준으로 틀고정이 된 것을 확인할 수 있습니다.
DataFrame.to_clipboard(excel=True, sep=None, kwargs)
to_clipboard 메서드는 데이터를 클립보드에 저장하도록 하는 메서드입니다.
기본 사용법
※ 자세한 내용은 아래 예시를 참고 바랍니다.
df.to_clipboard(excel=True, sep=None, kwargs)
excel : 엑셀에 붙여넣기 하기 쉽도록 데이터를 csv형태로 클립보드에 저장할지 여부입니다.
sep : csv형태로 클립보드에 저장 할때 구분자를 지정합니다.
kwargs : csv형태로 클립보드에 저장하기때문에, kwargs에 to_csv에서 사용하는 인수를 그대로 사용할 수 있습니다.
먼저 기본적인 사용법 예시를위하여 3x2 데이터를 만들어 보겠습니다.
df = pd.DataFrame([[1,np.nan],['A',4.1],[math.inf,'3']]) print(df)
기본적인 사용법
기본적으로 메서드를 사용하면 데이터의 값이 csv 형태로 클립보드에 저장되게 됩니다.
엑셀에 붙여넣기를 하면 아래와같이 입력되는 것을 확인할 수 있습니다.
> 만약 excel=False인 경우 붙여넣기 하면 csv파일이 아닌 단순 문자열로 클립보드에 저장되며, 붙여넣기 할 경우 아래와 같이 입력됩니다.
```python
sep 인수를 사용할 경우 구분자를 따로 지정해 줄 수 있습니다.
> kwarg 인수의 사용
기본적으로 csv 형태로 클립보드에 저장이 되기 때문에, to_csv에서 사용하는 인수를 그대로 사용할 수 있습니다.
엑셀에 붙여넣기를 할 경우 to_csv의 header인수를 사용하여 아래와 같이 열 이름이 바뀐것을 알 수 있습니다.
```python