はじめに
この記事を読んでいる方は、データサイエンスの世界でデータサイエンティストやデータアナリストを目指す方が多いかと思います。私自身ももともとは実験家でPythonなど触れたことのない人物でした。そこから、約1年半、Pythonを各ライブラリを用いて数値計算、統計解析、自然言語処理、Webスクレイピング、機械学習を行ってきました。
その結果、本業でのビックデータの解析、副業でのアプリ開発などに役立つことができ、ポータブルスキルとして私自身の武器となりました。現在では転職してプログラマーやエンジニアとして仕事をして、データ分析だけでなく、画像処理やシステム回じゃつに活かすことができています。
そこで、このブログでは私が学んだPythonライブラリを用いた初心者向けのプログラミングの内容を紹介していきます。こちらはデータ処理、データ可視化・・・機械学習などをシリーズ化して更新していきます。
まず、初回は数値計算、統計解析、自然言語処理、Webスクレイピング、機械学習のライブラリを紹介していきます。
オススメ参考書
科学数値計算、自然言語処理、機械学習で使用するモジュール
データ処理
numpy
プログラミング言語Pythonにおいて数値計算を効率的に行うためのモジュールです。効率的な数値計算を行うための型付きの多次元配列のサポートをPythonに加えるとともに、それらを操作するための大規模な高水準の数学関数ライブラリを提供しています。
例えば、3行3列の行列の加減乗除などが計算できます。
インストールには、以下のコマンドを実行します。
pip install numpy
公式ページ:NumPy
解説ページ:
【第2回】 Numpyにおける配列の作成、変形、再代入 - Pythonによるデータ分析・機械学習ブログ
【第3回】 Numpyにおける数列の作成と加工 - Pythonによるデータ分析・機械学習ブログ
【第4回】Numpyにおける配列の演算、加減乗除、条件による判定 - Pythonによるデータ分析・機械学習ブログ
【第5回】Numpyにおける配列の統計値、小数点の処理、欠損値の確認 - Pythonによるデータ分析・機械学習ブログ
pandas
プログラミング言語Pythonにおいて、データ解析を支援する機能を提供するライブラリです。特に、数表および時系列データを操作するためのデータ構造と演算を提供しています。DataFrameなどの独自の構造が用いられています。機械学習において前処理を効率よく行うことができるライブラリとなっています。
機能として、例えば以下のものがあります。
- 1次元、2次元のデータ構造
- データの抽出
- 欠損値処理
インストールには、以下のコマンドを実行します。
pip install pandas
公式ページ:pandas - Python Data Analysis Library
解説ページ:
【第6回】Pandasにおけるデータの生成・格納、抽出、読み込み - Pythonによるデータ分析・機械学習ブログ
【第7回】Pandasにおけるデータ抽出、並び替え、挿入、時系列データの生成 - Pythonによるデータ分析・機械学習ブログ
【第8回】Pandasによる欠損値処理、データの連結、統計値の算出、データ型の変換 - Pythonによるデータ分析・機械学習ブログ
データ可視化
matplotlib
様々な種類のグラフを描画するライブラリ。描画できるのは主に2次元のプロットだが、3次元プロットの機能も追加されてきています。
例えば以下の様なグラフを作成することができます。
- ヒストグラム
- 散布図
- 折れ線グラフ
描画するグラフの例として、折れ線グラフを以下に示します。
インストールには、以下のコマンドを実行します。
pip install matplotlib
公式ページ:Matplotlib — Visualization with Python
解説ページ:
【第10回】matplotlibを用いた折れ線グラフの作成 - Pythonによるデータ分析・機械学習ブログ
【第11回】 matplotlibを用いた散布図の作成 - Pythonによるデータ分析・機械学習ブログ
【第12回】matplotlibで用いる線のマーカーの形・色、線の種類について - Pythonによるデータ分析・機械学習ブログ
【第13回】matplotlibを用いた棒グラフの作成 - Pythonによるデータ分析・機械学習ブログ
【第14回】matplotlibを用いた円グラフの作成 - Pythonによるデータ分析・機械学習ブログ
【第15回】matplotlibを用いたヒストグラムの作成 - Pythonによるデータ分析・機械学習ブログ
seaborn
matplotlibに基づくPythonデータ視覚化ライブラリです。 魅力的で有益な統計グラフィックスを描画するための高レベルのインターフェイスを提供します。
matplotlibと比較して、より手軽に美しく可視化ができるライブラリとなっています。
インストールには、以下のコマンドを実行します。
pip install seaborn
公式ページ:seaborn: statistical data visualization — seaborn 0.11.2 documentation
解説ページ:
【第16回】Seabornを用いたグラフの作成 - Pythonによるデータ分析・機械学習ブログ
【第17回】Seabornで用意されているデータセット - Pythonによるデータ分析・機械学習ブログ
【第18回】Seabornのカラーマップで指定できるカラーパレット - Pythonによるデータ分析・機械学習ブログ
画像処理
opencv
OpenCVとはインテルが開発・公開したオープンソースのコンピュータビジョン向けライブラリで、画像処理・画像解析および機械学習等の機能を持つC/C++、Java、Python、MATLAB用ライブラリとなっています。
OpenCV(オープンシーヴィ、英: Open Source Computer Vision Library)とはインテルが開発・公開したオープンソースのコンピュータビジョン向けライブラリです。2009年にWillow Garage(ウィロー・ガレージ)に開発が移管され、さらにその後Itseezにメンテナンスが移管されましたが、2016年5月にインテルがItseezを買収することが発表されています。
例えば、以下のような機能があります。
- グレースケール化
- 2値化
- 輪郭の検出
- 顔検出
- ノイズ除去
- テンプレートマッチング
インストールには、以下のコマンドを実行します。
pip install opencv-python
公式ページ:Home - OpenCV
解説ページ:
【第1回】Opencvを用いた画像の表示、回転、リサイズ、トリミング処理 - Pythonによるデータ分析・機械学習ブログ
【第2回】Opencvを用いた画像のグレースケール化、輝度平滑化、閾値処理、各色成分の取出、HSV色空間変換 - Pythonによるデータ分析・機械学習ブログ
【第3回】OpenCVを用いた画像の平滑化処理 - Pythonによるデータ分析・機械学習ブログ
【第4回】OpenCVを用いた画像のエッジ検出 - Pythonによるデータ分析・機械学習ブログ
【第5回】OpenCVを用いた画像のモルフォロジー処理:ノイズ除去・エッジ抽出 - Pythonによるデータ分析・機械学習ブログ
【第6回】OpenCVを用いた画像のモザイク処理 - Pythonによるデータ分析・機械学習ブログ
pillow
公式より引用します。
Python Imaging Libraryは、Pythonインタープリターに画像処理機能を追加します。 このライブラリは、広範なファイル形式のサポート、効率的な内部表現、およびかなり強力な画像処理機能を提供します。 コアイメージライブラリは、いくつかの基本的なピクセル形式で保存されたデータに高速にアクセスできるように設計されています。 これは、一般的な画像処理ツールの強固な基盤を提供する必要があります。
例えば、以下のような機能があります。
- 画像のトリミング
- 画像の回転
- 画像の合成
- 画像の連結
インストールには、以下のコマンドを実行します。
pip install Pillow
公式ページ:Pillow — Pillow (PIL Fork) 9.1.1 documentation
数値解析
scipy
SciPyは、プログラミング数学、科学、工学のための数値解析ソフトウェアです。
例えば以下のようなサブモジュールが用意されています。
- 補間( scipy.interpolate)
- 数値積分:(scipy.integrate)
- 信号解析(scipy.signal)
- 画像処理(scipy.ndimage)
- 数理最適化(scipy.optimize)
インストールには、以下のコマンドを実行します。
pip install scipy
公式ページ:SciPy
解説ページ:
【第1回】scipyを用いた対応のない2群の平均値の差の検定 - Pythonによるデータ分析・機械学習ブログ
【第2回】scipyを用いた対応のない3群以上の平均値の差の検定 - Pythonによるデータ分析・機械学習ブログ
【第3回】scipyを用いた1標本のt検定 - Pythonによるデータ分析・機械学習ブログ
【第4回】Scipy、Numpy、Pandasを用いた相関係数の算出 - Pythonによるデータ分析・機械学習ブログ
statistics
statisticsは、数理統計関数が用意されているライブラリです。こちらのライブラリを使うことで、平均値、中央値、最頻値、標準偏差、分散などを算出することができます。
インストールには、以下のコマンドを実行します。
pip install statistics
参考ページ:statistics --- 数理統計関数 — Python 3.10.4 ドキュメント
自然言語処理
Mecab
MeCabは形態素解析に用いられるライブラリです。人間が日常的に使っている自然言語をコンピュータに処理させる一連の技術である自然言語処理の内、名詞、動詞、形容詞、副詞、助詞などさまざまな単語に分割したり、品詞を特定したりする形態素解析という手法があり、Mecabはこの形態素解析に用いられます。
インストールには、以下のコマンドを実行します。
pip install mecab
公式ページ:mecab · PyPI
Mecabは以下のインストール方法を用いたほうがうまく行きますので、ご覧ください。
解説ページ:
【第1回】Pythonを用いた形態素解析に必要なMecabのインストールと設定方法 - Pythonによるデータ分析・機械学習ブログ
【第2回】Mecabを用いた形態素解析 - Pythonによるデータ分析・機械学習ブログ
Webスクレイピング
Selenium
Selenium は Web ブラウザの操作を自動化するためのフレームワークです。WEBアプリケーションのテストやWEBスクレイピングに利用されるライブラリとなっています。
インストールには、以下のコマンドを実行します。
pip install selenium
公式ページ:Selenium
解説ページ:
webdriver_managerを用いてPythonで簡単にWebスクレイピング - Pythonによるデータ分析・機械学習ブログ
【第2回】seleniumを用いたHTMLデータから要素の取得 - Pythonによるデータ分析・機械学習ブログ
【第3回】seleniumを用いた検索ワードに対するWebページのタイトルとURLの取得 - Pythonによるデータ分析・機械学習ブログ
beatifulsoup
HTMLやXMLファイルからデータを取得し、解析するPythonのWEBスクレイピング用のライブラリです。インターネット上に公開されているWEBサイトでは広くHTMLやXMLが使われており、これらの情報の取得や解析に、大変便利なライブラリです。
インストールには、以下のコマンドを実行します。
pip install beautifulsoup4
公式ページ:Beautiful Soup Documentation — Beautiful Soup 4.9.0 documentation
解説ページ:
【第1回】requestsとBeautifulSoupを用いたHTML情報の取得 - Pythonによるデータ分析・機械学習ブログ
機械学習
scikit-learn
Pythonのオープンソース機械学習ライブラリである。サポートベクターマシン、ランダムフォレスト、k近傍法、などを含む様々な分類、回帰、クラスタリングアルゴリズムを備えており、Pythonの数値計算ライブラリのNumPyとSciPyとやり取りするよう設計されています。
インストールには、以下のコマンドを実行します。
pip install scikit-learn
公式ページ:scikit-learn: machine learning in Python — scikit-learn 1.1.1 documentation
参考ページ:
【第1回】scikit-learnで用意されているデータセット - Pythonによるデータ分析・機械学習ブログ
【第2回】scikit-learnを用いた線形回帰、ランダムフォレスト、サポートベクタマシンによる回帰 - Pythonによるデータ分析・機械学習ブログ
【第3回】scikit-learnを用いた決定木、ランダムフォレスト、サポートベクタマシン、k近傍法による分類 - Pythonによるデータ分析・機械学習ブログ
【第4回】ハイパーパラメータのチューニング:グリッドサーチ、ランダムサーチ、ベイズ最適化 - Pythonによるデータ分析・機械学習ブログ
【第5回】Optunaを用いたハイパーパラメータのチューニング - Pythonによるデータ分析・機械学習ブログ
【第6回】ホールドアウト検証と交差検証による汎化能力の評価 - Pythonによるデータ分析・機械学習ブログ
【第7回】クラスタリング:k-means、階層的クラスタリング - Pythonによるデータ分析・機械学習ブログ
おわりに
本記事では、数値計算、統計解析、自然言語処理、Webスクレイピング、機械学習のライブラリを紹介しました。数値計算、統計解析、自然言語処理、Webスクレイピング、機械学習では必須となるライブラリですので、ぜひ覚えてある程度使えるようになりましょう!次回から、細かく各ライブラリを解説していきます。