데이터 엔지니어링/파이썬
python) datetime, zip
오준돌
2023. 3. 6. 22:40
zip함수
● 두 그룹의 데이터를 묶어주는 함수 zip()
# zip 함수
num = [1,2,3,4,5]
str = ["A","B","C","D","E"]
for zz in zip(num,str):
print(zz)
(1, 'A')
(2, 'B')
(3, 'C')
(4, 'D')
(5, 'E')
num 리스트와 str리스트를 zip 함수로 묶어 for문을 통해 반환값을 튜플형태로 출력
# 여러 그룹의 zip
for num,alpha,beta in zip("123","ABC","DEF"):
print(num,alpha,beta)
1 A D
2 B E
3 C F
● 여러 그룹의 문자열도 zip가능
# zip함수의 사전 변환
keys = [1,2,3]
values = ["A","B","C"]
dict(zip(keys,values))
{1: 'A', 2: 'B', 3: 'C'}
* 인자의 길이가 다를경우 첫번째 인자만 zip 나머지는 버려진다.
● 활용
dict(zip(range(0,7),"월화수목금토일"))
{0: '월', 1: '화', 2: '수', 3: '목', 4: '금', 5: '토', 6: '일'}
datetime 함수
import datetime
datetime.datetime.strptime("20190613","%Y%m%d")
datetime.datetime(2019, 6, 13, 0, 0)
# 오늘 날짜
datetime.datetime.now()
# 오늘 날짜로부터 100일 후의 날짜
datetime.timedelta(days=100)
* days,seconds,microseconds,milliseconds,minutes,hours,weeks 가능
● zip함수와 datetime함수를 이용해 이벤트 날짜 계산
master = dict(zip(range(0,7),"월화수목금토일")) # zip함수를 이용 숫자와 요일생성
for x in range(100, 1001, 100):
date_ = datetime.datetime.now() + datetime.timedelta(days=x) # 현재날짜 + 100일,200일...
date_str = str(datetime.datetime.now() + datetime.timedelta(days=x)) # 출력가능하게 str변환
print(date_str.split()[0], master[date_.weekday()]) # weekday로 요일 표시
2023-06-14 수
2023-09-22 금
2023-12-31 일
2024-04-09 화
2024-07-18 목
2024-10-26 토
2025-02-03 월
2025-05-14 수
2025-08-22 금
2025-11-30 일
● 활용
2023.03.06 - [데이터 엔지니어링/파이썬] - python) requests 활용 스타벅스 크롤링
datetime 활용하여 스타벅스 오픈 요일별로 count하기
for store in star:
master = dict(zip(range(0,7),"월화수목금토일"))
dict_a = {}
for store in star:
st = store['open_dt']
stt = master[datetime.datetime.strptime(store['open_dt'],"%Y%m%d").weekday()]
if stt in dict_a:
dict_a[master[datetime.datetime.strptime(store['open_dt'],"%Y%m%d").weekday()]] += 1 # key값에 value할당
else:
dict_a[master[datetime.datetime.strptime(store['open_dt'],"%Y%m%d").weekday()]] = 1
print(dict_a)
{'목': 163, '금': 137, '수': 118, '화': 126, '토': 6, '월': 47, '일': 2}
스타벅스 매장 개점은 목요일날 가장많은 것으로 알 수 있었다.