https://www.youtube.com/playlist?list=PLrpXwtuxGqcIeV2DdenqkliloxifMBmyA
모든 판다스 강의 모아보기
www.youtube.com
import pandas as pd
file = "01vlookup.xlsx"
df1 = pd.read_excel(file,sheet_name="Sheet1",
header=0,
# names=['이름','제품'],
index_col=None,
usecols="A:B",# 떨어진열 usecols="A:B,F:G",
skiprows=3)
# df1 = pd.read_excel(file, sheet_name=1) # 0,1,2 두번째 시트 데이터 첫번째 행부터 있음
# df1
# print(df1)
# 이름 제품
# 0 백철민 아이스티
# 1 박태인 레몬에이드
# 2 국지용 아메리카노
# 3 강민석 레몬에이드
# 4 박훈정 아이스티
# 5 박상남 아메리카노
# 6 김대현 레몬에이드
# 7 서지후 바닐라라떼
# 8 구교환 아메리카노
# 9 박유환 아이스티
# 10 배호근 얼그레이
# 11 박종환 유자차
# 12 강형석 바닐라라떼
# print(df1.info())
# <class 'pandas.core.frame.DataFrame'>
# RangeIndex: 13 entries, 0 to 12
# Data columns (total 2 columns):
# # Column Non-Null Count Dtype
# --- ------ -------------- -----
# 0 이름 13 non-null object
# 1 제품 13 non-null object
# dtypes: object(2)
# memory usage: 340.0+ bytes
# None
# print(df1.describe())
# 이름 제품
# count 13 13
# unique 13 6
# top 백철민 아이스티
# freq 1 3
# print(df1['이름'].describe)
# <bound method NDFrame.describe of 0 백철민
# 1 박태인
# 2 국지용
# 3 강민석
# 4 박훈정
# 5 박상남
# 6 김대현
# 7 서지후
# 8 구교환
# 9 박유환
# 10 배호근
# 11 박종환
# 12 강형석
# Name: 이름, dtype: object>
# print(df1['이름'])
# 0 백철민
# 1 박태인
# 2 국지용
# 3 강민석
# 4 박훈정
# 5 박상남
# 6 김대현
# 7 서지후
# 8 구교환
# 9 박유환
# 10 배호근
# 11 박종환
# 12 강형석
# Name: 이름, dtype: object
# print(df1.count())
# 이름 13
# 제품 13
# dtype: int64
# print(df1['이름'].count())
# 13
# print(df1['이름'][0])
# 백철민
# print(df1.values)
# [['백철민' '아이스티']
# ['박태인' '레몬에이드']
# ['국지용' '아메리카노']
# ['강민석' '레몬에이드']
# ['박훈정' '아이스티']
# ['박상남' '아메리카노']
# ['김대현' '레몬에이드']
# ['서지후' '바닐라라떼']
# ['구교환' '아메리카노']
# ['박유환' '아이스티']
# ['배호근' '얼그레이']
# ['박종환' '유자차']
# ['강형석' '바닐라라떼']]
# print(df1.index)
# RangeIndex(start=0, stop=13, step=1)
# print(df1.columns)
# Index(['이름', '제품'], dtype='object')
# print(df1.shape) # (행,열)
# (13, 2)
# print(df1['제품'].unique()) # 중복값 제외
# ['아이스티' '레몬에이드' '아메리카노' '바닐라라떼' '얼그레이' '유자차']
# print(df1['제품'].nunique())
# 6
# df = pd.DataFrame(df1,index=[0,2,4])
# print(df)
# 이름 제품
# 0 백철민 아이스티
# 2 국지용 아메리카노
# 4 박훈정 아이스티
데이터 뒤에 공백있는 경우
import openpyxl
wb = openpyxl.load_workbook(file) #워크북 객체 생성
ws = wb["Sheet1"] #시트 객체 생성
block_skiprow = 3
block_maxrow = block_skiprow # 초기값 = 0
for cell in ws['F'][block_skiprow+1:]:
# print(cell)
if cell.value is not None:
block_maxrow += 1
else:
break
block_nrows = block_maxrow - block_skiprow
df2 = pd.read_excel(file,sheet_name="Sheet1",
header=0,
names=['제품','가격'],
index_col=None,
usecols="F:G",
# dtype={'제품':str,'가격':str},
skiprows=3,
nrows=block_nrows)
# df2 = df2.dropna()
# df2 = df2.astype({'가격':int})
df2
특정 범위 지우기 / 특정 범위에 덮어쓰기
import openpyxl
from openpyxl.utils.cell import column_index_from_string
from openpyxl.utils import get_column_letter
import pandas as pd
# from openpyxl.styles import colors
# from openpyxl.styles import Color
# from openpyxl.styles import PatternFill
# file = r"B:\python\jupyternotebook\pandas_엑셀투파이썬\01vlookup.xlsx"
workbook = openpyxl.load_workbook(file)
sheet = workbook['Sheet1']
# 기존 데이터 지우기
# 열'J'에서 'L'까지의 모든 열을 지정
start_column = 'J'
end_column = 'L'
start_row = 4 # 제목열 제외하고 데이터 시작행 0,1,2,3,4,5
# 특정 범위 지우기
for column_letter in range(column_index_from_string(start_column), column_index_from_string(end_column) + 1):
column_cells = sheet[get_column_letter(column_letter)][start_row:]
# 열 범위의 모든 셀을 확인하고 데이터가 있는 경우 삭제
for cell in column_cells:
if cell.value is not None:
cell.value = None
# cell.fill = openpyxl.styles.PatternFill(fill_type='solid', fgColor=Color('FFFF00'))
# cell.fill = openpyxl.styles.PatternFill(fill_type=None)
# 변경 내용을 파일에 저장
workbook.save(file)
# 파일 닫기
workbook.close()
# 열 문자를 숫자(인덱스)로 변환
# def column_letter_to_number(column_letter):
# result = 0
# for char in column_letter:
# result = result * 26 + (ord(char) - ord('A'))
# return result
# column_number = column_letter_to_number('A')
# column_number = column_letter_to_number('A')
# column_letter = 'A'
# print(ord(column_letter) - ord('A'))
# 특정 범위에 쓰기
with pd.ExcelWriter(file, mode='a', engine='openpyxl', if_sheet_exists='overlay') as w:
# df3.to_excel(w, sheet_name='Sheet1', index=False, header=False, startcol=column_letter_to_number(start_column), startrow=start_row) # 제목열 제외하고 데이터 시작행 0,1,2,3,4,5
# df3.to_excel(w, sheet_name='Sheet1', index=False, header=False, startcol=ord(start_column) - ord('A'), startrow=start_row) # 제목열 제외하고 데이터 시작행 0,1,2,3,4,5
df3.to_excel(w, sheet_name='Sheet1', index=False, header=False, startcol=column_index_from_string(start_column) - column_index_from_string("A"), startrow=start_row) # 제목열 제외하고 데이터 시작행 0,1,2,3,4,5
'컴퓨터 > Python' 카테고리의 다른 글
excel to python 개인별 성적표 (0) | 2023.10.16 |
---|---|
python faker 한글 더미 데이터 (0) | 2023.09.08 |
class 이해 (0) | 2023.07.27 |
python 동영상 mp4 화면비율 변경 /youtube 영상 윈도우창에 출력 (0) | 2023.07.13 |
python email 비밀번호 class (0) | 2023.07.13 |