技術は使ってなんぼ

自分が得たものを誰かの役に立てたい

私の好きなPythonライブラリを10選紹介します!


はてなブログ10周年特別お題「好きな◯◯10選

こんにちは。

はてなブログさんが10周年ということで私もお題に乗っかってみました。

Python使いとして早3年が過ぎたので、これまでの自分の開発経験を振り返りながら好きなライブラリを10選ご紹介しようと思います。

pandas

pandasは私の主力武器となっているライブラリです。

そして本業でも副業でもダントツで使用率が高いライブラリがこのpandasです。

私自身がもともとデータベース管理やデータ分析を得意としていることもあり、相性が最も良いと感じているライブラリです。

DataFrameというデータ分析がとても容易になるデータ構造が特徴です。

SQL等のデータベース管理と似たようなイメージで、欲しいデータを条件で抽出したり加工したりする際に便利です。

ディープラーニングでもデータセットを読み込む際は、このライブラリを使うことが多いです。

今後もますます需要が高まりますし、汎用性が高いライブラリなので、Python使いはぜひ習得したいライブラリだと思います。
pandas.pydata.org

numpy

pandasと並んで、Pythonで使用頻度が高いライブラリがnumpyです。

numpyは「行列」演算のツールで、ディープラーニングでは必須のライブラリです。

ディープラーニングのみならず、リスト等の配列構造より行列演算をすることで計算が楽になったり、スッキリしたソースコードが書けたりします。

先ほどあげたpandasとも相性が良いので、こちらもPython使いは習得したいライブラリですね。
numpy.org

matplotlib

Pythonにおけるデータ可視化ツールの代表的なライブラリといえばやはりmatplotlibですよね。

名前からも気づく人が多いかと思いますが、このライブラリはもともとMATLABの標準ライブラリから派生したものです。

MATLAB設計者がPythonを使ってデータの可視化を行えるように作ったものとされています。

ちなみに私はMATLABも大好きです。MATLABは有償ツールなので、会社でしか使えないのが難点ですが。(個人で買うと数十万円します。。)

データの可視化はAI・データサイエンティストには必須のスキルになりますし、エンジニアでなくてもデータ可視化のスキルがあると重宝されると思います。
https://matplotlib.org/stable/contents.htmlmatplotlib.org

skimage

skimageは画像データを処理・加工する際に便利なライブラリです。

同じく画像処理ライブラリとしてopencvも人気がありますが、個人的にはskimageの方が使いやすいと感じています。

なぜかというと、skimageの方がAI・データサイエンス寄りな機能が豊富だと感じるからです。

skimageの方が特徴量抽出において、結構複雑な特徴量抽出の機能を備えてたりします。

opencvだと自力で組まなければならないものを、skimageだと1行で実装できたりしたのを記憶しています。

実際に副業でソースコードを組む際にも利用したことがあり、思い入れのあるライブラリでもあります。
scikit-image.org

configparser

configparserはソースコードの外で設定値をメンテナンスする際に役立つライブラリです。

例えばソースコードを納品する際、ユーザーが変数の設定を途中で変えたい場合がありますよね。

そんな時、ユーザーがあまりプログラムに詳しくない場合ソースコードの中身を直接触るのは危険だと思います。

そのリスクを軽減するために、このconfigparserは重宝できるかと思います。

もちろんプログラマーが安全かつ楽に設定値を変えるのに使う上でも役に立つと思います。
docs.python.org

tqdm

プログラミングの基本として「繰り返し処理」、いわゆるfor文やwhile文があります。

この繰り返しが今どんな状況なのかを見える化してくれるのが、tqdmになります。

for文等のソースコードを実行すると、ターミナル上は真っ暗なままだと今どうなってるのか不安になりますよね。

またソースコードの処理時間がどのぐらいかかるのかを知りたいのに、いつ終わるのかも見えないと困りますよね。

そんな時にfor文で繰り返すiteratorに「tqdm」つけてあげるだけで、なんと繰り返し状況を可視化してくれるんです。

作ろうと思えば自作できますが、1行どころかたった数語で実現してくれるtqdmはありがたい存在です。
tqdm.github.io

requests

requestsは主にWEBスクレイピング等で使用されるHTTPライブラリで、ネット上の情報取得を助けてくれます。

私の場合、これでWEBの構造というものを知ることができたし、HTMLやCSS5等の仕組みを理解する手助けにもなりました。

自動化ツールなどを作成する際も、あるサイトのURLとか取得したい時にはrequestsをよく利用します。

ツール作成時の道具としても優秀ですし、これを使っていくうちに学べる領域が増えたライブラリのひとつですね。
requests-docs-ja.readthedocs.io

pyautogui

pyautoguiは名前の通り、GUI系の自動化を簡単に実装できるライブラリです。

私が以前副業の依頼で作成した自動化ツールでもこちらを使ったことがあります。

特にデスクトップアプリでの操作を得意としており、画面上でクリックやドラッグアンドドロップさせたりすることができます。

操作する位置は画面の座標で、タイミング等はタイマー等を用いて実装できるので、結構細かく設定できます。

RPA系のツールをPythonで作りたい時には重宝できるライブラリではないでしょうか。
pyautogui.readthedocs.io

librosa

liborsaは音やセンサー値等の信号データ処理で用いられるライブラリです。

こちらも副業ネタになるのですが、例えば音が最も大きな時間を取得したい時に使いました。

周波数解析等のライブラリも多くあるため、時系列データ解析にも応用できるかと思います。

またAIでいうと音声認識システム等でも応用されるため、こちらも汎用性が高いですね。

個人的に時系列データのAI・データサイエンスは究めたいと思っているので注目しているライブラリです。
librosa.org

moviepy

最後に紹介するのが、moviepyです。私のブログでも紹介しましたが、動画編集用ライブラリです。

宣伝がてら貼っておきます。
yonesuke0716.hatenablog.com

今副業でも流行りの「動画編集」ですが、ある程度簡単な編集作業は自動で出来ます。

例えばトリミングする、複数の映像を結合する、画像データとして出力、字幕をつける等ができます。

YouTube等はAdobe等の高機能な編集ツールが主流ですが、いずれ動画編集も自動化される時代も来るかもしれませんね。
zulko.github.io


というわけでPythonライブラリ10選を紹介しましたがいかがでしたか?

まだまだ他にも好きなPythonライブラリは数多く存在しますが、すべてのライブラリに共通することは、「やりたいことを実現することを助けてくれる」ことです。

自作でやるととても手間暇かかってしまうものを、素早く実現してくれるライブラリを作ってくれる開発者の皆様にはいつも感謝しております。

オープンソースって本当に素晴らしい!

私も貢献し続け、開発者同士がテイク&ギブ&テイクする世界に貢献したいと思います!

以上!