【Python入門】ダウンロード数トップ10のライブラリを解説



【Python入門】ダウンロード数トップ10のライブラリを解説

Pythonとライブラリ、これは切ってもキれない関係。
こちらではダウンロード数トップのメジャーなPythonライブラリをご紹介。
どんなものがあるか目を通しておくと参考になると思いますよ。

目次
  1. 【Python入門】ダウンロード数トップ10のライブラリを解説
  2. Pythonとライブラリ
  3. Pythonライブラリのダウンロードランキング
  4. 1. pip
  5. 2. six
  6. 3. botocore
  7. 4. python-dateutil
  8. 5. s3transfer
  9. 6. simplejson
  10. 7. setuptools
  11. 8. pyasn1
  12. 9. pyyaml
  13. 10. futures
  14. まとめ

【Python入門】ダウンロード数トップ10のライブラリを解説

Pythonとライブラリ

image

Pythonは、学習初期でも先人の作ったライブラリを利用することで、身の丈以上の機能を実装することが可能。 Pythonライブラリを管理する PyPi.org では、現在 100万以上のライブラリが公開され、現在も増加中です。 またそんなライブラリ、自分でも簡単に作れちゃいます。

そしていくつかの学習環境があるPythonにおいては、Jupyter Notebook をインストールすると 180以上のライブラリが一緒にインストール。 もはや「ライブラリ」ありきでプログラムするのではなく、「ソリューション」ありきでライブラリを用意し、開発する流れ。 そんなチョット特異なPythonのライブラリは、とにかくコードを書いて実際に使ってみることが理解の近道です。

ちなみに既にPython環境を構築されている方は、

pip freeze

とコマンド入力して、ライブラリの状況を確認してみましょう。 Python学習が約半年過ぎた私の場合、 250 ぐらいライブラリがインストールされていました。ちょっと知らないライブラリも多くて驚きです。

【pip freeze の実行結果】

image

Pythonライブラリのダウンロードランキング

今回ご紹介するライブラリは、ライブラリ管理サイトの PyPi.org の過去1年間ダウンロード数トップ10 をご紹介します。 すでに使っているライブラリもあると思いますが、改めて意味と用途を確認してみると使う幅も広がると思いますよ。 尚、PyPi.org のダウンロード数は、 「pypinfo」というライブラリを使用しました。

image

1. pip

image

画像引用:pip

Anacondaをインストールされている方は pip 、既にインストールされていますね。 こちらは「パッケージマネージャー」のライブラリで、新規ライブラリをインストールしたり削除したりする時に使用。 つまりPythonライブラリを使う上では欠かせないライブラリなんですね。 pip とコマンド入力すれば機能一覧を確認できますが、中でもよく使うのは以下の3つでしょう。

  • pip install ●● /●●をインストール
  • pip show ●● /ライブラリ●●の情報表示
  • pip freeze /pip管理のライブラリ一覧を表示

【上記コードの実行結果】

image

2. six

image

画像引用:six

six、これはPythonのバージョン 2 と 3 の互換性をサポートするためのライブラリ。 Pyhon2 と Python3 ではいくつかの処理システムが変更されていて、Python2 でできていたことが Python3 でできないなどあります。 そんな機能変更を six が補完してくれんですね。 six を使うと Python2 のコードを Python3 で動かせる、というものではないので予めご注意下さい。

six は、Anaconda内に含まれていて、やや上級者向けのライブラリです。 例を上げるとイメージしやすいと思いますので、今回はPython3で廃止された iteritems() を例にご紹介。

iteritems() (イテレータ)は、リストや辞書型などのデータ型の一つで「順番に並んだデータ」としての扱い。 Python3 では iteritems() 使用できませんが、 ライブラリ six を使うことで iteritems() が使えるようになりますね。

【Python3の場合】 【Python2の場合】
color= {'1':'go','2':'back'}
color.items()
type(color.items())
color.iteritems()


import six
six.iteritems(color)
color= {'1':'go','2':'back'}
color.items()
type(color.items())
color.iteritems()

【実行結果】

image

上記サンプルの通り本来Python3では扱えない iteritems() が、 six を利用することで実行できています。 iteritems() 以外の six の機能は、ドキュメントを参考にすると分かりやすいと思いますよ。

3. botocore

image

画像引用:botocore

botocoreは、ライブラリというよりはパッケージに属しますが、PyPi上で3番目に多いダウンロードのためご紹介。 botocoreは、WebサービスやIoTサービスなどのクラウド・プラットフォームを手掛ける AWS(Amazon Web Services) 上でPythonを利用する時に必要となるパッケージです。 botocoreを利用すると AWS に「Low-Level Client」で 接続でき、boto3を使うと「Low & Higher-Level Client」で接続可能に。 つまりAWSベースの開発で便利な boto3 には botocore が含まれているんですね。

サンプルのご紹介には、AWSの基礎知識なども必要となってくるため控えさせて頂きます。

4. python-dateutil

image

画像引用:dateutil

dateutilは、日付や時間などの日時を取得したい時や日時を使って誕生日や有効日数など日付計算したい時に使うライブラリの一つです。 例えば、誕生日から年齢を自動計算するプログラムを検討。

from dateutil.relativedelta import *

today = datetime.date.today()
year = int(input('西暦何年に生まれた?'))
month = int(input('何月生まれ?'))
day = int(input('何日?'))
born = datetime.date(year, month, day)

age = relativedelta(today, born)
print(age)

【実行結果】

image

入力する自分の誕生日を 変数 born に格納し、本日の日付 変数 today と比較。 比較は、 relativedelta() 関数で処理。 これによって生後何日もしくは何秒経過しているなどの時刻データを取得することが可能。

誕生日に限らず、前回のログインからどれぐらい経過しているか、ポイント失効までどれぐらいあるか、など時刻データを使って制御システムを構築することができますね。 django などのフレームワークでも dateutile は使われていますね。

5. s3transfer

image

画像引用:s3transfer

s3trasferは、Pythonパッケージの boto3 に含まれているライブラリです。 AWSの s3transfer機能をPythonで利用する時に必要で、やや上級者向け、実務的なライブラリといえるでしょう。 しかし、Pythonライブラリのダウンロードランキング5位にこうした専門的なライブラリが入ってるということは、「AWS」無視できないサービスかもしれないですね。

s3transfer公式ページ https://github.com/boto/s3transfer

6. simplejson

image

画像引用:simplejson

simplejsonは、Pythonに標準搭載されている jsonライブラリより高速でシンプルなライブラリになります。 プログラミング初心者にとってjsonファイルは取っつきにくいですが、近年政府取り扱いデータもjson形式で公開されたりしていますので、「json」少しぐらい知っておきたいですね。

まず最初に simplejson と json の機能面の違いについてご紹介します。 両方のライブラリにデータ構造をJSON文字列にエンコードする dumps() がありますが、この関数に付属する引数に違いがあります。

【simplejsonの場合】 【jsonの場合】
simplejson.dumps(
obj,
skipkeys=False,
ensure_ascii=True,
check_circular=True,
allow_nan=True,
cls=None,
indent=None,
separators=None,
encoding='utf-8',
default=None,
use_decimal=True,
namedtuple_as_object=True,
tuple_as_array=True,
bigint_as_string=False,
sort_keys=False,
item_sort_key=None,
for_json=None,
ignore_nan=False,
int_as_string_bitcount=None,
iterable_as_array=False,
**kw)
json.dumps(
obj,
*,
skipkeys=False,
ensure_ascii=True,
check_circular=True,
allow_nan=True,
cls=None,
indent=None,
separators=None,
default=None,
sort_keys=False,
**kw)

simplejsonの方が機能豊富ですね。尚、この機能面の違いは dumps() に限らず、 load() にも違いがあります。

次に処理スピードについて試してみました。すべての処理に本結果が当てはまるわけではないと思いますので、一例としてご参考下さい。 今回は、Web上のJSONファイルをインポートして処理するまでにかかる時間で比較。

【今回使用したJSONファイル:アメリカの郵便番号毎の人口統計】
https://catalog.data.gov/dataset/demographic-statistics-by-zip-code-acfc9

【simplejson】

import simplejson
import urllib.request
import time

t1 = time.time() 

hres = urllib.request.urlopen('https://data.cityofnewyork.us/api/views/kku6-nxdu/rows.json?accessType=DOWNLOAD')
data = simplejson.loads(hres.read())
data

t2 = time.time()
done_speed = t2-t1
print("処理時間:", done_speed)

【json】

import json
import urllib.request
import time

t1 = time.time() 

hres = urllib.request.urlopen('https://data.cityofnewyork.us/api/views/kku6-nxdu/rows.json?accessType=DOWNLOAD')
data = json.loads(hres.read())
data

t2 = time.time()
done_speed = t2-t1
print("処理時間:", done_speed)

【実行結果】

image

simplejson.loads() の方が json.loads() より 0.8秒ほど早いことが確認できますね。 今回は loads() で簡単なJSONデータですが、dumps() などの処理方法、Twitter API などのデータによって違いは出るようです。処理スピードについて気になる方は、こちら をご参考ください。

7. setuptools

image

画像引用:setuptools

setuptoolsは、本稿最初でご紹介させて頂いた pip と同じパッケージマネジャになります。 Anacondaをインストールすると setuptools も一緒にインストールされて、 easy_install というコマンドでライブラリをインストール可能。 ただ pip と setuptools、実は違いが結構ありますので以下にご紹介。 今までなんとなく easy_install を使っていた方、実は思っていたことと違うことがプログラム処理されていたかもしれませんよ。(私がそうです。。。)最初の内は、pip install をオススメします。

pip easy_install
開始時期 2008年 2004年
Wheelsからのインストール Yes No
パッケージのアンインストール Yes (pip uninstall) No
依存関係のサポート Yes (Requirements Files) No
インストール済みパッケージの表示 Yes (pip list and pip freeze No
PEP 438 のサポート Yes No
インストール・フォーマット ‘Flat’ packages with egg-info metadata. Encapsulated Egg format
パスの変更(sys.path) No Yes
Eggsからのインストール No Yes
pylauncher のサポート No Yes
マルチバージョン・インストール No Yes
インストール時のスクリプト停止 No Yes
プロジェクト・インデックス virtualenv のみ setup.cfg

8. pyasn1

image

画像引用:pyasn1

pyasn1は、pythonで ASN1 を使用する時に使うライブラリ。 ASN1は、Abstract Syntax Notation One の略で「抽象構文表記法1」と訳せます。 抽象構文表記法1、まったくイメージが湧かないと思いますが、ムリもありません。 これは私達の知らない、見えない領域の処理で使われる記法の一つで、 https の通信処理やデータの16進数化などチョット上級者レベルの領域で使用中。

pyasn1は、Anacondaに含まれていませんので自分でインストールする必要があります。

pip install pyasn1

9. pyyaml

image

画像引用:PyYAML

pyyaml は、YAMLというデータ型をPython上で扱う時に使用するライブラリ。 YAML自体 JSON や XML に比べるとややマイナーですが、可読性に優れ、シンプルな構造には定評がありますね。

サンプルの YAML ファイルを用意して、 pyyaml 使ってみたいと思います。

test.yaml

items:
  sword: 100
  axe: 80
  needle: 10

【Pythonコード】

import yaml

file = "test.yaml"
r = open(file, "r")
data = yaml.safe_load(r)
data

【実行結果】

image

10. futures

image

画像引用:futures

こちらのライブラリは、Linuxディストリビューションで有名なUbuntuに搭載されているため、PyPiで上位にランキング。 機能としては、Python3で標準搭載されている並列処理の concurrent.futures が Python2 で使えるように。 並列処理、そしてPython2という環境、Python初学者にとってこちらのライブラリは無視しても問題はなさそうです。

まとめ

今回ダウンロード数トップのPythonライブラリをご紹介させていただきましたが、どのライブラリもこちらでは紹介しきれない量の「機能」を持っていますね。コピペ・プログラマからワンランク上のプログラマになるためには、こうしたライブラリの機能を紹介している公式ドキュメントの読解が不可欠でしょう。そしてその時必ず基本文法の知識が必要となってきます。

「Python本、買ったものの全然理解できない」「Pythonコードってどうやって実行するんだ?」というPython初学者の方、プログラミングスクールを頼ってみてはいかがでしょうか?特に忙しい社会人、大学生の方には オンライン × マンツーマン で有名な CodeCamp が役立ってくれると思いますよ。今日でも無料体験レッスンできるかもしれませんので、よかったら一度覗いてみて下さい。

関連記事

オシママサラ
この記事を書いた人
オシママサラ
\ 無料体験開催中!/自分のペースで確実に習得!
オンライン・プログラミングレッスンNo.1のCodeCamp