파이썬을 이용해서 개발을 하려다 보면

Python Version + Python Package 관리 때문에 마음 고생할 때가 종종 발생한다.

 

특히, 동시에 여러 프로젝트를 하려다보면

A 프로젝트는 Python 3.12 환경에 PyTorch 관련 패키지들이 필요하고

B 프로젝트는 Python 3.14 환경에 FastAPI 관련 패키지가 필요하는 등...

서로 다른 환경이 필요한 경우가 있다.

 

이런 것을 섞어서 하려다보면 많은 문제가 발생할 수 있기에

각 프로젝트마다 독립적인 개발환경을 제공해주기 위한 가장 아름다운 방법이

바로 파이썬 가상 환경이다.

 

 

▶ Virtual Environment

- 독립적인 파이썬 환경
  . 각 프로젝트에 필요한 파이썬 버전과 라이브러리 관리 가능
- 시스템(호스트) 파이썬과 분리
  . 시스템에 설치된 파이썬 환경을 변경하지 않고 개발 환경 구성
- 디렉토리 기반으로 가상 환경 구성

 

 

운영체제 전체에 기본적인 환경이 있겠지만,

내가 작업하는 디렉토리 + 하위 디렉토리만을 위한 독립적인 개발환경을 구성하는 것이다.

 

 

▶ Tools

- Python 생태계는 패키지 관리, 버전 관리, 가상환경 관리, 빌드 도구 등이 파편화되어 혼란스럽다는 평가를 받고 있음
- 가상환경 관련 도구의 경우 패키지 관리 도구와 같이 pair로 구성되는 경우가 많고, Python 버전 관리는 명확치 않음

 

 

파이썬 패키지 관리 도구라던지 파이썬 버전 관리 도구는 정말 다양하게 있다.

 

물론 개발자들의 사랑을 받는 유명한 도구들이 있긴 하지만,

문제는 그 유명한 도구들이 여러개 존재하기 때문에 혼란스러운 것은 여전하다.

 

 

그러던 중, 이런 춘추전국 시대에 밝은 빛을 비춰주는 존재가 등장했으니 !!!

아름다운 "uv"라는 도구가 ... (다음 기회에~^^)

반응형

C/C++에서 include를 하듯이, Python에서는 import를 한다.

 

Python의 매력은 언어 자체에만 있는 것이 아니라,

필요하다고 생각하는 것은 거의 다 존재하는... 정말 다양하고 멋진 패키지들이 있기 때문이다.

 

그런 패키지들은 어디에 저장이 되어있을까?!

 

 

▶ PyPI (Python Package Index)

repository of software for the Python programming language
Python package: collection of related code modules (files) bundled with metadata describing
                                how the package should be installed and used.

 

https://pypi.org/

 

 

▶ pip (package installer for Python)

- standard tool to install packages from PyPI
- The most popular tool for installing Python packages

 

https://pip.pypa.io/en/stable/

 

 

Python을 공부하면 알 수 밖에 없는 명령어가 바로 pip 이다.

Python을 설치하면 기본적으로 같이 설치되기 때문에 접근성에 있어서도 문제가 없다.

 

그래서 가끔 파이썬 패키지는 무조건 pip를 통해서만 설치해야 하는 줄 아는 사람도 있는데,

위 설명에서도 나오지만, pip는 그냥 "popular tool" 이다 !!!

 

파이썬 패키지 설치를 위한 도구는 pip 외에도 더 있다.

특히, 최근에는 "uv"라는 도구가 엄청난 인기를 얻고 있다.

 

다른 패키지 설치 도구들도 천천히 알아보도록 하겠다.

반응형

IntelliJ로 유명한 젯브레인(JetBrains)에서

25년 8월에 발표한 "The State of Python 2025)라는 보고서(설문조사)를 살펴보면

상당히 다양한 버전의 Python이 사용되고 있다는 것을 알 수 있다.

 

 

많은 사용자(15%)가 3.13 버전 이상의 최신 Python 버전을 사용하고 있지만,
1년 이상 오래된 버전을 사용하고 있을 가능성이 훨씬 더 높다(83%).

그런데, 이렇게 오래된 버전의 Python을 사용해도 괜찮은걸까?

 

 

▶ Status of Python versions (2025.10.25 기준)

- 가끔 아직도 2.x 버전 Python을 사용하는 경우를 최근에도 보는데, 보안을 생각하면 정말 위험한 선택이다

- 문제는 이제는 3.9 버전 이하도 모두 보안 패치도 끝난 end-of-life 버전이라는 것이다.

 

 

 

▶ Supported versions (2025.10.25 기준)

- 현재 시작하는 프로젝트라면 최소한 3.10 버전 이상을 사용해야 하고

  가급적이면 3.12 버전 이상을 사용하는 것이 그나마 조금 안전한 선택이지 않을까 한다.

 

 

 

▶ Release Compatibility Matrix (w/ PyTorch)

- support 기간 뿐만 아니라 호환성도 고려하면서 버전을 선택해야 한다.

- 사용하고자 하는 PyTorch 버전에 따라서 호환되는 Python 버전이 따로 있다.

 

 

 

▶ Python Downloads

- Python 설치를 위한 다운로드 페이지를 보면 다양한 버전과 배포판을 볼 수 있다.

 

 

 

안정성 등을 고려해서 최신 버전을 기피하는 개발자가 많은데,

최근 버전의 Python을 선택하면 성능에서도 많은 장점이 있고 유용한 여러 feature들이 있으니 한 번 고려해보기 바란다.

 

 

[ 출처/참고 ]

- https://blog.jetbrains.com/pycharm/2025/08/the-state-of-python-2025/ 

- https://devguide.python.org/versions/

- https://github.com/pytorch/pytorch/blob/main/RELEASE.md#release-compatibility-matrix

- https://www.python.org/downloads/

반응형

파이썬을 사용하다 보면 종종 만나는 단어가 바로 "PEP"이다.

특히, 코딩 스타일 관련해서 매번 만나는 "PEP 8" 규칙.

 

과연, PEP가 뭐길래?

 

▶ PEP Created

- 1990년대 후반 CNRI에 있던 Barry Warsaw(배리 워쇼우)가 많은 제안들을 Guido가 살펴볼 수 있도록 프로세스 도입
- RFC(Request for Comments, 인터넷 기술 및 표준에 관한 문서) 프로세스를 참조하여 (제안 → 토론 → 결론) 체계 수립

 

다양하게 파생된 '-EP' 문서들

 

 

▶ PEP 0 - Index of Python Enhancement Proposals (PEPs)

- PEPs로 알려진 모든 PEP 목록을 살펴볼 수 있게 제공해준다.
- 다양한 기준으로 PEP 목록을 제공해준다.

 

 

 

 

▶ PEP 8 – Style Guide for Python Code

- 파이썬 답게 코드를 작성하기 (Pythonic Code)

- PEP 중에서 가장 유명하고, 필독해야 하는 문서

- 들여쓰기는 4개의 공백(space)을 사용해야 한다는 것과 같은 코드 스타일 가이드 이다.

 

 

 

▶ PEP 572 – Assignment Expressions

- Guido를 독재자에서 사임하게 만들었던 문제의 그 PEP

- 일명 바다코끼리 연산자(walrus operator) ":=" 도입
  . 할당 표현식(assignment expression)
  . Python 3.8에 포함

- Guido가 제안한 내용이고 도입을 하자는 입장이었고, 커뮤니티는 파이썬 답지 않고, 간결성을 해친다며 반대

- 결국은 승인되어 파이썬 3.8에 도입되었지만, Guido는 BDFL 모델을 내려놓게 되었고

  이후 "The Steering Council Model"을 통해 의사결정 하기로 함 (PEP 8016)

 

 

 

▶ PEP 20 – The Zen of Python

- 파이썬의 선 (파이썬이 추구하는 철학)

 

아름다운 것이 못생긴 것보다 좋습니다.
명시적인 것이 암시적인 것보다 좋습니다.
단순한 것이 복잡한 것보다 좋습니다.
복합적인 것이 복잡한 것보다 좋습니다.
납작한 것이 중첩된 것보다 좋습니다.
흩뿌려진 것이 모인 것보다 좋습니다.
가독성은 중요합니다.
특별한 상황이, 규칙을 깰 만큼 특별하단 얘기는 아닙니다.
실용성이 순수함을 이길 때까지는 말이죠.
에러는 조용히 넘어가서는 안됩니다.
명시적으로 조용히 만들지 않는 한.
모호한 상황이라면, 추측하려 하지 마세요.
문제를 풀 수 있는 (바람직하고 유일한) 분명한 방법이 있어야 합니다.
하지만 네덜란드 인이 아닌 이상 처음에는 분명하지 않을 수 있습니다.
지금 하는 게 하지 않는 것보단 좋습니다.
하지만 지금 당장 하는 것보다 안 하는 게 나을 때도 있습니다.
구현 방식이 설명하기 어렵다면, 그것은 좋지 않은 생각입니다.
구현 방식이 설명하기 쉽다면, 그것은 아마 좋은 생각일 겁니다.
Namespaces는 쩌는 생각입니다. 더욱 이런 것들을 해봅시다!

 

※ 중간에 네덜란드 사람이라고 지칭하는 이유는... 귀도가 네덜란드 사람이라서이다 ^^

 

 

 

[ 참조/참고 ]

- Python PEP, 태어나 세계로 퍼진 ‘○EP’ 이야기: https://news.hada.io/topic?id=21031 
- Paul Everitt, "Python 1994", PyBay2017: https://www.youtube.com/watch?v=7NrPCsH0mBU&t=1662s 
- PEPs & Co.: https://hugovk.dev/blog/2025/peps-and-co/ 

- PEP 0: https://peps.python.org/pep-0000/ 

- PEP 8: https://peps.python.org/pep-0008/ 

- PEP 572: https://peps.python.org/pep-0572/ 

- PEP 20: https://peps.python.org/pep-0020/ 

 

반응형

왠지 갑자기 파이썬을 다시 제대로 공부하고 싶다는 생각에

애초에 어떻게 태어났는지가 궁금해서 공부해보기로 마음 먹었다.

 

ABC

- 이름 자체가 뭔가 엄청나다 ^^

- 1970 ~ 1980년대에 배우기 쉽고, 사용하기 쉬운 언어를 만들기 위해 개발된 프로그래밍 언어 (BASIC 언어 대체로 고안)
- CWI(Centrum voor Wiskunde en Informatica, 네덜란드 국가 수학 및 컴퓨터 과학 연구소)의 프로젝트로 진행
- Leo Geurts(레오 회르츠), Lambert Meertens(람베르트 메르텐스) 및 Steven Pemberton(스티븐 펨버턴) 주도
- Guido van Rossum(귀도 반 로섬)이 1980년대초 구현자로써 참여함

 

생김새를 보면 정말 뭔가 상당히 친숙하다

 

 

 

▶ Python Created

- Guido van Rossum(귀도 반 로섬)은 1986년 CWI에서 Amoeba(아메바)라는 분산 운영체제 프로젝트로 부서 이동
- 1989년 예외 처리 및 확장에 강점을 갖는 ABC 언어와 비슷한 스크립팅 언어 개발 착수
- 1991년 2월, 유즈넷에 공개 (그 전에는 Amoeba 프로젝트에 적용하면서 계속 개발)

 

진짜 개발자가 명품을 만드는 것은, 보통 휴가 때 이루어지곤 한다 … (뭔가 현타가....)

 

 

 

▶ Guido Van Rossum

- 파이썬의 아버지이자 엄마, 시조새, 창조자, 신 !!!

- CWI, NIST, CNRI 같은 여러 연구 기관에서 근무
- 2000년 5월 기술 스타트업 BeOpen.com → 10월 파산
- 2000년 말 ~ 2003년 Zope Corporation 근무 (파이썬 기반 웹 어플 서버/커뮤니티)
- 2003년 ~ 2005년 Elemental Security (회사 맞춤형 프로그래밍 언어 개발)
- 2005년 ~ 2012년 Google (50% 파이썬 언어 개발, 사내 개발 도구 개발)
- 2013년 ~ 2019년 DropBox (클라우드 스토리지)
- 은퇴 선언 → 은퇴 번복
- 2020년 ~ Microsoft 개발 부서, 현재 명예 엔지니어 직책

 

2006년 OSCON

 

 

2024년 PyCon

 

 

▶ MISC

- Python 어원: Monty Python's Flying Circus(몬티 파이튼의 비행 서커스)
  . BBC에서 1969년~1974년 방영된 스케치 코미디 TV 쇼
  . Monty Python: 영국 코미디 그룹으로 TV쇼 및 영화, 극장 공연 등 다양한 활동
- 자비로운 종신독재자(BDFL, Benevolent Dictator for Life)
  . 커뮤니티 논쟁이 있을 때 최종 결론을 내려줄 수 있는 역할로 소수의 오픈소스 개발 리더에게 부여
  . 1995년 Python 창시자 Guido Van Rossum 호칭으로 처음 사용됨
  . 2018년 7월 12일 BDFL에서 사임한다고 Guido Van Rossum이 선언
   →  PEP(Python Enhancement Proposal) 572 개선 제안 논란 이슈로 사임

 

Monty Python

 

 

 

[ 참고/출처 ]

- ABC 공식홈페이지: https://homepages.cwi.nl/~steven/abc/ 

- Python Doc: https://docs.python.org/3/faq/general.html#why-was-python-created-in-the-first-place 

- Wikipedia: https://ko.wikipedia.org/wiki/귀도_반_로섬

- Monty Python: https://ko.wikipedia.org/wiki/몬티_파이튼

- BDFL, Benevolent Dictator for Life: https://ko.wikipedia.org/wiki/자비로운_종신독재자

- BDFL 사임: https://www.cio.com/article/3532595/파이썬-창시자가-말하는-사임-이유와-파이썬의-미래.html

- https://www.cinematerial.com/tv/monty-pythons-flying-circus-i63929/p/ani1bnus 

 

반응형

셀레나님의 스터디 가이드 일정표에 다음과 같이 되어있다.

  - 8주차: 부족한 부분 복습 또는 배운 내용을 활용해 새로운 캐글 데이터셋 분석

 

제일 어려운 "자율학습" ... 😅

 

 

0. Kaggle Dataset

그래서 찾아본 캐글 데이터는 다음과 같다.

  - https://www.kaggle.com/datasets/undefinenull/million-song-dataset-spotify-lastfm

 

 

너무 흔한 데이터셋 말고 새로운 것으로 해서 결측치 등을 포함한 데이터셋 찾는 것도

막상 찾아보려고 하니 쉽지 않았다 ^^

 

위에 찾은 것은 "음악 추천 시스템 데이터셋"으로

사용자와 음악 트랙 간의 상호작용 데이터를 활용하여 개인화된 음악 추천 시스템을 구축할 수 있는 데이터셋이라고 한다.

 

 

1. 데이터 다운로드

kaggle 데이터 다운로드 받는 것도 해보자.

 

 

 

2. 데이터프레임

다운로드 받은 데이터셋을 가볍게 살펴보자.

 

 

데이터의 실제 모습을 살펴보려 했는데, 컬럼이 많아서 한 눈에 잘 보이지는 않는다 😅

 

 

 

3. 결측치 처리

info() 정보에서 보이는 것처럼 2개 column에만 결측치가 있는 것으로 보이는데,

직접 한 번 확인해보자.

 

 

데이터들이 어떤 모습인지 한 번 살펴보자.

 

 

genre의 경우 50%가 훨씬 넘는 비율을 갖기에 해당 column을 삭제하면 좋겠는데,

정말 삭제해도 되는지를 고민해봐야 하는데...

잘 모르는 상황에서도 가만히 보면 tags를 가지고 genre를 대체할 수 있을 것으로 보인다.

 

반면, tags의 경우에는 2.22% 비율의 결측치만 있으므로, 해당 row에 대해서 drop을 하는 것으로 하자.

 

 

맞겠지만 그래도 혹시 모르니 확인을 해보자.

 

 

4. 컬럼 분리

tags 부분을 보면 여러 데이터가 ", "으로 묶여서 표현되어 있는 것을 볼 수 있다.

이것을 One-Hot-Encoding 방식처럼 분리를 해보자.

 

 

좀 더 분석해보고 했어야 했는데, 그냥 해보다보니 tags 의 개별 아이템 개수가 엄청 많았다.

덕분에(?) 전체 column의 개수가 120개가 되었다.

 

 

5. 통계

도메인 지식이 미천하다보니.... 😥

음악 분류에 따라 뭔가 수치들이 달리 나오지 않을까 추정해본다.

 

 

 

6. 그래프

뭔가 다양하게 분석을 해봐야할 것 같은데,

일단 생각나는대로 하나 집어서 그래프를 그려봤다.

 

 

원하는 그래프는 아니지만, 그래도 ...

 

 

 

음... ChatGPT한테 일을 많이 시켜봐야겠다.

반응형

드디어 마지막 챕터까지 왔다.

힘들었지만, 그래도 주말마다 꼬박 꼬박 해냈다.

 

07장 의료 데이터 분석 프로젝트

 

 

앞서 했던 "넷플릭스 데이터 분석 프로젝트"와 유사한 방식으로 진행하면 될 것 같다.

 

① 의료 데이터 분석 프로젝트 소개

② 의료 데이터셋 파악하기

③ 심부전 데이터셋 필터링하기

④ 심부전 데이터셋 결측치 처리하기

⑤ 심부전 데이터셋 통계 처리하기

⑥ 심부전 데이터셋 시각화하기

 

 

① 의료 데이터 분석 프로젝트 소개

앞서 진행한 넷플릭스 데이터 분석과 대부분 유사하게 진행되고

차이가 있다면 "logical indexing" 부분에 조금 더 중심을 두고 진행하는 것이라고 한다.

 

 

② 의료 데이터셋 파악하기

교재에서는 자세한 설명이 없었지만, 찾아보니 아래 데이터인 것 같다.

- https://www.kaggle.com/datasets/fedesoriano/heart-failure-prediction

 

 

직접 다운로드 받아보자.

 

 

다운로드 받은 CSV 파일을 데이터프레임으로 읽어오자.

 

 

샘플 데이터를 살펴보자.

 

 

각 columns 의미는 다음과 같다.

 

 

그런데, 교재의 데이터와는 좀 차이가 있는 것 같다.

교재에서 제공하는 데이터를 보면 일부 column에서 결측치 값이 보이는데,

Kaggle에서 내려받은 데이터에서는 결측치 값이 안보인다.

 

아쉽지만, 교재에서 제공받은 파일을 업로드해서 사용해야겠다.

 

 

 

③ 심부전 데이터셋 필터링하기

심장병 여부를 나타내는 'HeartDisease' 컬럼 데이터를 살펴보자.

 

 

결측치 값도 보이고, 0.0/1.0 데이터도 보인다.

값이 '1.0'인 데이터를 True (심장병 맞음) 로 판단하면 된다.

간단히 실습해보자.

 

 

 

④ 심부전 데이터셋 결측치 처리하기

결측치 값들이 얼마나 되는지 살펴보자.

 

 

그다지 큰 비율은 아니지만, 그래도 처리를 해줘야 한다.

책의 저자와는 다른 개인적인 취향으로 별도의 데이터프레임을 만들어서 작업을 진행했다.

 

 

앞서 해봤던 넷플릭스 데이터 분석과 거의 유사한 과정이다.

이렇게 진행한 결과는 다음과 같다.

 

 

 

⑤ 심부전 데이터셋 통계 처리하기

데이터프레임에서는 여러 통계량을 손쉽게 구할 수 있도록 다양한 함수를 제공해준다.

 

 

groupby()를 이용해서 그룹별 통계값들을 구할 수도 있다.

 

 

 

⑥ 심부전 데이터셋 시각화하기

여기에서 사용할 팔레트를 설정해보자.

 

 

흉통 유형을 카테고리화 한 다음 개수를 세고, 이를 파이 차트로 표현해보자.

 

 

심부전 빈도 그래프를 그려보자.

심부전증이 있을 때와 없을 때 ASY(무증상)가 압도적인지 살펴보기 바란다.

 

 

 

나이에 따른 HeartDisease 데이터를 한 번 살펴보자

 

 

이렇게 구한 값을 가지고 나이에 따른 심부전 여부를 살펴볼 수 있는 그래프를 그려보자.

 

 

 

심부전 범주형 산점도 그래프를 그려보자.

 

 

 

워드 클라우드도 하나 만들어보자.

 

 

예쁘게 하트 모양으로 그려졌다.

 

 

여기까지 해서 책을 한 번 살펴봤다.

추후 한 번 다시 복습하면서 곱씹어봐야겠다 ^^

반응형

이번에 공부할 것은 'Netflix Dataset'을 가지고 데이터 전처리 및 시각화를 알아보는 과정이다.

 

 

지난 포스팅에서부터 계속 말하지만,

교재를 기준으로 공부를 하긴 하지만 개인적으로 처음하는 공부는 아니기에

개인적 취향에 맞춰 필요한 부분만 정리하고 있다.

 

이번 스터디는 아래와 같은 순서로 공부해보도록 하겠다.

 

⑴ 넷플릭스 데이터 분석 프로젝트 소개

⑵ 넷플릭스 데이터셋 파악하기

⑶ Missing Value Handling

⑷ Feature Engineering

⑸ Visualization

 

 

⑴ 넷플릭스 데이터 분석 프로젝트 소개

넷플릭스의 데이터를 빠르게 살펴보고, 전처리를 수행한 다음 다양한 시각으로 데이터 분석을 하여

여러 인사이트를 도출해보는 프로젝트를 수행해보겠다.

 

데이터 시각화를 할 때에는 분석하는 데이터와 관련된 색상을 활용하면 완성도를 더 올릴 수 있다.

https://www.color-hex.com/color-palette/22942

 

 

 

⑵ 넷플릭스 데이터셋 다운로드

캐글에 등록되어 있는 넷플릭스의 영화 및 티비쇼 8000편 정보의 데이터셋을 활용하고자 한다.

https://www.kaggle.com/datasets/shivamb/netflix-shows

 

 

캐글에서 공개된 데이터는 Python으로도 다운로드를 받을 수 있다.

 

 

이렇게 내려 받은 파일을 pandas로 간단하게 읽어올 수도 있다.

 

 

실제 데이터를 확인해보면 다음과 같다.

 

 

각 columns 의미는 교재에 너무 잘 정리되어 있다.

 

 

 

⑶ Missing Value Handling

▷ 결측치 비율 別 처리 가이드

- 결측치가 데이터의 5% 미만이라면 → 행 삭제

- 결측치가 데이터의 5~20% 사이라면 → 대체

- 결측치가 데이터의 20% 이상이라면 → 열 삭제 권장

 

".info()"를 통해 간략하게 결측치 현황을 파악할 수 있긴 하지만, 정확한 비율을 다시 한 번 확인해보자.

 

 

교재에서는 원본 데이터(df)를 직접 수정하는 것을 권고하지만, 개인적인 취향으로 .copy()하여 작업하도록 하겠다.

 

 

값 대체할 것 대체하고, 행 삭제할 것 삭제한 뒤의 현황을 보면 다음과 같다.

 

 

8807개였던 데이터가 8790개로 변한 것을 확인할 수 있다.

그리고, 결측치도 모두 처리된 것을 볼 수 있다.

 

 

 

⑷ Feature Engineering

'rating' column은 '넷플릭스 등급 표시'를 해주고 있다.

즉, 일반적인 string 데이터가 아니라 category 형태로 그룹핑을 할 수가 있는 것이다.

- https://www.primevideo.com/help/ref=atv_hp_nd_cnt?nodeId=GFGQU3WYEG6FSJFJ

 

 

미국의 등급 시스템을 기준으로 묶어주면 되는데, 'age_group' 명칭의 column으로 생성해보도록 하겠다.

 

 

매핑하기 위한 딕셔너리를 작성하고, map()을 돌리면 잘 분류되어 값이 추가된 것을 볼 수 있다.

 

지금까지 작업한 내역들을 CSV 파일로 저장까지 하면서 일단 마무리 해보자.

 

 

 

⑸ Visualization

Graph를 그릴 기본 준비를 해보자.

 

 

원하는 정보를 검색하는 것을 해보자.

 

 

이번에는 'type' column의 내역을 한 번 살펴보자.

 

 

해당 데이터를 가지고 파이 차트를 그려보자.

 

 

이번에는 장르 정보를 담고 있는 'listed_in' column을 살펴보자.

 

 

여러 장르에 속하는 경우 ", "로 여러 항목이 나열되어 있는 것을 볼 수 있다.

", "로 split을 하는데 'expand=True' 옵션이기에 column을 확장한다.

 

 

그런다음 다시 'stack()'으로 세로 방향으로 변환(column 하나로 합치기)해서 value_counts() 한다.

이제 막대 그래프로 그려보자.

 

 

이 그래프를 보고 얻을 수 있는 인사이트는 다음과 같다고 한다.

 

"넷플릭스는 드라마와 국제 영화에 집중하고 있습니다. 글로벌한 콘텐츠 제공과 깊이 있는 스토리 라인으로 시청자들의 다양한 취향을 만족시키려 하려는  것 같습니다. 또한, 다양한 영화 장르의 제공을 통해 시청자들에게 보다 풍부한 선택지를 제공합니다. 정리하자면, 넷플릭스의 전략은 장르 다양성과 글로벌 사용자들의 요구를 동시에 충족시키기 위한 방향으로 나아가고 있음을 알 수 있습니다."

 

이번에는 나이 그룹별 국가별 콘텐츠를 살펴보자.

 

 

'country' column의 경우에도 ', '로 구분된 여러 나라가 입력되어 있음을 알 수 있다.

일단, split() 해보자.

 

 

pandas의 옵션을 설정하는 기능을 활용해서 출력 값의 개수 제한을 풀어봤다. (유용해 보이지는 않는다)

 

list 형태로 되어있는 'country' column을 기준으로 row를 분리해보자.

 

 

7번 index를 보면 row가 분리된 것을 확인할 수 있다.

 

 

더 자세히 살펴보자.

 

 

각 연령대별로 국가의 개수를 count하고 이를 표 형태로 살펴보자.

 

 

'.groupby('age_group')' 연령대로 그룹핑을 하고, '['country'].value_counts()' 국가의 개수를 센 뒤, '.unstack()'를 통해 세로로 정리된 데이터를 가로 형태로 변환을 했다.

 

우리가 사용할 항목들만 선별해서 정리해보자.

 

 

결측치 값이 보인다. 0으로 채우자.

 

 

지금 보이는 값으로는 서로간의 값 비교를 하기가 쉽지 않다.

비율로 값들을 변경해보자.

 

 

'.sum(axis=0)'을 통해 각 열의 합을 계산함 → 국가별 sum() 값을 구함

 

 

'.div(..., axis=1)'을 통해 각 연령대듸 값들을 국가(column)의 총합으로 나누어 비율을 계산

 

지금까지 진행한 내용을 가지고 히트맵을 그려보자.

 

 

 

위 그래프를 보고 얻을 수 있는 인사트는 다음과 같다고 한다.

 

"United States/Canada는 모든 나이 그룹에서 골고루 이용자를 가지고 있기에 넷플릭스가 다양한 연령층에 걸쳐 널리 사용되고 있음을 나타내고 있다. 그리고 모든 국가에서 성인 이용자가 가장 많은데, 이는 넷플릭스의 콘텐츠가 성인들의 관심사와 취향을 충족시키는 데 중점을 두고 있다는 것을 보여준다. 성인층의 높은 비율은 넷플릭스의 다양한 장르와 깊이 있는 콘텐츠가 성인 이용자들에게 특히 매력적임을 시사한다. 한편 India/Japan은 Older Kids의 비율이 꽤 높은데 이는 해당 국가들에서 넷플릭스가 어린이와 가족 단위의 콘텐츠를 많이 제공하고 있음을 나타낸다. 이러한 결과는 각국의 문화적 특성과 콘텐츠 선호도가 넷플릭스 이용 패턴에 영향을 미친다는 것을 시사한다. 이러한 분석을 통해 넷플릭스는 각 국가별로 이용자의 연령대에 맞춘 컨텐츠와 교육적인 프로그램을 강화할 수 있으며, 성인 비율이 높은 국가에서는 성인 대상의 드라마/영화/다큐멘터리 등을 더욱 강조할 수 있다."

 

이번에는 워드 클라우드를 한 번 그려보도록 하자.

일단 넷플릭스 로그 이미지를 확보하자.

- https://en.m.wikipedia.org/wiki/File:Netflix_2015_logo.svg

 

 

사이트에서 보이는 저 로고를 다운로드 받아봤다.

 

 

PNG 파일을 JPG 파일로 변환을 했고,

투명한 배경을 검은색이 아닌 하얀색으로 나오도록 하기 위해서 중간에 하얀색 그림을 그려서 합치도록 했다.

 

 

저 글씨 모양으로 wordcloud가 나오도록 하려는 것이다.

이제 본격적으로 wordcloud를 그려보자.

 

 

정보를 보기에 좋은 방식은 아니지만, 재미있게 표현한 결과는 다음과 같다.

 

 

 

지금까지 CSV 데이터 파일을 읽어들여서 결측치 값들을 적절히 처리하고

category화 할 수 있는 것들을 가공하면서 feature engineering을 한 뒤에

이를 여러 Graph로 visualization해서 인사이트를 살펴보는 과정을 해봤다.

 

반응형

+ Recent posts