[WEEK_07~08] 학습일지08. Python EDA 프로젝트

ardor924·2023년 9월 5일
0
post-thumbnail

해당 게시글은 패스트캠퍼스에서 진행하는 AI 부트캠프에서 학습한내용과 교육과정을 토대로 작성했습니다.


AI 부트캠프 7-8주차 학습일지


1. 리마인드


2주동안 EDA프로젝트를 진행했다.
이번 프로젝트에서 EDA를 통해 스킬을 더 얻어 갔다기보다는 오히려 분석거리를 생각하고 데이터에서 의미있는 인사이트를 도출해나가는 과정에서 무엇을 목표로 할것인가, 데이터에서 어떤 패턴을 찾을수 있는가, 어떻게 스토리라인을 짤것인가 하는 일련의 과정 자체의 경험을 얻었다고 생각한다.

EDA프로젝트는 확실히 여타 코딩들과는 조금 결이 다른듯한 느낌이 들었다.
조금더 생각해보고 데이터에서 보이지 않는 무언가를 찾아서 스토리를 만드는 과정이 기술적으로 프로그래밍을 하는것보다 좀더 핵심에 가까운듯한 느낌이다.

기본적으로 EDA는 크게 두가지 방법으로 진행된다고 생각이 들었다.

  1. 데이터를 보고 특정 패턴과 현재 가지고 있는 정보를 조합해서 스토리를 만들어 결론을 도출해나가는 방법
  2. 스토리와 주제를 상정하고 필요한 데이터를 수집하여 결론을 도출하는 방법

이렇게 크게 2가지의 방법론이 존재한다고 생각한다.
이번 EDA는 이론을 학습한것을 토대로 실제로 적용해보는 첫번째 팀프로젝트이다.
이번 프로젝트에서 2번 방법으로 스토리와 주제를 떠올린뒤 필요 데이터를 수집해서 결론을 내리려고 했으나 그 과정에서 많은 고난과 장애에 부딪혔다.

첫번째로 생각한 주제에 알맞는 데이터를 꼭 집어 수집할수가 없었다는점이다.

크롤링과 각종 Json데이터를 제공해주는 API 서비스를 이용해서 원하는 데이터가 있다면 금방 얻을수 있겠거니 생각했던것은 아주 큰 오산이었다.
크롤링과 API서비스 만으로는 얻을수 없는 각종 간접지표들 뉴스기사 논문등 여러가지를 고려해서 데이터를 얻어와야 한다라는 아주 심플하지만 강력한 진실에 조금 충격을 얻고 데이터를 가져오는 목표치와 한계선을 어느정도 분명하게 두고 해당 범위내에서 어렵게 데이터를 가져올수 밖에 없는것이 데이터 수집에서의 진실이였다.
지금껏 잘 생각해보지는 않았지만 그게 진실이었다.
물론 데이터를 수집하는 노하우와 경력이 쌓이면 수집능력이 향상되는거야 당연하다면 당연한 이야기겠지만 현재로써 특정 주제에 연관된 자료를 수집하는것은 하루아침에 이루어지지 않는것이라는걸 깨달은 것만으로 일단 경험의 확장은 된 셈 아닐까 싶다.

두번째로 들었던 생각은 맥락은 비슷하지만, 수집한 데이터가 생각했던 스토리라인과 상당히 다를수도 있다는 점이다.

이런 괴리감이 생길때 최초에 상정한 목표에 맞지 않게 흘러가고 있음을 알게되는데 이때 막막한 초조함을 느끼게 되었다.
마치 어두운 밤길을 차로 운전하고 있는데 갑자기 주위를 둘러보니, 주변에 가로등 하나 없는 곳으로 들어왔다는 사실을 알게 되었을때 느끼는 앞이 보이지않는듯한 막막함과 같은 심정일것 같다.
하지만 곰곰히 생각해보니 어짜피 세상 일이라는것이 모든것이 생각하는데로만 흘러가지는 않는다는 것이 인생아니겠는가, 이럴때는 어떻게든 목표치에 다다를수 있는 다른 방법을 구하거나, 깔끔하고 신속하게 원래의 목표를 버리고 우회하는 길이 있다.
어찌되었건 최초의 목표를 정확하게 이루지는 못하므로 신속하게 우회하여 차선책을 찾는 방향으로 프로젝트를 진행 했다.
이 모든 과정에 의미가 있다고 본다.
프로젝트라는것이 모든것이 결과에만 집중되어 있는것이 아니라 이러한 일련의 과정들에서 무엇을 생각했고 어떻게 해결했으며 어떤 기여를 했는가 하는 모든것들이 비로소 프로젝트를 함으로써 얻는 참된 경험이 아닐까?

물론 경험만 있는것은 아니다.
확실히 기술적으로도 진보가 있었다.
이론적으로만 알고 있는것을 실제로 실습하고 방향을 찾는 과정에서 그 경험은 자신의 것이 되는것 같다.

데이터 프레임도 실제로 써보니 자주쓰는 코드들 이를테면 concat이나 loc등 직접 코드를 짜는 과정에서 체득하게 되는것이고 허구의 데이터가 아닌 실제 데이터로 진행하기때문에 실수도 하고 코드 개선을 위해 더 노력하게 되는 자신을 만날수 있었다.

시각화는 어떤가 하면 심플하게 데이터 프레임에서 가져온 정보를 기본적인것만 가지고 시각화를 하니 여러모로 이것도 필요하고 저것도 필요하고 점점 하다보니 필요한것이 늘어갔다.
plotly, palette, 그래프저장툴, 선의 굵기조절 여백, 그리드, 폰트의 크기 등등 셀수가 없을정도이다.
하지만 이런 모든것들을 적용하는 과정에서 진짜 를 배울수 있는거라 생각한다. 허상이 아닌 손에 잡히는 실체를 말이다.

세번째로 이건 아직 해결을 못한 문제이긴 한데, 작업툴의 환경에 문제가 생길수 있다는점이다.

최초에 주피터 노트북으로 작업을 시작했는데 ipynb파일을 주피터 노트북 웹ui 환경에서 사용하자니, 일반 py 파일과는 다르게 함수정의나 클래스, 모듈화등에 제약이 많다는것을 느꼈다.
초기에 주피터 노트북으로 작업을 하다가 코드가 어느정도 길어지니 모듈화를 하지 않고서는 이후 코드작성할때쯤 되면 감당하기 힘들것 같다는 생각이 들어 재빠르게 vsCode 환경에서 작업을 시작했다. py 파일로 기본적으로 모듈화를 위해 init,유틸리티, 각종API호출 클래스등을 엮어서 만드는 일련의 과정을 거치고 목표와 주제에 맞게 코드를 짜서 데이터프레임,시각화 등을 자동화 할수 있도록 코드를 구성했다.
하지만 vsCode특유의 단점인지 모르겠으나 코드 실행 중간중간 무한로딩에 걸리거나 모듈이 로드가 제대로 안되는 현상이 반복적으로 나타나서 향후 EDA 프로젝트를 할때 이것을 어떻게든 해결해야 하지 않을까 싶다.

프로젝트를 하면서 크게 3가지의 난관에 부딪혔지만 나름의 고민과 약간의 기치로 잘 마무리가 된것 같다.

이제 이 다음 차례에 해당 프로젝트에서 사용했고 개인적으로 주목할만한 것들을 리마인드 차원에서 정리해보려고 한다.

1.1 유틸기능(임시-나중에 수정할예정)


1.1.1 항시 모듈 세팅


항시 모듈 세팅

import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
profile
오늘도 꾸준히 무언가를 개발하는중...

0개의 댓글

관련 채용 정보