디스코드에서 알게된 머신러닝/데이터사이언스 중심 비영리 커뮤니티 가짜연구소
그리고 8기 러너로 진행하게된 참여형 봄꽃놀이 지도
!!
지금까지 데이터 위주의 프로젝트만 진행했었는데,
처음 경험해보는 백앤드 & 프론트앤드와 함께하는 서비스 기반 프로젝트라 기대를 안고 참여를 하게됐다.
가짜연구소는 머신러닝/데이터사이언스를 중심으로 모인 비영리 커뮤니티입니다.
예측할 수 없는 비선형적인 성장과 너드 문화를 선도하며 사소하고 재밌는 일들을 해오고 있습니다.
가짜연구소에서는 기초 이론 공부, 논문 리뷰, 연구개발 프로젝트, 논문 작성, 펠로우쉽, 멘토링, 컨퍼런스 등을 진행하며 함께 성장하고 있습니다.
가짜연구소에 오셔서 동기부여가 가득한 사람들과 관심 있는 주제로 즐겁게 함께하세요!
- 가짜연구소 홈페이지 : https://pseudo-lab.com
- 가짜연구소 디스코드 : https://discord.gg/EPurkHVtp2
- 가짜연구소 블로그 : https://pseudolab.github.io/
- 가짜연구소 유튜브 : https://bit.ly/pseudo-lab-youtube
현재까지 진행한 과제
- 웹 크롤링
- 꽃 이미지 데이터 웹 크롤링
- '서울'지역 2020 ~ 2024년 2,3월 기상 정보 웹 크롤링 (최고기온, 최저기온, 일강수량,최대 순간 풍속)
- 기상 정보 시각화
본격 진행함에 있어 가장 우선시된 타겟은
봄의 시작을 알리는 가장 상징적인 꽃 벚꽃이였다.
그리고 기존 데이터 셋에는 벚꽃 이미지가 없었기 때문에 십시일반으로 각 멤버들 모두 300개의 이미지 데이터 수집을 하기로 하였다.
나는 많은 코드 자료가 있기도 하고, 팀원이 올려준 코드가 있는 google image 크롤링
을 택했다.
제공받은 코드로 하면 금방 끝날 줄 알았는데, 역시나...
어디서부터 꼬였는지, 약 50개 단위로 이미지들이 중복되어 다운이 받아졌고,
패턴을 찾아보니 아래와 같이 중간에 껴있는 관련 검색어
때문에 코드가 잘못 처리된 것으로 보였다.
중복되지않는 이미지만 다운로드 받기 위한 해결 방법으로
아래와 같이 처리하였고, 무사히 300개 데이터 다운로드 완 🤘🏻
downloaded_images = set() # 이미 다운로드한 이미지 URL을 저장하는 집합 생성
.
.
.
# 이미지 다운로드
for image_info in image_info_list:
if download_cnt >= image_cnt:
break
if 'src' in image_info.attrs:
image_url = image_info['src']
if image_url not in downloaded_images: # 이미지 중복 체크, 중복되지 않은 것만 다운 받도록 조건 설정
downloaded_images.add(image_url)
image_filename = f"{keyword.replace(' ', '_')}_{download_cnt}.jpg"
image_path = os.path.join(save_dir, image_filename)
urllib.request.urlretrieve(image_url, image_path)
logging.info(f'{image_filename} image download')
download_cnt += 1
기상청 사이트에서 2020~2024년, 그 중 개화 시기에 큰 영향을 끼친다 2,3월 위주의 기상 정보를 크롤링하여 가져왔다.
위와 같이 사이트 주소에서 날짜
와 지역 코드
를 넣으면 자료를 추출할 수 있는 구조였기에,
기상청에서 사용하고 있는 지역 코드
를 가장 우선으로 리스트화 하여 정리한 다음, 이걸 주소에 대입시켜 보며 기상 정보 추출까지 완료!🤘🏻
총 11826 rows × 7 columns
의 데이터 셋을 만들어 냈다.
소개받은 새로운 인터랙티브 시각화 라이브러리 중 2023년 성장세 1위라는 pygwalker
를 사용하여 위 기상정보의 시각화를 진행했다.
- Top 10 growing data visualization libraries in Python in 2023
- pygwalker.Github (한글버전 가이드도 있음!)
이 라이브러리를 사용한 소감은 한 마디로 'tableau', 한 마디 덧붙이면 '간단 그 자체'.
matplot
이든 seaborn
이든 코드를 원하는 그림을 어느정도 구상하고 코드 쿼리를 작성해야 하는데,
이건 그냥 아래처럼 2줄 작성하면
import pygwalker as pyg
walker = pyg.walk(df)
이런 tableau같은 인터랙티브 창이 나온다.
그럼 입맛에 맞게 x,y열에 데이터 끌어다 넣고 sum이든 avg든 필요한 연산만 클릭하면 자동으로 그래프가 완성된다.
아무리 tableau 같다고 하더라도,
데이터를 추가 연결은 불가(원한다면 df1을 다른 df2와 merge 시켜야함), 투명도/컬러 등 자우 셋팅 불가 (데이터 값으로만 조정 가능) 등 자유롭지 않다는 한계점이 있었다.
그래도 에러-수정-에러-수정이 있는 코드 쿼리 작성보다는 확실히 편했다.
아래처럼 map 시각화도 가능하긴 한다는데, 음..이 자료로는 효과적이지 못해서 작동 방법만 몇 번 클릭만 해봤다.
오랜만에 셀레니움, 웹 크롤링을 해보며 '역시 코딩은 계속 꾸준히 직접 짜봐야한다'는걸 되새기고,
새로운 라이브러리들을 보면서 '역시 세상엔 천재들이 많구나' 깨우쳤다.
한달 동안 열심히 하신 결과를 잘 보여주고 있는 좋은 포스트 잘 봤습니다! 파이팅입니다!!