다양한 데이터 저장/읽기 - 엑셀(xlsx) 파일

3. 다양한 데이터 저장/읽기 - 엑셀(xlsx) 파일

3.1. 다양한 데이터 읽기1 - xlsx 파일

  • pandas 라이브러리 활용
    • read_excel() 메서드 활용
import pandas as pd
doc = pd.read_excel("03_data/sample.xlsx")
doc
# 특정한 쉬트만 읽기

import pandas as pd
doc = pd.read_excel("03_data/sample.xlsx", sheetname="Sheet2")
doc

3.2. 다양한 데이터 읽기/저장2 - xlsx 파일

  • openpyxl 라이브러리 활용
    • xlsx 파일 읽고, 저장 모두 가능
    • 설치
      • pip install openpyxl
import openpyxl
 
# 엑셀파일 열기
excel_file = openpyxl.load_workbook('03_data/sample.xlsx')
 
excel_sheet = excel_file.get_sheet_by_name("Sheet1")

for row in excel_sheet.rows:
    print(row[0].row)
    print(row[1].value)
    print(row[2].value)
    
    excel_sheet.cell(row=row[0].row, column=3).value = 10

# 엑셀 파일 저장
excel_file.save("03_data/sample2.xlsx")
excel_file.close()
import openpyxl
 
# 엑셀파일 열기
excel_file = openpyxl.load_workbook('03_data/sample.xlsx')
 
excel_sheet = excel_file.get_sheet_by_name("Sheet1")
total = 0
count = 0
for row in excel_sheet.rows:
    if count > 1:
        print(row[0].row)
        total = total + int(row[2].value)
    count += 1
print(count)
excel_sheet.cell(row=count+1, column=3).value = total

excel_file.save("03_data/sample3.xlsx")
excel_file.close()
import openpyxl
 
# 엑셀파일 열기
excel_file = openpyxl.load_workbook('03_data/sample.xlsx')
 
excel_sheet = excel_file.get_sheet_by_name("Sheet1")
total = 0
count = 0
for row in excel_sheet.rows:
    if count > 1:
        print(row[0].row)
        total = total + int(row[2].value)
    count += 1
print(total)
excel_sheet.cell(row=count+1, column=3).value = total
excel_file.save("03_data/sample3.xlsx")
연습문제: openpyxl 라이브러리 다루기
03_data/sample.xlsx 파일의 Sheet1 에 댓글수 총 합계를 댓글수 마지막 셀에 넣어서 sample03.xlsx 파일로 저장하기

3.3. 다양한 데이터 저장3 - xlsx 파일 (엑셀을 셀단위로 조작하여 엑셀 파일 제대로 만들기)

  • xlsxwriter 라이브러리를 활용
    • xlsx 엑셀 파일 (최신 엑셀 포멧) 작업 가능
    • 셀단위로 세부적인 조작이 가능함
    • 설치
      • pip install xlsxwriter
    • 사용법
      • xlsx 엑셀 파일 생성
      • 엑셀 파일 내 쉬트 생성
      • 셀 단위 길이 설정
      • 셀 단위 폰트 굵기, 정렬, 셀배경색, 폰트색, 셀외곽선종류 설정
      • 셀 단위 데이터 입력
''' 
다음 기능을 모두 구현한 예제 
 - xlsx 엑셀 파일 생성
 - 엑셀 파일 내 쉬트 생성
 - 셀 단위 길이 설정
 - 셀 단위 폰트 굵기, 정렬, 셀배경색, 폰트색, 셀외곽선종류 설정
 - 셀 단위 데이터 입력
'''

import xlsxwriter

title_list = ["웹기술", "빅데이터기술", "IoT", "DataScience", "adfdf", "dfadfadf", "ddd"]
hit_count_list = [2000, 10000, 2000, 2000, 4000, 5000, 6000, 4040]

report_excel = xlsxwriter.Workbook('report.xlsx')
report_sheet1 = report_excel.add_worksheet('report1')
report_sheet2 = report_excel.add_worksheet('report2')

report_sheet1.set_column(0, 0, 5)
report_sheet1.set_column(1, 1, 80)

report_sheet2.set_column(0, 0, 5)
report_sheet2.set_column(1, 1, 80)

cell_format = report_excel.add_format({'bold': True, 'align': 'center', 'fg_color': '#FFC107', 'color': 'blue', 'border': 10})
report_sheet1.write(1, 1, '타이틀', cell_format)
report_sheet1.write(1, 2, '클릭수', cell_format)

report_sheet2.write(1, 1, '타이틀', cell_format)
report_sheet2.write(1, 2, '클릭수', cell_format)

cell_format_gray = report_excel.add_format({'fg_color': '#ECEFF1', 'border': 1})
cell_format_white = report_excel.add_format({'fg_color': 'white', 'border': 1})

for num in range(len(title_list)):
    report_sheet1.write(num + 2, 1, title_list[num], cell_format_gray)
    report_sheet1.write(num + 2, 2, hit_count_list[num], cell_format_white)

for num in range(len(title_list)):
    report_sheet2.write(num + 2, 1, title_list[num], cell_format_gray)
    report_sheet2.write(num + 2, 2, hit_count_list[num], cell_format_white)
    
report_excel.close()