import pandas as pd
# xlsx 파일 읽기
raw = pd.read_excel('product.xlsx', engine="openpyxl")
print(raw)
# 새 변수 만들기 방법1
raw['부가세포함'] = raw['판매가'] * 1.1
# 새 변수 만들기 방법2
def 함수(a):
return a * 1.1
raw['부가세포함'] = raw['판매가'].apply(함수)
# 만약 상품목록 데이터가 7102 Metal Chair 라면 의자를 카테고리 변수에 저장
def 함수2(a):
if a == '7102 Metal Chair':
return '의자'
raw['카테고리'] = raw['상품목록'].apply(함수2)
# 정규식
import re
a = re.search('abc', 'abcdef') # abcdef 에 abc가 포함되어 있으면 TRUE를 반환
print(a)
# 만약 상품목록 데이터가 Chair 를 포함한다면 의자를 카테고리 변수에 저장
def 함수2(a):
if re.search('Chair', str(a) ): # pandas로 오픈한 자료의 문자 데이터가 string이 아닌 object인 경우가 있어 문자 데이터로 변환 후 검사
return '의자'
raw['카테고리'] = raw['상품목록'].apply(함수2)
# abcdefg에 abc가 포함되어있으면 찾은 것을 리스트로 반환 실패하면 빈리스트 반환
re.findall('abc', 'abcdefg')
# 문장의 시작과 끝 검사
결과 = re.findall('^a', 'abcdefg') # a로 시작하는지
print(결과)
결과 = re.findall('g$', 'abcdefg') # g로 끝나는지
print(결과)
# 특수문자 포함여부 검사
결과 = re.findall('\$', 'abc$def$g') # $는 문장의 끝을 의미했으므로 \를 쓰고 $를 사용해야 $를 문자로 인식
print(결과)
# or 검사
결과 = re.findall('[abc]', 'abcdefg') # [] 안에 쓰면 a or b or c 가 포함된 글자를 찾아라 라는 뜻
print(결과) # 같은 단어단위로 or를 사용하고 싶다면 대괄호를 사용하지 않고 abc|def 이런 식으로 사용
# 문자 범위 지정하여 검사
결과 = re.findall('[a-zA-Z]', 'abcdefgHIJK') # 한글은 [가-힣]
print(결과)
# not 문법 사용하여 검사
결과 = re.findall('[^a-z]', 'abcde12345 안녕하세요') # a-z가 아닌 것을 찾아라
print(결과)
# 숫자, 공백 검사
결과 = re.findall('\d\d', 'abcde12345 안녕하세요') # \d는 한자리 숫자 \d{3}은 세자리 숫자
print(결과)
결과 = re.findall('\s', 'abcde12345 안녕하세요') # \s 는 공백 \S 는 공백이 아닌 모든 것
print(결과)
# 반복되는 문자 찾기
결과 = re.findall('ㅋ', '안녕하세요ㅋㅋㅋㅋㅋㅋ') # ㅋ 하나만 찾음
print(결과)
결과 = re.findall('ㅋ+', '안녕하세요ㅋㅋㅋㅋㅋㅋ') # 반복되는 ㅋ를 통째로 찾음
print(결과)
# 대소문자 무시하고 검사
결과 = re.findall('abc', 'ABcdefg', re.IGNORECASE)
print(결과)
# 찾아서 바꾸기
결과 = re.sub('\-', '.', '2022-1-1') # re.sub(이걸, 이렇게 바꿔, 이 문자에서)
print(결과) # -는 특수문자이므로 \와 함께 사용
# 문자가 포함되어 있으면 TRUE 아니면(숫자만 있으면) ERROR를 반환
def 함수(a):
if re.search('\D', str(a)) :
return a
else :
return '에러'
raw['카테고리'] = raw['카테고리'].apply(함수) # 덮어씌우기
'Python' 카테고리의 다른 글
| 주식 일별종가_(t+1, t+2, ... 형식) (3) | 2024.02.07 |
|---|---|
| yfinance 주가 데이터 가져오기 (2) | 2024.02.04 |
| pandas_1 (1) | 2024.02.04 |
| 파이썬 메일 전송 (1) | 2024.02.03 |
| 크롤링 방지 우회 (2) | 2024.02.03 |