38.ライブラリの利用



プログラム言語には、他の人が作ったプログラムを利用したり、
自分が作ったプログラムを利用できるようにする便利な機能が備わっています。

それがライブラリです。

pythonでは仕事や研究などですぐに使えるライブラリが
数多く備わっており、機械学習や統計分析なども
ライブラリを用いて簡単に行うことができるようになっています。

ライブラリを使うのはすごくシンプルです。

ライブラリの読み込み方

import ライブラリ名

from パッケージ名 import ライブラリ名

それではライブラリを使っていきましょう。

ランダム値を作り出すrandomライブラリを読み込みします。

In [1]:
import random

ランダムの整数を生成する関数randint()の呼び出し。

random.randint(最小値 , 最大値)

In [2]:
random.randint(1,10)
Out[2]:
10
In [3]:
# ランダムのメソッドを10回呼び出す
for i in range(10):
    print(random.randint(1,10))
9
5
3
8
2
9
2
1
4
7

ライブラリは特定の処理を関数化しているものが多いです。

なおライブラリのことを別の呼び方で「モジュール」とも言います。

モジュールを読み込む、とかの表現が有ったら、
他のプログラムを読み込んでいると思って大丈夫です。

pythonの主なライブラリ

os ライブラリ

PCのファイルやディレクトリなどの操作ができる

In [4]:
import os
# 自分のPCのディレクトリのファイルやフォルダをリスト化する
print(os.listdir('/'))
['.DocumentRevisions-V100', '.file', '.fseventsd', '.PKInstallSandboxManager', '.Spotlight-V100', '.Trashes', '.vol', 'anaconda', 'Applications', 'bin', 'cores', 'dev', 'etc', 'home', 'installer.failurerequests', 'Library', 'Live2D_Cache', 'net', 'Network', 'opt', 'private', 'sbin', 'System', 'tmp', 'Users', 'usr', 'var', 'Volumes']

listdir 引数にディレクトリを指定するとそのディレクトリ内の
ファイルやフォルダがリスト値で返されます。

自分のPCのファイルやディレクトリを探したり、
ファイルの一覧を使って、特定のファイルを読み込みしたり、
操作するようなプログラムを書くのに役立ちます。

time ライブラリ

プログラム内での時間に関わる操作を行うライブラリ

In [5]:
import time
# 2秒間プログラムを止める
time.sleep(2)
print(2)
time.sleep(1)
print(1)
2
1

自作のライブラリの使い方

pythonファイルを作成すれば、自作のライブラリの読み込みができます。

importできるライブラリの拡張子は .py になります。

まずは簡単なpythonの実行ファイルを作りましょう。

このノートブックが置いてある
フォルダの中にpythonファイルを作っていきます。

sample.py

def hello(aa):
    print(aa)

pythonファイルを作成したら
ライブラリとして読み込み、メソッドなどが使えるようになります。

In [6]:
# 自作ライブラリの読み込み
import sample

# メソッドの呼び出し
sample.hello('hello')
hello

ライブラリは無数にあり、
anacondaでインストールした際には400種類くらいの
ライブラリが使えるようになっています。

そのライブラリの名称とかぶるとややこしいため
インストール済みのライブラリをみてみます。

macの場合はノートブック上で

! pip list

これでコマンドが実行できて、表示できます。

windowsの場合はコマンドプロンプトなどで
! をとって実行してみてください。

In [7]:
! pip list
DEPRECATION: The default format will switch to columns in the future. You can use --format=(legacy|columns) (or define a format=(legacy|columns) in your pip.conf under the [list] section) to disable this warning.
adal (0.4.5)
alabaster (0.7.10)
alembic (0.9.6)
anaconda-client (1.6.3)
anaconda-navigator (1.6.2)
anaconda-project (0.6.0)
appnope (0.1.0)
appscript (1.0.1)
argcomplete (1.0.0)
asn1crypto (0.22.0)
astroid (1.4.9)
astropy (1.3.2)
azure (2.0.0rc6)
azure-batch (1.0.0)
azure-common (1.1.6)
azure-datalake-store (0.0.12)
azure-graphrbac (0.30.0)
azure-keyvault (0.3.5)
azure-mgmt (0.30.0rc6)
azure-mgmt-authorization (0.30.0)
azure-mgmt-batch (1.0.0)
azure-mgmt-cdn (0.30.3)
azure-mgmt-cognitiveservices (1.0.0)
azure-mgmt-compute (0.30.0rc6)
azure-mgmt-containerregistry (0.2.1)
azure-mgmt-datalake-analytics (0.1.6)
azure-mgmt-datalake-nspkg (2.0.0)
azure-mgmt-datalake-store (0.1.6)
azure-mgmt-devtestlabs (2.0.0)
azure-mgmt-dns (1.0.1)
azure-mgmt-documentdb (0.1.3)
azure-mgmt-iothub (0.2.2)
azure-mgmt-keyvault (0.30.0rc6)
azure-mgmt-logic (1.0.0)
azure-mgmt-monitor (0.2.1)
azure-mgmt-network (0.30.0rc6)
azure-mgmt-nspkg (2.0.0)
azure-mgmt-rdbms (0.1.0)
azure-mgmt-redis (1.0.0)
azure-mgmt-resource (0.30.0rc6)
azure-mgmt-scheduler (1.0.0)
azure-mgmt-sql (0.5.3)
azure-mgmt-storage (0.30.0rc6)
azure-mgmt-trafficmanager (0.30.0)
azure-mgmt-web (0.32.0)
azure-nspkg (2.0.0)
azure-servicebus (0.20.3)
azure-servicefabric (5.6.130)
azure-servicemanagement-legacy (0.20.4)
azure-storage (0.20.3)
Babel (2.4.0)
backports.shutil-get-terminal-size (1.0.0)
bcolz (0.12.1)
beautifulsoup4 (4.6.0)
bitarray (0.8.1)
blaze (0.10.1)
bleach (1.5.0)
bokeh (0.12.5)
boto (2.46.1)
Bottleneck (1.2.1)
bs4 (0.0.1)
certifi (2017.4.17)
cffi (1.10.0)
chardet (3.0.4)
charts (0.4.6)
chest (0.2.3)
click (6.7)
cloudpickle (0.2.2)
clyent (1.2.2)
colorama (0.3.9)
conda (4.5.11)
conda-build (3.0.19)
conda-verify (2.0.0)
configobj (5.0.6)
contextlib2 (0.5.5)
coverage (4.4.2)
cryptography (1.9)
cssselect (1.0.1)
cycler (0.10.0)
cyordereddict (1.0.0)
Cython (0.27.2)
cytoolz (0.8.2)
dask (0.14.3)
datashape (0.5.4)
decorator (4.0.11)
dill (0.2.6)
distributed (1.16.3)
Django (1.10.6)
django-bootstrap3 (8.2.2)
django-crispy-forms (1.6.1)
django-debug-toolbar (1.8)
django-pure-pagination (0.3.0)
django-registration-redux (1.5)
django-storages (1.6.3)
django-torina-blog (0.5)
docutils (0.13.1)
dynd (0.7.3.dev1)
empyrical (0.3.2)
entrypoints (0.2.2)
et-xmlfile (1.0.1)
fastcache (1.0.2)
fbprophet (0.2.1)
filelock (2.0.7)
Flask (0.12.2)
Flask-Cors (3.0.2)
future (0.16.0)
gevent (1.2.1)
glob2 (0.5)
greenlet (0.4.12)
h5py (2.7.0)
HeapDict (1.0.0)
html5lib (0.999999999)
idna (2.5)
imagesize (0.7.1)
intervaltree (2.1.0)
ipykernel (4.6.1)
ipython (5.3.0)
ipython-genutils (0.2.0)
ipywidgets (6.0.0)
isodate (0.5.4)
isort (4.2.5)
itsdangerous (0.24)
Janome (0.3.5)
jdcal (1.3)
jedi (0.10.2)
Jinja2 (2.9.6)
jsonschema (2.6.0)
jupyter (1.0.0)
jupyter-client (5.0.1)
jupyter-console (5.1.0)
jupyter-core (4.3.0)
keyring (10.4.0)
lazy-object-proxy (1.2.2)
line-bot-sdk (1.0.2)
llvmlite (0.18.0)
locket (0.2.0)
Logbook (1.1.0)
lru-dict (1.1.6)
lxml (3.7.3)
Mako (1.0.7)
MarkupSafe (0.23)
matplotlib (2.0.2)
mistune (0.7.4)
mpmath (0.19)
msgpack-python (0.4.8)
msrest (0.4.11)
msrestazure (0.4.11)
multipledispatch (0.4.9)
navigator-updater (0.1.0)
nb-anacondacloud (1.4.0)
nb-conda (2.2.0)
nb-conda-kernels (2.1.0)
nbconvert (5.1.1)
nbformat (4.4.0)
nbpresent (3.0.2)
networkx (1.11)
nltk (3.2.4)
nose (1.3.7)
notebook (5.0.0)
numba (0.33.0)
numexpr (2.6.4)
numpy (1.12.1)
numpydoc (0.6.0)
oauthlib (2.0.2)
odo (0.5.0)
olefile (0.44)
opencv-python (3.4.5.20)
openpyxl (2.4.7)
packaging (16.8)
pandas (0.20.1)
pandas-datareader (0.5.0)
pandas-highcharts (0.5.2)
pandocfilters (1.4.1)
partd (0.3.8)
pathlib2 (2.2.1)
patsy (0.4.1)
pep8 (1.7.0)
pexpect (4.2.1)
pickleshare (0.7.4)
Pillow (4.1.1)
pip (9.0.1)
pkginfo (1.4.1)
plotly (2.3.0)
ply (3.10)
prompt-toolkit (1.0.14)
psutil (5.2.2)
psycopg2 (2.7.1)
ptyprocess (0.5.1)
py (1.4.33)
py-d3 (0.2.7)
PyAlgoTrade (0.18)
pyasn1 (0.2.3)
pycosat (0.6.3)
pycparser (2.18)
pycrypto (2.6.1)
pycurl (7.43.0)
pyflakes (1.5.0)
Pygments (2.2.0)
PyJWT (1.5.2)
pylint (1.6.4)
pyodbc (4.0.16)
pyOpenSSL (17.0.0)
pyparsing (2.1.4)
pystan (2.17.0.0)
pytest (3.0.7)
python-dateutil (2.6.0)
python-editor (1.0.3)
python-highcharts (0.4.1)
pytz (2017.2)
PyWavelets (0.5.2)
PyYAML (3.12)
pyzmq (16.0.2)
QtAwesome (0.4.4)
qtconsole (4.3.0)
QtPy (1.2.1)
redis (2.10.5)
requests (2.18.1)
requests-file (1.4.2)
requests-ftp (0.3.1)
requests-oauthlib (0.8.0)
rope-py3k (0.9.4.post1)
scikit-image (0.13.0)
scikit-learn (0.18.1)
scipy (0.19.0)
seaborn (0.7.1)
selenium (3.0.2)
setuptools (27.2.0)
simplegeneric (0.8.1)
singledispatch (3.4.0.3)
six (1.10.0)
snowballstemmer (1.2.1)
sockjs-tornado (1.0.3)
sortedcollections (0.5.3)
sortedcontainers (1.5.7)
Sphinx (1.5.6)
sphinx-rtd-theme (0.2.4)
spyder (3.1.4)
SQLAlchemy (1.1.9)
sqlparse (0.2.3)
statsmodels (0.8.0)
sympy (1.0)
tables (3.4.2)
tblib (1.3.2)
terminado (0.6)
testpath (0.3)
toolz (0.8.2)
tornado (4.5.1)
traitlets (4.3.2)
unicodecsv (0.14.1)
urllib3 (1.21.1)
wcwidth (0.1.7)
webencodings (0.5)
Werkzeug (0.12.2)
wheel (0.29.0)
widgetsnbextension (2.0.0)
wrapt (1.10.10)
xlrd (1.0.0)
XlsxWriter (0.9.6)
xlwings (0.10.4)
xlwt (1.2.0)
zict (0.1.2)
zipline (1.1.1)
You are using pip version 9.0.1, however version 18.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.

ライブラリの名称は、この名称と一緒でなければ大丈夫なので、
検索で引っかかったら、その名前は変えましょう。

自分の名前や、会社の名前とか、ニックネームとかを用いれば
ここら辺はカバーされるかと思います。

ライブラリの利用はプログラムでは当たり前のこととなっており、
自分でプログラムを書かずに、すでに使えるプログラムは
ライブラリから呼び出した方が賢明です。

どんなライブラリが使えるのか、
全てを紹介することはできませんので、基本編はここまで。

応用編ではよく使われるライブラリの使い方を
個別にやっていきたいと思っています