# xLsx 파일 읽기 : pip install openpyxl
# xLs
import openpyxl # xlsx 형식의 엑셀파일을 읽기 위한
filename = "sales_2015.xlsx"
# 엑셀 파일의 내용
book = openpyxl.load_workbook(filename)
sheet = book.worksheets[0]
data=[] # 모든 데이터 정보를 리스트로 저장
# 리스트로 한행의 정보를 저장. 한 행의 정보를
# 리스트로 저장
# sheet.rows : 행의 값들
# row : 한개의 행 정보 저장
for row in sheet.rows :
line = [] #한 행의 셀의 값들을 리스트 저장
#enumerate : 리스트에서 데이터와 index 값을 제공
for l,d in enumerate(row) :
print(l,",",d,",",d.value)
line.append(d.value)
# print(line) # 한행의 데이터를 리스트로 저장
data.append(line)
print(data)
# enumerate 함수를 이용하여 data 조회하기
for i,d in enumerate(data) :
print(i+1,":",d)
# xlsx 파일의 모든 sheet를 읽기
import openpyxl
filename = "sales_2015.xlsx"
book = openpyxl.load_workbook(filename)
#book.worksheets : 모든 sheet 정보 저장
for i, sheet in enumerate(book.worksheets):
print(book.sheetnames[i])
data = []
for r,row in enumerate(sheet.rows):
line=[]
for i,c in enumerate(row) :
line.append(c.value)
print(r+1,":",line)
data.append(line)
# xls 파일 읽기
# pip install xlrd
from xlrd import open_workbook
infile = "ssec1804.xls"
workbook = open_workbook(infile)
print("sheet의 갯수", workbook.nsheets)
# workbook.sheets() : xls 파일의 sheet의 데이터들
# worksheet : 한개의 sheet 정보
for worksheet in workbook.sheets():
print("worksheet 이름 :", worksheet.name)
print("행의 수:", worksheet.nrows)
print("컬럼의 수 :", worksheet.ncols)
for row_index in range(worksheet.nrows):
for column_index in range(worksheet.ncols):
print(worksheet.cell_value(row_index,column_index),
",",end="")
print()
### pandas
### pip install pandas
import pandas as pd
# 판다스로 xlsx 파일 읽기
infile = "sales_2015.xlsx"
# sheet_name = None : 모든 sheet를 읽기
# index_col = None : 인덱스 컬럼 없음으로 설정
df = pd.read_excel(infile,sheet_name=None,index_col=None)
print(type(df)) #dictionary
print(df)
row_output = [] # 모든 sheet의 데이터 저장
for worksheet_name, data in df.items():
print("===",worksheet_name,"===")
# data 중 판매가격이 200 초과되는 데이터만 row_output리스트에 저장
# $25,000 같은 값을 숫자 25000으로 바꾸고 float 형태로 바꾸고 숫자 200과 비교한다.
row_output.append(data[data["Sale Amount"].replace("$","").
replace(",","").astype(float) > 200.0])
print(data)
print(type(data))
# sales_all_2015.xlsx 파일에 row_output 데이터를 저장하기
# pd.concat : row_output 데이터를 연결하기
# axis = 0 row로 연결
# axis = 1 column으로 연결
# ignore_index=True :인덱스 없음
filtered_row = pd.concat(row_output,axis=0,ignore_index=True)
print(type(filtered_row)) #데이터 프레임 객체
writer = pd.ExcelWriter("sales_all_2015.xlsx",engine="openpyxl")
# to_excel : 데이터 프레임 객체를 엑셀 형태의 데이터로 변경
# 저장할 엑셀 파일의 데이터(내용) 정보
filtered_row.to_excel(writer,sheet_name="sale_2015",index=False)
writer.save() # 파일로 생성
# pandas를 이용하여 xls 파일 읽고 쓰기.
# sheet를 여러개로 저장하기
import pandas as pd
infile = "ssec1804.xls"
outfile = "ssec1804_bak.xls"
writer = pd.ExcelWriter(outfile) # 복사될 파일
df = pd.read_excel(infile,sheet_name=None,index_col=None)
for worksheet_name,data in df.items() :
print("===",worksheet_name,"===")
print(data)
data.to_excel\
(writer,sheet_name=worksheet_name,index=False,header=False)
writer.save()
writer.close()
'Python' 카테고리의 다른 글
Python - 판다스 xlsx 불러오기, 저장하기 연습문제 (infile,outfile) (0) | 2021.06.22 |
---|---|
Python - 판다스 기초, 데이터프레임(대표값, 데이터프레임복사, 행/열 삭제) (0) | 2021.06.21 |
Python - Database 연습문제 (0) | 2021.06.21 |
Python - Database (0) | 2021.06.18 |
Python - 클래스, 상속 연습문제 (0) | 2021.06.17 |