오음

python) datetime, zip 본문

데이터 엔지니어링/파이썬

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}

스타벅스 매장 개점은 목요일날 가장많은 것으로 알 수 있었다.