{"id":22985046,"url":"https://github.com/hhejo/pyviz","last_synced_at":"2025-04-02T11:09:23.527Z","repository":{"id":263352534,"uuid":"869257847","full_name":"hhejo/pyviz","owner":"hhejo","description":"Data visualization using Python","archived":false,"fork":false,"pushed_at":"2024-12-30T15:17:38.000Z","size":27850,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-02-08T02:11:12.304Z","etag":null,"topics":["data-visualization","python"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hhejo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-10-08T01:57:05.000Z","updated_at":"2024-12-30T15:17:41.000Z","dependencies_parsed_at":"2024-12-15T03:20:00.405Z","dependency_job_id":"ec93c550-540e-4a3f-ba3c-a15988e6d844","html_url":"https://github.com/hhejo/pyviz","commit_stats":null,"previous_names":["hhejo/pyviz"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hhejo%2Fpyviz","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hhejo%2Fpyviz/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hhejo%2Fpyviz/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hhejo%2Fpyviz/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hhejo","download_url":"https://codeload.github.com/hhejo/pyviz/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246802623,"owners_count":20836373,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["data-visualization","python"],"created_at":"2024-12-15T03:19:46.227Z","updated_at":"2025-04-02T11:09:23.499Z","avatar_url":"https://github.com/hhejo.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 파이비즈 (PyViz)\n\n## 요약\n\n\u003e 웹 커뮤니티 MBTI 언급량 크롤링, 데이터 분석·시각화\n\n![파이비즈 (PyViz)](./assets/000-pyviz-main.png)\n\n## 상세\n\n4번째 PJT\n\n### 0. 목차\n\n1. 소개\n2. 기술 스택\n3. 느낀 점\n4. 기능 (페이지 구성)\n5. 아쉬웠던 부분\n6. 앞으로 학습할 것들, 나아갈 방향\n7. 어려웠던 부분, 해결한 과정\n\n### 1. 소개\n\n**파이비즈 (PyViz)**\n\n- `Selenium`과 `Matplotlib`, `WordCloud`를 이용한 웹 크롤링, 데이터 시각화 프로젝트\n- Blind의 [성격유형](https://www.teamblind.com/kr/topics/%EC%84%B1%EA%B2%A9%EC%9C%A0%ED%98%95) 게시판을 크롤링해 게시글 제목, 내용을 저장\n- 어떤 유형의 MBTI가 언급이 많이 되었는지 분석하고 시각화\n- 16개의 MBTI 각각 얼마나 언급되었는지 그래프로 시각화\n- `E`/`I`, `N`/`S`, `F`/`T`, `J`/`P` 별로 얼마나 언급되었는지 시각화\n- 워드클라우드로도 시각화\n\n작업 기간\n\n- 2024/10, 1주\n\n인력 구성\n\n- 1인\n\n### 2. 기술 스택\n\n\u003cimg src=\"https://img.shields.io/badge/Python-3776AB?style=for-the-badge\u0026logo=Python\u0026logoColor=white\"\u003e\n\n### 3. 느낀 점\n\n- Python이 사용하기에 상당히 편했다. JavaScript와 비슷한데 모듈 분할이나 문자열 처리하는 부분이 더 편했다\n- 크롤링을 해서 데이터를 수집하고, 그 데이터를 분석하는 것이 재미있었다\n- 코드를 작성하고, 기능이 추가되고 보완되면서 점점 `main.py`의 코드가 많아져서 관리하기 힘들었는데, `controllers` 모듈로 분할하니까 관리하기도 좋고 한 눈에 파악하기도 좋았다\n- 크롤링을 할 때 너무 빠른 시간에 자주 하면 안 된다는 것을 깨달았다\n- 데이터 시각화를 하니 그냥 CSV 파일이나 콘솔에 출력하는 것보다 분류한 데이터에 대한 이해가 쉬웠고 파악하기도 좋았다\n\n### 4. 기능\n\nPython 가상환경 구동\n\n```bash\npython -m venv myvenv\nsource ./myvenv/bin/activate\npip install selenium\npip install bs4\npip install requests\n```\n\n구성\n\n1. `main.py`\n2. `selenium_controller.py`\n   - Selenium으로 크롤링\n3. `mbti_controller.py`\n   - 크롤링한 데이터에서 MBTI 데이터를 추출\n4. `plot_controller.py`\n   - MBTI 데이터로 그래프 생성\n5. `file_controller.py`\n   - 크롤링한 데이터를 파일로 저장\n\n시연 영상\n\n- `assets` 폴더에 위치\n\nMBTI 그래프 (아래)\n\n1 MBTI별 언급량\n\n![MBTI별 언급량 그래프](./backup/mbti_plot_backup.png)\n\n2 MBTI별 언급량 워드 클라우드\n\n![MBTI별 언급량 워드 클라우드](./backup/mbti_wordcloud_backup.png)\n\n3 MBTI 세부 항목별 언급량\n\n![MBTI 세부 항목별 언급량 그래프](./backup/mbti_plot_specific_backup.png)\n\n4 번외, 구내식당 게시글 단어 빈도 워드 클라우드\n\n![구내식당 게시글 단어 빈도 워드 클라우드](./backup/menu_wordcloud_backup.png)\n\n### 5. 아쉬웠던 부분\n\n- 게시판에 글이 많을 줄 알았는데, 약 4000개 정도로 생각보다는 많지 않았다\n- 원래 처음에는 구내식당 인스타그램을 크롤링해서, 게시글에 쓰인 메뉴 소개를 받고, 이것들을 모아 ChatGPT API와 연결해 음식 메뉴를 뽑아달라고 하고(KoNLPy로는 명사만 추출 가능) 해당 음식이 나오는 빈도 수를 시각화하고 싶었다\n- 게시글을 전부 보기 위해서는 로그인이 필요했는데, 너무 자주 해서인지 계정이 막혔다\n- 그래서 MBTI 프로젝트로 전환했다..\n- 같은 실수를 반복하지 않기 위해, 무작위 수를 넣어 크롤링 시간을 조절하는 것으로 보완했다\n\n### 6. 앞으로 학습할 것들 나아갈 방향\n\n- Node.js로도 크롤링을 진행해보고 싶다\n- 좀 더 범용적으로 된 자동화 프로그램을 데스크탑 앱으로 만들고 다른 사람들에게 제공하고 싶다\n\n### 7. 어려웠던 부분, 해결한 과정\n\nPython 가상환경\n\n- 가상환경을 따로 만드는 것이 더 좋았다. 굳이 전역으로 설치하지 않아서 관리하기 쉬웠다\n\nKoNLPy\n\n- `KoNLPy` 라이브러리를 사용해 한글 명사를 가져오려고 했다\n- 라이브러리가 동작하지 않아 확인해보니, Java를 설치해야 했다\n\nMatplotlib\n\n- 한글이 깨지는 문제가 생겨 한글 폰트를 지정해 해결했다\n\nSelenium\n\n- 드라이버 설치 문제가 있었다\n\n데이터 분석\n\n- 한글로 쓰인 MBTI가 많았다\n- Python 딕셔너리로 일일이 지정해서, 해당 한글 MBTI가 있으면, 영어 MBTI로 변환해서 저장했다\n\n파일 분할\n\n- 코드가 너무 길어져서 기능별로 분류한 후 모듈로 나눴다\n- 크롤링 관련, 데이터 분석 관련, 그래프 출력 관련, 파일 입출력 관련으로 나누었다\n- 보기도 쉽고 이해도 잘 됐다\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhhejo%2Fpyviz","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhhejo%2Fpyviz","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhhejo%2Fpyviz/lists"}