pandas 읽기 및 쓰기 Excel
read_excel()
과to_excel()
의 일부 세부 사항을 소개하고 비교적 미관적인 Excel 작업표를 어떻게 출력하는지 연구하고자 한다.pandas Excel 파일 읽기
문법
DataFrame.read_excel()
구문:pandas.read_excel(io,
sheet_name=0,
header=0,
names=None,
index_col=None,
parse_cols=None,
usecols=None,
squeeze=False,
dtype=None,
engine=None,
converters=None,
true_values=None,
false_values=None,
skiprows=None,
nrows=None,
na_values=None,
keep_default_na=True,
verbose=False,
parse_dates=False,
date_parser=None,
thousands=None,
comment=None,
skip_footer=0,
skipfooter=0,
convert_float=True,
mangle_dupe_cols=True,
**kwds)
매개 변수와 되돌아오는 값에 대한 설명은pandas 문서를 참고하십시오.
가장 간단한 방법은 파일 이름 매개 변수만 지정하고 xls문과 xlsx 파일 형식을 지원하며 함수의 반환 값은 DataFrame 형식의 대상입니다.예를 들어 D 디스크 디렉터리에 있는 소스를 읽습니다.xlsx 파일:
import pandas as pd
df1 = pd.read_excel(r'D:/source.xlsx)
py 파일이 있는 디렉토리의 Excel 파일을 읽으려면 다음 코드를 참조하십시오.
import pandas as pd
import os
# get path of current directory
curr_path = os.path.dirname(os.path.abspath(__file__))
fname = os.path.join(curr_path, 'users.xlsx')
df2 = pd.read_excel(fname)
읽을 워크시트 지정
여러 개의 워크시트가 있는 Excel 파일에 대해pandas는 기본적으로 첫 번째 워크시트
sheet_name=0
를 읽습니다.다음 두 가지 방법으로 읽을 워크시트를 지정할 수 있습니다.# : index
df3 = pd.read_excel(file_name, sheet_name=0)
# :
df4 = pd.read_excel(file_name, sheet_name='Sheet1')
지정한 열 가져오기
지정한 열만 가져오려면
usecols
매개 변수를 통해 A:D
및 H
이 4열을 가져오려면 다음과 같은 두 가지 방법이 있습니다.df6 = pd.read_excel(r'D:/source.xlsx', usecols='A:D,H')
#
df6 = pd.read_excel(r'D:/source.xlsx', usecols=[0,1,2,3,7])
헤더 지정
기본적으로pandas는 첫 번째 행동 헤더(header)를 가정합니다. 만약에 Excel이 첫 번째 줄에서 시작하지 않았다면,
header
파라미터는 어떤 줄을 헤더로 할 것인지를 지정하는 데 사용되고, 헤더는 DataFrame에서 열 인덱스(column index)로 변하고, 헤더 파라미터는 0에서 시작합니다. 예를 들어 두 번째 줄을 헤더로 할 경우:df = pd.read_excel(file_name, header=1)
pandas 쓰기 Excel
문법
DataFrame.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)
매개 변수와 되돌아오는 값에 대한 설명은pandas 문서를 참고하십시오.
데이터가 Excel에 쓰려면 먼저 engine를 설치해야 합니다. engine이 데이터를 Excel에 쓰고pandas는 Openpyx나 xlsxwriter를 쓰기 엔진으로 사용합니다.
Excel에 단일 객체를 쓰려면 file name 을 지정하면 됩니다.
import pandas as pd
import os
path = os.path.dirname(os.path.abspath(__file__))
source_file = os.path.join(path, 'source.xlsx')
output_file = os.path.join(path, 'output.xlsx')
df = pd.read_excel(source_file, sheet_name=0)
df.to_excel(output_file)
하면, 만약, 만약...xlsx 파일이 이미 존재합니다.
to_excel()
먼저 output을 삭제합니다.xlsx 파일, 그리고 새로운 파일을 다시 생성합니다. 기본적으로 색인 열을 추가합니다. 색인은 0에서 n의 정수입니다.인덱스 사용 안 함
일반적으로 인덱스가 필요 없는 Excel 내보내기
index
매개변수를 False로 설정하면 됩니다.df.to_excel(output_file, index=False)
다중 워크시트 내보내기
여러 개의 작업표를 내보내려면 excel writer engine을 명확하게 제시하고
DataFrame.to_excel()
방법을 호출해야 합니다.import pandas as pd
import os
path = os.path.dirname(os.path.abspath(__file__))
source_file = os.path.join(path, 'source.xlsx')
output_file = os.path.join(path, 'output.xlsx')
df1 = pd.read_excel(source_file, sheet_name=0)
df2 = pd.read_excel(source_file, sheet_name=0, usecols='A:D,H')
with pd.ExcelWriter(output_file, engine='xlsxwriter') as writer:
df1.to_excel(writer, sheet_name='Sheet1', index=False)
df2.to_excel(writer, sheet_name='Sheet2', index=False)
작업표 미화
pandas에서 내보낸 작업표는 아름답지 않습니다. 작업표를 미화하려면
to_excel()
방법 이후 Excel writer engine의 포맷 설정 기능을 통해 포맷을 설정할 수 있습니다.테스트에 따르면 to_excel()
파일을 먼저 삭제하기 때문에 Template를 사용하여 미리 정의된 형식을 저장할 수 없습니다.따라서 보고서 출력과 같은 형식이 있는 Excel 파일을 내보내려면 Template + Excel writer engine 수동 코드를 고려할 수 있습니다.Creating Advanced Excel Workbooks with Python 이 글은 xlsxwriter의
add_table()
방법을 사용하여 Excel에서 Table 대상을 만들고 미리 정의된 형식을 선택하는 방법을 설명합니다.나는 코드를 가공하여 더욱 일반적인 적합성을 가지게 했다.import pandas as pd
import os
def get_col_widths(dataframe):
return [max([len(str(s)) for s in dataframe[col].values]
+ [len(col)]) for col in dataframe.columns]
def fmt_excel(writer, sheetname, dataframe):
# Get the workbook and the summary sheet so we can add the formatting
workbook = writer.book
worksheet = writer.sheets[sheetname]
col_count = dataframe.shape[1]
row_count = dataframe.shape[0]
col_names = []
for i in range(0, col_count):
col_names.append({'header': dataframe.columns[i]})
# rng = 'A1:H{}'.format(row_count + 1)
worksheet.add_table(0, 0, row_count,col_count-1, {
'columns': col_names,
'style': 'Table Style Medium 20'
})
# auto column size
col_widths = get_col_widths(dataframe)
for i, width in enumerate(col_widths):
worksheet.set_column(i, i, width)
path = os.path.dirname(os.path.abspath(__file__))
source_file = os.path.join(path, 'source.xlsx')
output_file = os.path.join(path, 'output.xlsx')
df = pd.read_excel(source_file, sheet_name=0)
writer = pd.ExcelWriter(output_file, engine='xlsxwriter')
df.to_excel(writer, 'Sheet1', index=False)
fmt_excel(writer, 'Sheet1', df)
writer.save()
참고
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
pandas 읽기 및 쓰기 Excelpandas 읽기와 쓰기 Excel은 중복된 데이터 가공 작업을 pandas에 맡기고 수동 노동을 절약하며 사용하기도 편리하지만 출력의 형식은 그다지 아름답지 않다.본고는 read_excel()과to_excel()의...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.