3월, 2024의 게시물 표시

KT 에이블스쿨 : 2차 미니프로젝트 - 서울시 버스 공공데이터 활용

이미지
  프로젝트 목적 : 서울시 버스 노선 추가  kt 에이블스쿨에서 준 2차 미니프로젝트은 관련된 공공데이터를 활용해서 프로젝트를 진행했다.   3일동안 진행하면서, 우리조는 3일 풀로 대면 프로젝트를 진행했다.  오고가고가 힘들긴했지만, 확실히 비대면보다는 인사이트를 많이 공유할 수 있어서 좋았다.  덕분에 미프 발표에서 강사님께 좋은 평을 받으면서 마무리 할 수 있었던 것 같다.  추가 솔류션 기획  우리 조는 미니프로젝트에 더해서 우리조만의 솔류션을 기획했다.  올빼미(심야) 버스 이후인 새벽4시부터 6시에는 아래와 같은 수요가 있으나, 아직까지 버스가 운행하고 있지는 않은 상황  - 이른 새벽에 출근할때 대중교통의 부재 - 지방간 이동을 위해서 이른 시간에 출발해 고속버스터미널, 고속철도역으로 가는 경우가 있음 심야버스(0시~4시)가 종료된 후 ~ 첫차 전까지에도 버스를 이용할 수있도록 하면 어떨까? 라는 생각으로 프로젝트를 시작하게되었다  현재 서울시에서 새벽시간에 세계 최초로 자율주행 버스를 운행 중이나, 노선이 하나밖에 없다는 한계점이 존재함  이른 새벽 시간대에는 자동차나 사람의 이동비율이 현저히 적기때문에, 자율주행 운행이 비교적 용이하다고 판단함 또한, 자율주행으로 운행하면 운전자의 인건비를 줄일 수 있어 이른 시간대 승객 수가 적더라도 경제적 손해가 없을 걸로 보았음 Early Bird 버스 그래서, 우리 조는 이른 시간대에 운행하는 early bird 버스를 기획했다.   " 서울시 24시간 버스 운영을 위한 자율주행 Early bird 버스" 주로, 자치구 시간대별 이동인구 정보, 정류장별 승하차 정보, 정류장별 위치 데이터를 활용해 데이터 분석 및 시각화를 진행함  데이터 분석 과정  1. 시간대 4~6시에  어느 자치구에 많이 도착하는지   - 1.2 구별 유동인구 ...

KT 에이블스쿨 : 데이터 수집 - 동적 페이지 크롤링

이미지
  동적 페이지  BeautifulSoup을 이용하여 HTML 문자열 데이터 parsing해야한다.  정적 페이지에서는 주로 json 형식으로 와서 파싱이 쉽지만, 동적 페이지는 html 계층적인 구조에 따라서 파싱을 달리해야되서 꽤나 성가셔짐 동적 페이지 크롤링하는 순서  1~2까지는 정적 페이지랑 동일하지만, 이후에 response를 파싱하는 것만 차이가 있다.  1. 웹페이지 분석(url) + 크롬 개발자 도구  2. request(url) > response  3. response.text 로 동적/정적 페이지 구분 html형태이면 동적 페이지, json 형태이면 정적 페이지  4. str형태인 response(html)을 파싱하기위해, beautifulsoup 데이터타입의 객체로 변경 5. beautifulsoup 데이터타입의 객체를 css-selector를 써서, html을 text로 변환 하나의 element 만을 선택할려면 select_one() 을 써서 계층구조를 매개변수로 전달해주면되고, 여러개의 element를 선택할려면 select() 를 써야한다.  6. DataFrame 으로 변환 동적 페이지 실습  1. 네이버 연관 검색어 수집 - 네이버에 어떤 키워드를 검색했을때, 나오는 연관검색어를 크롤링 2. Gmarket - 베스트 상품 200개 데이터 수집 - 상품의 이미지 200개 다운로드 ------------------------------------------------------ 단 이틀만에,,  파이썬의 클래스, 모듈, 패키지, 라이브러리에 대한 개념을 배우고,  웹 client, server 상호작용 원리를 활용해서 크롤링을 하는 이론에 배우고, 정적 페이지 실습을 5개하면서 감을 잡았고, (Rest api로 카카오 kogpt 기능 사용, 네이버 검색트렌드, 직방의 geohash, 네이버 주식, 다음 환율)...

KT 에이블스쿨 :: 데이터 수집 - 정적 페이지 크롤링

이미지
  크롤링 원리 client가 server에게 내가 원하는 정보를 달라고 url을 주며 request 하면 server는 client에게 정보를 json, html, pdf 등 다양한 형태로 response해주는 것  크롤링은 사람대신 파이썬 크롤링 봇이 자동으로 request 한 뒤, response한 데이터를 보여주는 것  1. client에서 url을 get / post 방식으로 server 에게 request  2. server는 request 받은 정보를 response 해서 client에게 전달 3. response 받은 정보를 parsing (html, pdf, img, json 형식으로 된 데이터를 받아서 화면에 출력하는것)  해서 출력  request 방식 - get 방식 : URL에 쿼리 가 포함 - 쿼리(데이터) 노출됨, 전송 가능 데이터 작음 response = request.get(url, headers = headers) - post 방식 : body에 쿼리 가 포함 - 쿼리(데이터) 비노출, 전송 가능 데이터 많음 post 방식은 body에 쿼리를 넣어서, params 변수를 만들어서 post 파라미터로 같이 줘야함  response = request.post(url, params) response 상태 코드 2xx : 성공 (크롤링 가능) 3xx : 리다이렉션 (크롤링 가능) 4xx : 요청 에러 (서버에서 막은경우나, 내가 코드를 잘 못쓴 경우 등) 5xx : 서버 에러 크롤링이 막힌 경우 - 홈페이지 마다 다르지만 서버에서 크롤링 수집을 막은 경우가 있음.  그럴때는 headers의 user-agent, referer, cookies 정보를 파이썬 코딩으로 변경해야한다.  1. user - agent : 헤더에서 자신이 누구인지 밝히는 부분. 파이썬 크롤링 봇이 아니라, 나는 윈도우 브라우저에서 들어가는거라고 미리 설정해야함 2. refer...

KT 에이블스쿨 : IT 발표 스터디(발표의 신) 시작

이미지
  24.03.15 (금) 에이블스쿨을 하면서 하고싶었던것 중 하나는 발표/면접 스터디를 하는거였다.  IT기사를 통해서 스스로 인사이트를 얻은거를 스터디원한테 공유하면서 발표에 익숙해지는 스터디를 계속 기다렸지만  아무도 만들지 않아서, 내가 만들었다 ..  그러다보니 어쩌다가 스터디장이 되었다. ㅋㅋ 24.03.16 (토) 모집 마감일 이틀간 스터디원을 모집했는데 신청인원이 정원 8명보다 많아서 나름 뿌듯했다.  ^--------^ 24.03.17 (일) 열심히 하고 꾸준히할 사람들 위주로 팀을 꾸렸는데  다들 스터디에 대한 의지가 뿜뿜해서 좋다.  밤11시쯤에 카톡으로 모여서 스터디 룰이랑 일정 등 이것저것을 정했다.  일찍 끝날 줄 알았는데 48분동안 얘기했다 ..  당장 내일인 월요일부터 발표할 사람을 정해야하는데, 내가 자원했다 쿸쿸 예전에 chatgpt와 관련된 digital insight 보고서를 되게 인상깊게 읽었는데, 꼭 사람들이랑 공유하고 싶었기 때문 24.03.18 (월)  아침에 에이블스쿨 교육하기 전에 스터디를 했다.  9시부터 시작해서 3분정도 발표 + 질의응답 + 피드백으로 총 16분정도 한것 같다  꾸준히 하다보면, 발표의 신이 되어있길 ㅎ  구글 시트를 만들어서 서로 피드백도 해주고 있다.  내가 미쳐 캐치하지 못한 부분을 알수있어서 만족  스터디방 이름을 부끄럽지만 발표의 신으로 우리끼리 정했는데 발표의 신이 될 그날을 위해 cheers ... ★

KT 에이블스쿨 : 데이터분석 교육(4주차)

이미지
  2024.3.11 ~ 3.15 (4주차)   데이터분석  데이터분석은 한기영 강사님이 교육해주셨다.  이론적인 부분 뿐만 아니라, 비즈니스적으로 데이터의 내용이 무엇을 의미하는지를 계속 고민하게끔 이끄셨다.  그 중에서, 가장 인상 깊었던 말을 적어보았다.  기술의 활용을 잘하는지, 못하는지가 중요한게 아니라 비즈니스의 문제를 해결할 줄 아느냐가 중요하다. 비즈니스의 관점에서 계속 고민을 해야한다. 강사님이 과장으로 승진할때 받은 질문) 고객사의 DB 튜닝을 해서 성능을 높였다면, 고객사의 매출에 어떤 도움이되고, 수익은 어떻게 증가되고, 체감하는 이익은 무엇인가요 ? 이렇게 기술자더라도 비즈니스의 관점에서 고민을 해야한다는 것. 회사가 궁극적으로 추구하는 이윤을 위해 기술이 활용되는것이지, 중요한 것은 비즈니스 관점!! 그동안 데이터 분석, 프로그래밍 등 개발을 할때 기술적인 전문성을 중요하게 생각했었는데, 가장 중요한 비즈니스를 이해하고 비즈니스의 문제를 해결한다는 마음을 놓치고 있었다.  앞으로 이 생각을 품고 프로젝트나 일을 해야겠다.  + 지난달에 쳤던 ADsP 사전 합격발표가 떴다 !  꺄륵 이제 맘편하게 빅분기 준비해야겠다  

KT 에이블스쿨 5기 : 첫 글 (1차 미프 끝)

이미지
KT 에이블을 시작한지 어느덧 3주가 지났다... 에이블교육 시작하기 전에 워밍업하는 사전교육을 들은게 얼마안된것 같은데,,  벌써 (1주차) 데이터 다루기, (2주차) 데이터 다듬기 수업을 끝내고  1차 미니프로젝트를 오늘 끝마쳤다.  시간이 빠르게 쓱쓱지나가는 나의 취준생활을 기록하고자, 에이블러 기자단을 신청했다.  이제 에이블러를 하면서, 배우고 느낀걸 틈틈히 자주 기록해보야겠다.  24년 3월 6일 대구경북 DX팀의 반장이 뽑혔따 박빙의 대결로 반장이 뽑혔다. !  24년 3월 7일 (목요일) 첫 ! 미니프로젝트날 첫 조별 프로젝트다 보니 걱정도 되고, 한편으로는 재밌을 것 같아서 설레기도 했다.  구매, 고객 데이터를 활용해서 이탈고객을 예측하는게 프로젝트 목적이었다.  오전부터 오후 3시까지 개별로 실습을 했는데,  수업때 하나씩 차근차근히 배운것들을 한번에 쓰면서 데이터가 다듬어지는 과정을 보니까 보람도 차고 생각보다 별게아니였다.  데이터분석, 실습, 프로젝트 이 3단어들이 멀게만 느껴졌는데, 좀 친숙해진 느낌스  개별실습할때 중간에 데이터프레임을 merge할때 헷갈리는 부분이 많았다.  left랑 outer랑 헷갈리고, inner를 쓰는게 맞을지 outer를 쓰는게 맞을지 자신이 없었는데 팀원들이랑 의견을 나누고 물어보면서 이제 제대로 이해완료 !  배운점 1 출처:  https://programmerpsy.tistory.com/17 ㄴ 이게 left 조인  출처:  https://programmerpsy.tistory.com/17 ㄴ 이게 outer 조인이다.  그리고 merge는 단순히 하나의 컬럼을 다른 데이터프레임에 붙일때,  left 조인을 해서 쓸 수 있다.  배운점 2 실습파일에서 2개의 데이터프레임(df1, df2)을 merge했을때, 불필요한 값들이 와다다 붙...

파이썬 자료구조 :: 그리디 알고리즘 (Greedy)

이미지
  그리디(Greedy) 알고리즘 탐욕법이라고 하며, 현재 상황에서 지금 당장 좋은 것만 고르는 알고리즘 뒷 날, 미래, 큰그림은 생각안하고 현재 지금 now 눈앞의 것 중에서 젤 좋아보이는 걸 고르는 것이다. (설명 및 문제는 '이것이 코딩테스트다' 책 참고함) 루트 노드부터 시작하여 거쳐 가는 노드 값의 합을 최대로 만들고 싶습니다.   Q. 최적의 해는 무엇인가요? 애초에 노드의 수가 별로 없어서 눈으로 봐도 최적의 해를 알 수 있습니다. 5 > 7 > 9 이 순서로 이동하게 되면 노드 값의 합이 21로 가장 큰 경우의 수가 되는 것을 알 수 있습니다.     Q. 단순히 매 상황에서 가장 큰 값만 고른다면 어떻게 될까요? 해당 경우에는 총 합 19 임을 알 수 있으며, 최적의 합인 21보다 낮은 값입니다. 즉, 그리디 알고리즘은 이처럼 단순히 매상황에서 가장 큰 값만 고르는 방식임을 알 수 있습니다.   일반적인 상황에서 그리디 알고리즘은 최적의 해를 보장할 수 없을 때가 많습니다. 하지만 코딩 테스트에서의 대부분의 그리디 문제는 탐욕 법으로 얻은 해가 최적의 해가 되는 상황에서, 이를 추론할 수 있어야 풀리도록 출제됩니다.   [문제] 큰 수의 법칙  큰 수의 법칙은 다양한 수로 이루어진 배열이 있을 때, 주어진 수들을 m번 더하여 가장 큰 수를 만드는 법칙이다. 이 때, 배열의 특정한 인덱스에 해당하는 수가 연속해서 k번을 초과하여 더해질 수는 없다. 예를 들어, m이 8, k가 3이고, 배열 arr가 [2, 4, 5, 4, 6]이라고 할 때, 큰 수의 법칙에 따른 결과는 6 + 6 + 6 + 5 + 6 + 6 + 6 + 5로, 46이 된다. 이 때, 다른 인덱스에 있는 값이 같은 경우에도 이는 서로 다른 것으로 간주한다. 따라서 arr가 [3, 4, 3, 4, 3]일 때, 두번째 4와 네번째 4는 서로 다른 것이므로 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4가...

파이썬 : 입력 값 처리

이미지
  파이썬 문제에 따라서, 입력값 받는걸 유연하게 써야한다.  1.  strip() 제거를 안하면, 입력값 + 엔터까지 다 포함된다.  ex) 입력값이 12345 일때  strip()을 안쓰고, list로 형변환하면 출력값은 [1, 2, 3, 4, 5, '\n']로 엔터까지 포함됨 그래서, 엔터를 포함 안시킬려면, 입력값을 받고, strip()으로 공백 제거해야한다.  strip()  #1. strip 안씀 l = list(map(str, sys.stdin.readline())) #2. strip() 씀 l = list(map(str, sys.stdin.readline().strip())) strip()은 입력값의 양쪽/왼쪽/오른쪽 공백을 제거하는 역할을 한다.  strip()은 양쪽 lstrip()은 왼쪽만 공백 제거  rstrip()은 오른쪽만 공백 제거  2.  입력을 여러 줄을 받을때 여러 줄을 시간초과 안나게 받을려면, 입력받은 줄 만큼 for문을 돌려야한다.  import sys input = sys.stdin.readline T = int(input()) for i in range(T): a,b = map(int, input().split()) print(a+b) 상황에 따라, 변수 개수랑 자료형은 달라짐  참고 블로그 

이 블로그의 인기 게시물

[KT 에이블스쿨 - IT 트랜드] 국내외 AI 관련 규제

KT 에이블스쿨 : IT 인프라 (1일차~5일차) 공부 정리

KT 에이블스쿨 : 핀테크 아이디어 공모전