1. 엑셀 다루기
1. 용어 설명
* openpyxl
openpyxl은 파이썬에서 엑셀 파일을 다루기 위한 라이브러리입니다.
이 라이브러리를 사용하면 파이썬 코드로 엑셀 파일을 읽거나 쓸 수 있습니다.
엑셀 파일을 다루는데 필요한 다양한 기능을 제공하며, 특히 대용량의 데이터를 처리할 때 효율적입니다.
openpyxl은 엑셀 파일의 셀, 시트, 행, 열 등을 객체로 다룰 수 있어서, 엑셀 파일을 다루는데 유용합니다.
이 라이브러리를 사용하면 파이썬에서 엑셀 파일을 다루는 일을 쉽게 할 수 있습니다.
예를 들어, 엑셀 파일에서 데이터를 읽어와서 그래프를 그리거나,
엑셀 파일에 데이터를 쓰는 등의 작업을 쉽게 할 수 있습니다.
openpyxl은 파이썬 2.7과 3.x를 모두 지원합니다.
또한 오픈소스 라이브러리이므로 무료로 사용할 수 있습니다.
따라서 파이썬에서 엑셀 파일을 다룰 때 openpyxl을 사용하는 것이 좋습니다.
2. 실습 - 엑셀 다루기
1) 워크 시트 쓰기
#%%
#엑셀 다루기
from openpyxl import Workbook
# 엑셀 파일 쓰기
wb = Workbook()
# %%
# 워크 시트 쓰기
ws1 = wb.create_sheet("새워크시트")
# %%
# 엑셀 파일 저장
wb.save('wb.xlsx')
# %%
# 워크 시트 쓰기 - 기본값 맨 뒤에 생성
# 맨 처음에 생성
ws2 = wb.create_sheet("시트2",0)
# %%
# 끝에서 두번째 생성
ws3 = wb.create_sheet("시트3",-1)
# %%
# 엑셀 파일 저장
wb.save('wb.xlsx')
2) 시트 이름 확인
# %%
# 시트 이름 확인
wb.sheetnames
# %%
# 시트 이름 변경
ws1.title = "시트1"
# %%
# 시트 이름 확인
wb.sheetnames
# %%
# 반복문으로 시트 이름 확인
for i in wb:
print(i.title)
3) 시트활성화 후 열 확인
# %%
# 시트 활성화 후 열 체크
ws = wb.active
# 열
ws["A"]
ws[2:3]
ws["A:C"]
4) 반복문 활용해서 다중셀 접근
* 행 단위와 열 단위
# %%
# 반복문으로 다중셀 접근
# 행 단위
for i in ws.iter_rows(min_row=2, max_row=3):
print(i)
for j in i:
print(j)
# %%
# 열 단위
for i in ws.iter_cols(min_row=1, max_row=2, max_col = 3):
print(i)
for j in i:
print(j)
* 모든 행단위와 모든 열 단위
# %%
# 모든 행
list(ws.rows)
tuple(ws.rows)
# 모든 열
list(ws.columns)
5) 데이터 입력
# %%
# 데이터 입력
ws["A1"] = "Korea"
6) 데이터 확인
* 셀 전체 값, 행 단위, 열 단위 접근
# %%
# 셀의 값에 접근
for i in ws.values:
print(i)
for j in i:
print(j)
# %%
# 확인
# 행 단위
for i in ws.iter_rows(min_row=1, max_row=3, max_col = 3, values_only=True):
print(i)
for j in i:
print(j)
# %%
# 열 단위
for i in ws.iter_cols(min_row=1, max_row=3, max_col = 3, values_only=True):
print(i)
for j in i:
print(j)
* 결과물
7) 엑셀 불러오기
* 엑셀 불러오기, 원하는 값 출력
# %%
# 엑셀 불러오기
from openpyxl import load_workbook
wb = load_workbook(r"/content/drive/MyDrive/BDA/part6/stock price.xlsx", data_only=True)
ws = wb["Sheet1"]
# %%
print(ws["A2"].value)
print(ws["D2"].value)
# %%
# 셀 좌표로 값 출력
ws.cell(3,2).value
# %%
ws_stock = ws["B2":"B11"]
for row in ws_stock:
for cell in row:
print(cell.value)
# 행이 열마다 투플 형태로 갖고 있기 때문에 이중 포문을 돌려야 함
* 모든 행 값 출력
# %%
# 모든 행 값
for row in ws.rows:
for cell in row:
print(cell.value)
* 모든 열 값 출력
# %%
# 모든 열 값
for col in ws.columns:
for cell in col:
print(cell.value)
* 모든 행과 열 값 [DB 형태로 가져오기]
# %%
# 모든 행과 열 값 [DB 형태로 가져오기]
values = []
for row in ws.rows:
row_values = []
for cell in row:
row_values.append(cell.value)
values.append(row_values)
print(values)
8) 값의 변경
* 변경 사항
# %%
# 값 변경 후 저장
ws.cell(2,4,1000)
ws.cell(3,4,2000)
ws.cell(4,4,3000)
wb.save("stock_modify.xlsx")
* 변경 전
* 변경 후
3. 이론 - DB 다루기
1) 이론
* 순서 1
1. 오라클 외부라이브러리 설치
2. 오라클 DB 생성
3. CX_oracle(로그인) 임포트
4. 커서 <- SQL 실무, 결과
5. SQL 문법 사용 (DDL - 자동커밋, DML+commit - X)
6. 커서 종료
* 순서 2
1. 테이블 생성
2. insert
3. select 조회
4. 테이블 설치
4. 실습 - DB 다루기
1) 아나콘다 설치, vscode 설치 후 vscode 실행
아나콘다에서 vscode 실행
2) 터미널에서 오라클 설치
python -m pip install cx_Oracle --upgrade
3) 테이블 생성
#%%
import cx_Oracle as oci
# db connection
con = oci.connect("scott/tiger@localhost:1521/orcl")
# cursor
cur=con.cursor()
# SQL
sql = "Create table test (ID int, Name varchar(32))"
cur.execute(sql)
print(cur.execute("select * from test").fetchall())
con.close()
- 생성된 테이블이 있을 경우 실행 안해도 됨.
4) 테이블에 값 집어 넣기
#%%
import cx_Oracle as oci
# db connection
con = oci.connect("scott/tiger@localhost:1521/orcl")
# cursor
cur=con.cursor()
# insert
while True:
data1 = input("사용자 ID를 입력하세요> ")
if data1 == "":
break
data2 = input("사용자 이름을 입력하세요> ")
sql = "INSERT INTO TEST VALUES ('" + data1 + "', '" + data2 + "')"
cur.execute(sql)
con.commit()
con.close()
- 공백 상태에서 enter를 적용할 경우 프로그램은 종료.
5) select을 통한 데이터 조회
#%%
import cx_Oracle as oci
# db connection
con = oci.connect("scott/tiger@localhost:1521/orcl")
# cursor
cur=con.cursor()
# SQL
sql = "select * from TEST"
cur.execute(sql)
print("사용자 ID 사용자 이름")
print("-"*20)
#
while True:
row = cur.fetchone()
if row is None:
break
data1 = row[0]
data2 = row[1]
print("%3s %13s" % (data1, data2))
# close
con.close()
- 해당 값으로 입력 조회한 출력값이 생성
6) 테이블 드랍 (삭제)
#%%
import cx_Oracle as oci
# db connection
con = oci.connect("scott/tiger@localhost:1521/orcl")
# cursor
cur=con.cursor()
# SQL
sql = "DROP TABLE TEST"
cur.execute(sql)
print(cur.execute("SELECT * FROM TEST").fetchall())
# close
con.close()
5. 복습 - 파이썬 머신러닝 판다스 데이터 분석
했던거 돌아보기
* 핵심
- 엑셀, db 사용하기.
* 링크 (작성한 계정으로 로그인해서 들어가기)
'수업내용 정리' 카테고리의 다른 글
자바의 정석 3 정리 - 연산자 (scanner, charat, next, 삼항연산자) 등등 (0) | 2023.05.09 |
---|---|
자바의 정석 1,2 정리 - 자바 설치~변수의 종류~형 변환 (0) | 2023.05.08 |
파이썬 머신러닝 판다스 데이터 분석 7-3 정리 - 머신러닝 데이터 분석 - 시그모이드 함수의 식, 로지스틱 회귀, 교차검증 (0) | 2023.05.03 |
파이썬 머신러닝 판다스 데이터 분석 7 정리 - 머신러닝 데이터 분석 (0) | 2023.05.02 |
파이썬 머신러닝 판다스 데이터 분석 6,7 정리 - 데이터프레임의 다양한 응용, 머신러닝 데이터 분석 (0) | 2023.05.01 |