Python에서 현재 설치된 라이브러리(패키지) 목록을 확인하는 방법은 여러 가지가 있습니다. 주로 pip 패키지 관리자를 사용하여 설치된 패키지 목록을 조회합니다. 아래는 다양한 방법으로 현재 설치된 라이브러리 목록을 확인하는 방법을 설명합니다.
1. pip list 명령어 사용
가장 일반적인 방법은 터미널 또는 명령 프롬프트에서 pip list 명령을 사용하여 설치된 모든 패키지 목록을 조회하는 것입니다.
pip list
위 명령을 실행하면 설치된 모든 패키지의 목록이 출력됩니다.
2. pip freeze 명령어 사용
pip freeze 명령은 pip list와 유사하게 현재 환경에 설치된 패키지와 그 버전을 출력합니다. 이 명령은 보통 requirements.txt 파일을 생성하는 데 사용됩니다.
pip freeze
3. Python 스크립트를 통한 확인
Python 스크립트 내에서 pkg_resources 모듈을 사용하여 현재 설치된 패키지를 조회할 수 있습니다.
import pkg_resources
# 현재 설치된 패키지 목록 조회
installed_packages = pkg_resources.working_set
installed_packages_list = sorted(["%s==%s" % (i.key, i.version) for i in installed_packages])
for package in installed_packages_list:
print(package)
4. conda list (conda 환경에서)
만약 Anaconda 또는 Miniconda와 같은 conda 패키지 관리자를 사용하고 있다면, conda list 명령을 사용하여 현재 환경에 설치된 패키지 목록을 확인할 수 있습니다.
conda list
위 방법 중 하나를 선택하여 현재 Python 환경에 설치된 모든 패키지 목록을 확인할 수 있습니다.
윈도우에서 리눅스로 전환할 때 가장 큰 어려움이 바로 소프트웨어다. 윈도우에서 쓰던 것을 리눅스에서 쓰지 못할지 우려한다. 하지만 리눅스에서도 특수 목적 애플리케이션 외에 다양한 소프트웨어를 사용할 수 있다.
ⓒ IDG 기본적으로 리눅스는 윈도우와 다르다. 윈도우와 다르게 작동, 구성되며 윈도우 프로그램을 바로 실행할 수 없다. 다만, 가상화 또는와인(Wine)을 사용해 리눅스에서도 윈도우 프로그램을 사용할 수 있다. 반면 윈도우에서 이미 오픈소스 소프트웨어를 많이 써왔다면 리눅스 환경에서도 쉽게 적응할 수 있다.리브레 오피스, 파이어폭스, 썬더버드,VLC와 같은 프로그램은 리눅스와 윈도우에서 모두 똑같이 사용할 수 있으며, 작동 방식도 거의 같다. 이들 외에 다른 애플리케이션도 다양하지만, 일부 기능과 작동 방식은 윈도우용 프로그램과 다소 차이가 있다. 어느 정도 익숙해지는 시간이 필요하다.
리눅스에서 소프트웨어 설치하기
윈도우 10 또는 11에서는 마이크로소프트 스토어를 통해 새 소프트웨어를 설치하고 업데이트할 수 있다. 여기서 제공되지 않는 것은 제조업체의 웹사이트나 기타 다른 곳에서 내려받은 설치 파일을 사용한다. 이런 소프트웨어를 표준화된 관리 기능이 없으므로 업데이트가 자동으로 이뤄지지 않을 수 있다.
리눅스 시스템은 윈도우와 달리 각 배포판의 리포지토리에서 소프트웨어를 가져온다. 중앙 패키지 데이터베이스가 있으며, 업데이트는 시스템과 설치된 모든 프로그램에 적용됩니다. 따라서 프로그램 패키지를 확인하고 서명하기 때문에 높은 수준의 보안이 보장된다.
문제는우분투 22.04또는리눅스 민트 21.2와 같은 LTS(long-term support) 리눅스 배포판은 5년의 지원 기간 동안 새로운 소프트웨어가 거의 제공되지 않는다는 점이다. 파이어폭스나 썬더버드 같은 보안에 중요한 소프트웨어는 정기적으로 업데이트되지만, 리브레 오피스와 같은 프로그램은 기본 버전이 그대로 유지된다. 시스템의 안정성을 더 중요하게 생각하기 때문이다.
사용할 수 있는 업데이트에 대해 자동으로 알려준다. 시스템과 설치된 모든 애플리케이션에 대한 설치가 중앙 집중식으로 이루어진다. ⓒ IDG 리눅스용 최신 프로그램: LTS 배포판 사용자가 최신 소프트웨어를 계속 받을 수 있도록 우분투와 리눅스 민트는 표준 패키지 관리 외에도 스냅(Snap)과 플랫팩(Flatpak) 등 2가지 컨테이너 형식을 사용한다. 프로그램과 필요한 모든 시스템 파일을 별도의 영역에 설정해 시스템의 나머지 부분이 최신 파일의 영향을 받지 않는 장점이 있다. 반면 기존 패키지 설치보다 하드 드라이브에 더 많은 공간이 있어야 하는 것은 단점이다.
사용자 관점에서 처음에는 패키지의 정확한 형식이 중요하지 않다. 우분투에서는 "우분투 소프트웨어(Ubuntu Software)" 도구를 통해, 리눅스 민트에서는 "애플리케이션 관리(Application Management)"를 통해 패키지 관리가 여전히 중앙 집중화되어 있기 때문이다. 여기서 프로그램을 검색하거나 프로그램을 추천받을 수 있다.
하지만 새 프로그램을 설치할 때는 사용 가능한 버전이 여러 가지인 경우가 많으므로 버전에 주의해야 한다. 우분투 소프트웨어에서 "스냅 스토어(Snap Store)"와 "ubunt-jammyuniverse(deb) 또는 이와 유사한 소스(Source) 중 선택할 수 있다. 스냅 스토어의 프로그램은 일반적으로 더 최신 버전이며, "프리뷰/엣지(preview/edge)"가 추가된 프리 릴리즈 버전도 있다. 리눅스 민트도 비슷합니다. 일반적으로 오래된 "시스템 패키지(system package)"와 "플랫팩, 플랫텁(Flatpak, Flathub)" 및 "플랫팩, 플랫텁 베타(Flatpak, Flathub Beta)" 중 선택할 수 있다. 클래식 시스템 패키지와 스냅, 플랫팩 컨테이너를 병렬로 설치할 수도 있다.
리브레 오피스는 광범위한 기능을 제공한다. 메뉴 대신 리본을 활성화할 수 있어 마이크로소프트 오피스와 비슷하다. ⓒ IDG
리눅스용 오피스 패키지
마이크로소프트 오피스는 가장 널리 쓰이는 생산성 앱이다. 워드 프로세싱, 스프레드시트의 전 세계 표준이다. 하지만 가끔 메일을 사용하거나 문서를 작성하는 정도라면 우분투와 리눅스 민트에 사전 설치된 리브레 오피스로도 충분하다.
다른 사람과 문서를 자주 주고받거나 마이크로소프트 인프라에 의존하는 환경에서 작업한다면 리눅스를 자신 있게 추천하기 힘들다. 리브레 오피스는 마이크로소프트 서식 문서를 읽을 수 있지만, 복잡한 문서의 경우 서식이 항상 올바르게 표시되는 것은 아니다. 특히 표나 매크로 등이 깨질 가능성이 있다. 가장 큰 어려움은 아마도 스프레드시트다. 리브레 오피스의 스프레드시트 앱인 칼크(Calc)는 엑셀과 비슷한 기능을 제공하지만, 전체적으로 같은 기능이라고 할 수는 없다.
또한, 리브레 오피스는 기본적으로 클래식 메뉴 모음을 표시한다. 마이크로소프트 오피스에 익숙하다면 보기 > 사용자 인터페이스에서 "탭에서(In tab)"를 선택해 활성화하는 리본을 선호할 수도 있다. "모두(For all)"를 클릭하면 이 설정이 오피스 제품군의 모든 하위 프로그램에 적용된다.
리브레 오피스 대신 리눅스에서 사용할 만한 생산성 앱을 더 찾는다면, 마이크로소프트의무료 온라인 오피스 제품도 살펴볼 만하다. 오피스닷컴(www.office.com)에 마이크로소프트 계정으로 로그인하기만 하면, 웹 브라우저에서 워드, 엑셀, 파워포인트 프로그램을 무료로 쓸 수 있다. 단, 웹용 오피스는 설치용 마이크로소프트 365와 같은 기능이 아니며, 자세한 차이점은 여길 참고하면 된다. 제약이 있기는 하지만 외부에서 마이크로소프트 오피스 파일을 편집하거나 다른 사람과 파일을 교환할 때 유용하다. 이렇게 만든 오피스 파일은 클라우드 원드라이브에 저장된다. 오프라인에서 문서 작업을 하려면 파일을 내려받아야 한다. 웹용 오피스에서는 리브레 오피스 형식의 파일을 가져오고 내보낼 수도 있다.
김프는 사진 편집은 물론, 여러 레이어와 마스크가 있는 복잡한 그래픽 작업까지 지원한다. ⓒ IDG
이미지 편집과 그래픽
리눅스에는 이미 간단한 이미지 뷰어가 설치돼 있다. 그놈(Gnome) 데스크톱이 설치된 우분투에는 그놈 이미지 뷰어, 리눅스 민트에는 X 뷰어가 있다. 두 프로그램을 이용하면 슬라이드쇼를 표시하고 이미지를 회전할 수 있다. 간단한 편집 기능이 필요하다면 우분투에서는 샷웰(Shotwell)을, 리눅스 민트에서는 픽스(Pix)를 쓰면 된다. 기능은 비슷하다. 적목 제거, 색상 및 밝기 조정, 이미지 자르기 등을 지원한다.
이 중에서디지캠(Digikam)은 사진 관리 앱이다. 앨범, 태그 또는 키워드에 따라 이미지를 정렬하고 분류할 수 있다. 톤 보정, 적목 제거, 프레임 추가 등 다양한 사진 편집 툴을 쓸 수 있다. RAW 파일을 보거나, 화이트 밸런스 같은 보정을 할 수 있다. 물론 로 테라피(Raw Therapee)나 다크테이블(Darktable)과 맞먹을 정도는 아니다. 더 많은 기능이 필요하면 전문가용 앱을 찾아야 한다.
김프(Gimp)는 주로 윈도우에서 포토샵을 쓰던 사용자를 대상으로 한 이미지 툴이다. 이 프로그램은 페인팅 도구, 레이어, 마스크, 자동 향상, 다양한 필터를 제공한다. 사진을 수정하고, 이미지를 자르거나 변형할 수 있다. 포토샵과 마찬가지로 대부분 기능은 즉시 액세스할 수 없고, 특정 효과는 마스크와 레이어를 적절히 조합해야만 쓸 수 있다. 하지만 널리 보급돼 사용되고 있으므로 궁금한 점은 구글링으로 대부분 해결할 수 있다.김프 홈페이지의 문서(www.gimp.org/docs)가 좋은 출발점이다.
크리타(Krita)는 김프와 비슷하지만 더 쓰기 쉽다. 이 소프트웨어는 원래 페인팅 프로그램으로 만들어졌고, 드로잉 태블릿에서도 쓸 수 있다. 기본적으로 이미지를 선명하게 하거나 노이즈를 줄이는 등 사진에 대한 다양한 자동 보정과 최적화 도구를 지원한다. 크리타는 이미지를 예술적으로 바꾸는 다양한 효과도 제공한다. '이미지(Image)' 메뉴의 명령으로 크기 조정, 회전, 자르기를 빠르고 쉽게 할 수 있다.
잉크스케이프(Inkscape)는 어도비 일러스트레이터와 비슷하다. 벡터 그래픽 프로그램으로, 만화, 클립아트, 로고, 전단지, 브로셔, 다이어그램과 같은 예술적, 기술적 일러스트레이션 작업에 적합하다. 해상도와 관계없이 화면 및 인쇄용 요소를 선명하고 손실 없이 만들 수 있다. 잉크스케이프에서 사용하는 파일 형식은 SVG(Scalable Vector Graphics)다.
VLC 미디어 플레이어는 윈도우 버전과 거의 비슷하며 똑같이 작동한다. 일반적인 미디어 형식을 안정적으로 재생한다. ⓒ IDG
오디오와 비디오용 소프트웨어
리눅스는 멀티미디어 기능에 있어서 아쉬운 것이 없다. 운영체제에 기본적으로 포함된 프로그램이 대부분 동영상 형식을 문제없이 재생하고, 필요한 경우 추가 코덱을 설치하면 된다.
대표적인 동영상 플레이어인VLC는 윈도우에서 자주 사용되는데, 리눅스에서도 사용할 수 있다. 모든 일반적인 코덱이 포함돼 있어 거의 모든 동영상 형식을 재생한다. 복사 방지된 DVD를 재생하려면 추가 라이브러리가 필요하지만, 이는 다른 모든 미디어 플레이어와 마찬가지다. 복사 방지 DVD 재생 라이브러리를 설치하려면 일단 터미널을 연다.
sudo apt install libdvd-pkg
다음 명령으로 설치를 완료한다.
sudo dpkg-reconfigure libdvd-pkg
VLC 대신 쓸 수 있는 동영상 플레이어를 찾는다면Sm플레이어(Smplayer)가 있다. 때에 따라 실행 속도가 조금 더 빠르고 별도 테마를 통해 인터페이스를 사용자 지정할 수 있는 것이 특징이다. Sm플레이어에는 중요한 오디오, 비디오 코덱도 모두 포함돼 있다.오픈샷(Openshot)은 동영상을 편집하고, 효과를 추가하고, 여러 형식으로 저장하는 소프트웨어다. 인터페이스가 직관적이어서 초보자도 쉽게 이해하고 사용할 수 있다.
리브레 오피스 구성 폴더의 구조는 윈도우와 리눅스에서 같다. 따라서 파일을 리눅스 시스템으로 간단히 복사할 수 있다. ⓒ IDG
윈도우의 앱 설정을 그대로 리눅스로 옮기는 방법
윈도우에서 리눅스로 전환해 필요한 소프트웨어를 사용할 때 리브레 오피스와 같이 복잡한 구성의 프로그램은 윈도우에서 데이터를 복사하는 방식으로 설정하는 시간을 줄일 수 있다. 인터페이스를 일관되게 사용할 수 있을 뿐만 아니라 자동 텍스트 모듈, 자체 사전 또는 매크로도 그대로 쓸 수 있다. 단, 이렇게 설정을 그대로 옮기려면 두 프로그램의 버전이 일치해야 한다.
윈도우용 리브레 오피스의 구성을 리눅스로 옮기기 구체적인 방법은 다음과 같다.
1단계 : 윈도우에서 리브레 오피스를 종료하고 윈도우 탐색기의 주소 표시줄에 %appdata%를 입력한 후 엔터 키를 눌러 확인한다. 그런 다음 하위 폴더 "LibreOffice\4"로 변경하고 "user" 폴더를 ZIP 파일로 압축한다. 이 파일을 리눅스 홈 디렉터리에 복사한다.
2단계 : 아직 리눅스에서 오피스 패키지를 실행한 적이 없다면, 리브레 오피스를 시작하고 프로그램을 다시 닫는다. 파일 관리자에서 홈 디렉터리로 이동해 ZIP 파일의 압축을 풀고 Ctrl-C를 사용하여 "사용자" 폴더를 복사한다.
3단계: 파일 관리자에서 Ctrl-H를 사용해 숨겨진 파일을 표시하고 ".config/libreoffice/4" 폴더로 변경한다. 디렉터리 이름을 "user"로 바꾸고 윈도우에서 복사한 폴더를 Ctrl-V로 붙여 넣는다. 이제 리브레 오피스를 시작하면 윈도우에서 설정한 그대로 사용할 수 있다.
파이어폭스의 구성 옮기기 파이어폭스에서 데이터를 옮기려면 리눅스용 파이어폭스 버전이 윈도우 버전과 같거나 최신 버전이어야 한다. 버전 번호는 도움말 > 파이어폭스 정보에서 햄버거 메뉴를 클릭해 확인할 수 있다. 구체적인 방법은 다음과 같다.
파이어폭스의 윈도우에서 햄버거 메뉴(대시 3개)를 클릭하고 도움말 > 추가 문제 해결 정보를 선택한다. "일반 정보" 아래에서 "프로필 폴더" 다음에 있는 "폴더 열기"를 클릭합니다. 파이어폭스를 종료한다. 표시된 폴더를 ZIP 파일로 압축한 다음 리눅스 홈 디렉터리에 복사해 압축을 푼다.
리눅스에서 파이어폭스를 시작하고 윈도우와 마찬가지로 프로필 폴더를 만든다. 파이어폭스를 종료한다. 윈도우 백업의 프로필 폴더에 있는 모든 파일을 리눅스 프로필 폴더로 복사하고 기존 파일을 모두 덮어쓴다.
썬더버드의 구성 옮기기 여기서도 두 프로그램 버전이 같거나 리눅스 버전이 최신 버전이어야 한다. 파이어폭스와 마찬가지로 프로필 폴더를 정하고 썬더버드를 닫은 다음 폴더를 ZIP 파일로 압축한다. 리눅스에서 이 파일의 압축을 풀고 썬더버드 프로필 폴더를 확인한다. 이제 썬더버드를 닫고 윈도우 프로필의 파일을 이 폴더에 복사한다.
소프트웨어 개발이 쉽다고 생각하는 사람은 아무도 없지만, 이렇게나 다양한 방식으로 어려울 수 있다고 누가 생각했을까? 에반스 데이터에 따르면, 전 세계의 소프트웨어 개발자는 약 2,690만 명으로 추산된다.
최근 AWS의 알리 스피텔이 트위터를 통해 던진 "개발자로서 일하면서 가장 어려운 부분이 무엇인가?"라는 질문에 100명 이상의 개발자가 답했다. 답변은 대부분 몇 가지 핵심 주제에 수렴할 것으로 예상했지만, 실제로는 매우 다양했다. 개발자의 삶을 개선할 방법을 찾고자 하는 기업이라면, 이들 응답을 자세히 살펴볼 가치가 있다. 개발자들의 이야기를 들어보자.
점점 늘어나는 프로젝트 범위 때때로 우리는 개발자를 너무 사랑한다. 우리는 개발자(새로운 킹메이커와 퀸메이커)에게 의존해 혁신을 이루고 혁신을 지속한다. 카일 쉐블린은 "제품과 디자인에 대한 끊임없는 범위 확대의 위협"이 개발자의 삶을 어렵게 만든다고 지적했다. 이는 개발자의 재능에 대한 건강한 믿음에서 비롯된 것이지만, 무분별한 범위 확대는 잔뜩 부풀어 오른 소프트웨어를 낳고 이런 소프트웨어는 유지 관리도 어렵다. 브라이언 심쿠스가 강조한 것처럼 여기에 "비개발자가 설정한 비현실적인 마감일"이 더해지면 이중고를 겪게 된다.
또한 다니엘레 헤벌링이 지적하듯이 개발자는 "실제로 구축해야 하는 것과 기대되는 결과물에 대한 팀 내 의견 불일치"를 싫어한다. 개발자는 항상 "더 나은 솔루션이 있는지 끊임없이 의심"하게 된다. 물론 더 나은 솔루션은 존재하기 마련이다. 다만 뒤늦게 그 해결책에 도달할 뿐이다. 핵심은 자비어 곤잘레스가 주장하듯이 "완벽주의의 무한 루프를 멈출 때"를 파악하는 것이다. 코드는 결코 완벽할 수 없다. 이를 받아들이고 계속 나아가야 한다.
학습의 속도 수십 년 동안 코볼에 대한 이해에 안주해 온 모든 개발자는 오늘날 프레임워크의 유동성이라는 현실에 직면해 있다. 브랜던 트래본은 개발자에게 "언어와 프레임워크의 끊임없는 변화를 따라잡는 것"은 심각한 도전이 될 수 있다고 지적했다. "가장 주목받을 수 있다고 생각되는 것을 골라 거기서부터 시작”할 수 있지만, 그것만으로는 충분하지 않다. "물론 새로운 것으로 '전환'할 준비가 되어 있어야 한다." 프레임워크는 개발자가 데이터베이스나 기타 시스템을 제대로 활용하지 못하게 만드는 경우가 많지만, 때로는 개발자가 혁신의 속도를 따라잡을 수 있는 유일한 방법이기도 하다. 그럼에도 불구하고 쉬운 일은 아니다. 프레임워크가 도움이 되긴 하지만 프레임워크도 변화하고, 그 변화가 문제를 일으킨다.
이와 관련된 것은 애플리케이션 자체의 아키텍처이다. 마이클 자크제스키에 따르면, "애플리케이션이 어떻게 발전할지 예상해 최상의 아키텍처를 준비하되, 처음부터 무리하지 말아야 한다." 어려운 일이다. 예를 들어, 개발자는 확장에 대비해야 할 수도 있지만, 미리 비용을 초과할 정도로 과도하게 프로비저닝해서는 안 된다.
'더 많이 코딩할 수만 있다면' 루크 프로서는 "코딩하지 않는 모든 것"은 소프트웨어 개발을 어렵게 만든다고 말한다. 일부 조사에 따르면, 개발자는 전체 시간 중 5%만 코드를 작성하고 나머지 70%는 코드를 이해하려고 노력하거나 코드와 관련이 없어 보이는 일을 하는 데 소비한다. 이를 "코딩 프로세스를 시작하기 위해 모든 세부 사항을 파악하려고 노력하는 것"이라고 표현하기도 한다. 또 다른 까다로운 문제가 있는데, 바로 "팀 간 협업, 특히 대기업의 경우"이다. 0과 1에 초점을 맞추고 싶지만 소프트웨어 개발은 궁극적으로 사람이 하는 것이며, 사람은 어렵다.
AI가 소프트웨어 개발에서 인간을 배제할 것이라는 일반적인 두려움은 어떤가? AI가 사람을 대체할 수는 없다. 지금은 물론 앞으로도 없을 것이다. 그러니 "매일 아침 일어나서 내가 여전히 이 일과 이 산업에 관심이 있다고 스스로를 설득해야 하는", "LLM이 우리를 비롯한 모든 실제 가치를 창출하는 사람들을 쓸모없게 만들 것이라고 예측하는 관리자들이 걱정하는" 제시카 리와 나머지 모든 숙련된 소프트웨어 개발자들에게 이 말로 끝을 맺고 싶다. “기계가 소프트웨어 개발의 지루한 작업을 더 많이 맡게 되면서 진정으로 사려 깊고 혁신적인 작업은 여러분과 같은 창의적이고 훌륭한 개발자가 영원히 수행할 것이다.”
구글이 플러터 팀의 인력을 감축한 데 이어 다트, 파이썬 팀을 인력도 줄이고 있다는 소식이다. 구글은 그러나 해고 사실을 묻는 인포월드의 문의에 응답하지 않았다.
일부 직원들의소셜 미디어 포스트에 따르면 구글은 5월 중 개최하는 연례 I/O 개발자 컨퍼런스를 앞둔 현재, 이들 팀의 인력 일부를 해고하고 있다. 그러나 구체적인 팀, 역할, 대상자 수 등은 알려지지 않고 있다.
플러터와 다트의 한 PM은 X에 게재한 글에서 이번 정리해고가 "많은 팀"에 영향을 미쳤으며 "많은 훌륭한 프로젝트에서 인력을 잃었다"라고 말했다. 레딧에 게재된 다른 게시물에서 또 다른 네티즌은 이번 해고로 영향을 받은 파이썬 팀이 내부 파이썬 런타임과 툴체인을 관리하고 OSS 파이썬을 다루는 직원들이라고 언급했다.
현재까지의 정보를 살펴보면 구글은 4월 24일에 제출된 WARN 공지를 통해 일부 해고 인원을 발표한 것으로 관측된다. 캘리포니아 근로자 조정 및 재교육 통지법(WARN)에 따르면 100명 이상의 직원을 둔 고용주는 정리해고 60일 전에 통지해야 한다. 구글은 해당 서류에서 서니베일의 세 곳에서 총 50명의 직원을 해고한다고 밝혔다.
[python] 생성된 엑셀을 Frequency 순으로, 동일 Frequency 이면 단어순으로 정렬
import pandas as pd
from collections import Counter
import re
def read_text_file(file_path):
"""텍스트 파일을 읽고 내용을 반환"""
with open(file_path, 'r', encoding='utf-8') as file:
return file.read()
def count_word_frequencies(text):
"""주어진 텍스트에서 단어 빈도수 계산"""
words = re.findall(r'\b\w+\b', text.lower())
return Counter(words)
def save_frequencies_to_excel(frequencies, output_file):
"""단어 빈도수를 엑셀 파일로 저장"""
# 판다스 DataFrame으로 변환
df = pd.DataFrame(list(frequencies.items()), columns=['Word', 'Frequency'])
# 빈도수 내림차순, 단어 알파벳순 오름차순으로 정렬
df = df.sort_values(by=['Frequency', 'Word'], ascending=[False, True])
# 데이터를 엑셀 파일로 저장
df.to_excel(output_file, index=False)
# 파일 경로
file_path = 'example.txt'
output_excel = 'word_frequencies.xlsx'
# 파일 읽기
text = read_text_file(file_path)
# 빈도수 분석
frequencies = count_word_frequencies(text)
# 엑셀로 저장
save_frequencies_to_excel(frequencies, output_excel)
print("단어 빈도수가 정렬되어 엑셀 파일로 저장되었습니다.")
DataFrame 변환 및 정렬: pandas.DataFrame을 사용하여 빈도수 데이터를 DataFrame으로 변환한 후, sort_values 메소드를 사용하여 먼저 Frequency 열에 대해 내림차순으로, 동일한 빈도를 가진 항목에 대해서는 Word 열을 기준으로 오름차순 정렬합니다. ascending=[False, True] 파라미터는 각각 Frequency와 Word 열에 적용됩니다.