[KT AIVLE] KT 에이블스쿨 5기 DX트랙 데이터 다루기(1~2주차) 복습

728x90

데이터 다루기 복습 

enumerate()

  • 반복 가능한 객체(리스트, 튜플, 문자열 등)를 입력으로 받아 인덱스와 해당 요소를 포함하는 enumerate 객체를 반환하는 함수
# enumerate() 형식
 
enumerate(iterable, start=0)	# 순회할 수 있는(iterable) 객체
				#인덱스의 시작값을 설정할 수 있으며 기본값은 0
 
# 리스트의 각 요소와 인덱스를 함께 출력하는 예시
fruits = ['apple', 'banana', 'cherry']
for index, fruit in enumerate(fruits):
    print(index, fruit, end = ' ')			# 결과 0 apple 1 banana 2 cherry

items

  • 딕셔너리를 반복문에 사용할 때 각 (키, 값) 쌍을 반환
# 형식
 
dictionary.items()
 
# 딕셔너리의 각 (키, 값) 쌍을 순회하며 출력하는 예시
my_dict = {'a': 1, 'b': 2, 'c': 3}
for key, value in my_dict.items():
    print(key, value, end = ' ')		# 결과: a 1 b 2 c 3

 

리스트 컴프리헨션(List Comprehension)

  • 반복문을 간결하게 작성할 수 있는 파이썬
  • 리스트를 생성하거나 변환할 때  사용하는 방법
  • 코드가 더 간결해지고 가독성이 좋아지며, 반복문과 리스트 조작 메서드를 별도로 사용할 필요가 없다는 장점이 있음 
# 변화 전 예시
numbers = []
for i in range(2, 6):
    numbers.append(i)
print(numbers)  # 출력: [2, 3, 4, 5]
 
# 변화 후 예시
numbers = [i for i in range(2, 6)]
print(numbers)  # 출력: [2, 3, 4, 5]

 

함수

 

가변인수

  • 함수가 임의의 개수의 인수를 받을 수 있는 매개변수를 의미
  • 매개변수 이름 앞에 '*'
  • 함수를 작성할 때 정확히 몇 개의 인수가 필요한지 미리 알 수 없는 경우에 특히 유용
def my_function(*args):
    # args는 가변 인수를 담는 튜플입니다.
    for arg in args:
        print(arg)
 
# 함수 호출
my_function(1, 2, 3, 4, 5)

 

정규 표현식

  • Python 만의 기능이 아닌, 문자열을 다루는 여러 곳에서 사용되는 공통된 표현식

re 라이브러리

match() 문자열 처음부터 정규식과 매치 여부 확인
search() 문자열 전체를 대상으로 정규식과 매치 여부 확인
findall() 정규식과 매치되는 모든 문자열을 리스트 형태로 반환
finditer() 정규식과 매치되는 모든 문자열을 반복 가능한 개체로 반환
group() 매치된 문자열을 반환
start() 매치된 문자열의 시작 위치 반환
end() 매치된 문자열의 끝 위치를 반환
span() 매치된 문자열의 (시작, 끝)에 해당하는 튜플 반환

 

메타 문자

. 임의의 한 문자를 나타냄
^ 문자열의 시작을 나타냄
$ 문자열의 끝을 나타냄
* 바로 앞의 패턴이 0번 이상 반복되는 것을 나타냄
+ 바로 앞의 패턴이 1번 이상 반복되는 것을 나타냄
? 바로 앞의 패턴이 0 또는 1번 나타나는 것을 나타냄
{} 반복 횟수를 나타냄
[] 문자 집합(괄호 안의 어떤 문자든지 매치)
() 그룹을 나타냄
\ 이스케이프 문자로 다른 메타 문자를 문자 그대로 매칭하게 함

파일 읽고 쓰기

 

경로 확인

from pathlib import Path
 
print(Path.home()) # 홈 디렉토리 확인
print(Path.cwd())  # 현재 작업 디렉토리 확인
 
files = Path.cwd().glob('*') # 디렉토리 안의 내용 확인
for f in files:
     print(f)

 

기본적인 파일 읽고 쓰기

# 파일 쓰기
f = open('MyFile.txt', 'w') # 파일 열기
f.write('안녕하세요!\n')     
 
# 디렉토리 만들기
Path('Files').mkdir(exist_ok = True)
 
# 경로 지정 파일 쓰기
f = open('Files/MyFile.txt', 'w') # Files에 MyFile.txt 생성
f.write('안녕하세요!\n')           
 
# 파일 읽기
f = open('MyFile.txt', 'r') # r모드로 가져오기
print(f.read())             
 
# 파일 내용 추가
f = open('MyFile.txt', 'a') # a모드로 가져오기
f.write('안녕하세요!\n')     # 내용 추가

 

워드 클라우드

file = open('TNHMB.txt', 'r', encoding='UTF-8')
text = file.read()
 
wordList = text.split()		# 공백을 구분자로 하여 단어 단위로 자르기
worduniq = set(wordList)
wordCount = {}				# 딕셔너리 선언
 
# 단어별 개수 저장
for w in worduniq:
    wordCount[w] = wordList.count(w)
 
# 제외 대상 조사
del_word = ['the','a','is','are', 'not','of','on','that','this','and','be','to', 'from', 'I']
 
# 제외하기
for w in del_word:
    if w in wordCount:
        del wordCount[w]
        
import numpy as np
from PIL import Image
 
# 이미지 불러오기
masking_image = np.array(Image.open('human5.jpg'))
 
# 워드 클라우드 만들기
wordcloud = WordCloud(font_path = 'C:/Windows/fonts/HMKMRHD.TTF',
                      width=2000,
                      height=1000,
                      mask=masking_image,
                      background_color='white').generate_from_frequencies(wordCount)
 
# 표시하기
plt.figure(figsize=(12, 6))
plt.imshow(wordcloud)
plt.axis("off")
plt.tight_layout(pad=0)
plt.show()

Shawn Mendes - There's nothing holdin' me back 가사 워드 클라우드

 

엑셀 파일 다루기

import openpyxl as xl                    # 라이브러리 불러오기
wb = xl.load_workbook('test.xlsx')       # 엑셀 파일 열기
wb.sheetnames                            # 시트 이름 확인
sheet1 = wb['Sheet1']                    # Sheet1 선택
sheet1['A1'].value                       # 셀 이름으로 셀 값 확인
sheet1.cell(row = 1, column = 1).value   # 행, 열 번호로 셀 값 확인
wb.save('text.xlsx')			# 엑셀 파일 저장
sheet.insert_rows(행번호)		#행 삽입
sheet.insert_cols(열번호)		#열 삽입
sheet.delete_rows(행번호)		#행 삭제
sheet.delete_cols(열번호)		#열 삭제
728x90