なろう分析記録

『小説家になろう』をふくめ『ネット小説投稿サイト』を分析する。コード置き場,主にPython,javascript,たまに創作。

【2020年版】とりあえず入れておくべきおすすめPythonパッケージ25選【Python】

Pythonはパッケージを使うことで高度なことが手軽に実現できる

f:id:karupoimou:20200120012453p:plain:w400
Python上達の近道はパッケージを知ること

Pythonは追加パッケージを導入することよって統計解析から画像処理まで様々なことが出来るようになります。

今回は数多く存在するPythonパッケージの中から、メジャーなものを25個ご紹介したいと思います。

パッケージのインストール・管理にはpipを使う

pipを使うことでPythonパッケージを簡単にインストール・管理することが出来ます。

pipコマンド

現在入っているパッケージの確認

pip list

現在入っているパッケージリストの書き出し

pip freeze > requirements.txt

コマンドを実行する前にcdコマンドを使ってあらかじめrequirements.txtを書き出す場所に移動しておきましょう。

f:id:karupoimou:20200120002338p:plain:w400
pip freeze

Pythonパッケージのインストール

pip install パッケージ名

pip自体のアップデート

pip install -U pip

pipの依存関係チェック

pip check

参考ページ

qiita.com

おすすめPythonパッケージ

便利ツール

pip-review

pip install pip-review

pip-reviewはpipで入れたPythonパッケージを一括アップデートできる便利ツールです。
最強に便利なので是非入れておきましょう。

karupoimou.hatenablog.com

tqdm

pip install tqdm

tqdmはプロセス実行の進行状況をプログレスバーで可視化してくれるツールです。
基本的にfor文にtqdmを挟むだけで簡単に使えます。

from tqdm import tqdm
import time

for i in tqdm(range(100)):
    time.sleep(1)

f:id:karupoimou:20200105165740p:plain
tqdm

joblib

pip install joblib

joblibはfor文の並列処理や変数の外部ファイル書き出し/読み込みなどに使えます。
並列処理の使い方はfor文に少し手を加えるだけなので非常に簡単です。

f:id:karupoimou:20200119235816p:plain:w400
joblib

karupoimou.hatenablog.com

karupoimou.hatenablog.com

jupyterlab

pip install jupyterlab

f:id:karupoimou:20200108163206p:plain:w400

jupyterlabはブラウザ上でPythonコードを実行するIDEです。
jupyter notebookの後継IDEであり、同一タブ内で複数のファイルを開いたりできるのでjupyter notebookよりおすすめです。

jupyterlabのエクステンションは現在開発途上の様ですが、Node.jsをインストールして、エクステンションマネジャーを有効にすれば使えるようになります。

JupyterLabのおすすめ拡張機能8選 - Qiita
windows10にNode.jsをインストールする - Qiita

分析系

pandas

pip install pandas

Python表計算と言えばpandasです。
リストをpandasのデータフレームに入れることで、データの可視化やSQL的な処理、集計処理などが簡単に出来ます。
またpandasを使うことでエクセルファイルやCSVファイルを簡単に読み込み/書き出し出来るようになります。

#エクセルファイルの読み込み
df = pd.read_excel("sample001.xlsx")

#CSVファイルの読み込み
df = pd.read_csv("sample001.xlsx")

#インデックス列を指定して読み込み
df = pd.read_excel("sample001.xlsx", index_col=0)

#読み込み時にデータ型を自動認識する
df = pd.read_excel("sample001.xlsx", parse_dates=True)


#データフレームの作成(シンプル)
df = pd.DataFrame(all_list)

#データフレームの作成(カラム[列名]、インデックス[行名]あり)
df = pd.DataFrame(all_list, columns=["aaa","bbb","ccc"], index=["N001","N002","N003","N004","N005"])

#データフレームの縦横を入れ替える
df  = df.T

#エクセルファイルに書き出し
df.to_excel('sample002.xlsx')

#CSVに書き出し
df.to_csv('sample002.xlsx')

#データフレーム全体ををリスト化
df_list = df.values.tolist()

#特定列をリスト化
job_list=df["job"].values.tolist()

#文字型の時刻列を列ごとdatetime型に変換
df['tw_date_jp'] = pd.to_datetime(df['tw_date_jp'])

#データフレームに列を挿入する
df2['number'] = ['one', 'one', 'two', 'three', 'four', 'three']

#データフレームから一部を条件抽出(数値比較)
df2 = df[ df['age'] < 25 ]

#データフレームから一部を条件抽出(特定文字を含むもの)
df2 = df[df['本文テキスト'].str.contains('最強')

#欠損値を埋める
df2 = df2.replace(np.nan,' ', regex=True)

#インデックスを振り直す
df3 = df3.reset_index(drop=True)

karupoimou.hatenablog.com
karupoimou.hatenablog.com
karupoimou.hatenablog.com
karupoimou.hatenablog.com
karupoimou.hatenablog.com
karupoimou.hatenablog.com

numpy

pip install numpy

計算処理系のパッケージです。
数字だけの処理であればpandasよりも速いです。

deepage.net

scipy

pip install scipy

統計処理はこれを使うと物凄く簡単にできます。
「~~検定」と呼ばれるような検定は大体入っています。
karupoimou.hatenablog.com

xlrd

pip install xlrd

エクセルファイルの読み込み/書き出しに使われるパッケージです。

XlsxWriter

pip install XlsxWriter

同じくエクセルファイルの読み込み/書き出しに使われるパッケージです。
pandasでデータフレームをエクセル出力する場合、XlsxWriterを通すことで複数シートや文字エンコーディングのエラーを修正したりすることができます。

import pandas as pd

filename="test.xlsx" #ファイル名
exportlist=[1,1,2,3,1,4,5] #リスト

df = pd.DataFrame(exportlist) #データフレームの作成

writer = pd.ExcelWriter(filename,options={'strings_to_urls': False}, engine='xlsxwriter')
df.to_excel(writer, sheet_name="Sheet1")#Writerを通して書き込み
writer.close() 

画像系

matplotlib

pip install matplotlib

グラフを描いたりするために最もよく使われるパッケージです。

スタイルも豊富なので簡単にそれらしいグラフが作れます。

karupoimou.hatenablog.com

japanize-matplotlib

pip install japanize-matplotlib

デフォルトでは日本語フォントに対応していないmatplotlibを簡単に日本語フォント対応してくれるパッケージです。
matplotlib日本語化にはいくつか方法がありますが、その中でもこれが最も簡単な方法と言えるでしょう。

yolo.love

karupoimou.hatenablog.com

Pillow

pip install Pillow

画像を扱うパッケージです。日本語フォント対応。
画像ジェネレーター用途に使う場合はopencvよりこちらの方がおすすめです。

opencv-python

pip install opencv-python

画像の作成や画像認識などに広く使われているopencvPythonで使うためのパッケージです。

folium

pip install folium

地理情報を可視化するライブラリです。
マーカーの設置やヒートマップなどが簡単に出来ます。
出力結果をhtmlとして書き出すことも可能です。

f:id:karupoimou:20200108034558p:plain
folium
qiita.com

plotly

pip install plotly

ぐりぐり動かせるグラフを作成できるパッケージです。
webとの相性がよいです。

www.mathgram.xyz

wordcloud

pip install wordcloud

ワードクラウドを使うとテキスト情報を簡単に画像化出来ます。

f:id:karupoimou:20200119235723p:plain:w400
ワードクラウド

karupoimou.hatenablog.com

スクレイピング

requests

pip install requests

HTTP 通信ライブラリです。webサイトやweb APIから何かデータを取りたい時に使います。
書き方も簡単。

たまに発生するエラーはtry節を使った例外処理を設定することで簡単に回避可能です。

note.nkmk.me

techacademy.jp

lxml

pip install lxml

beautifulsoupのパーサーとして使うことが多いです。
lxmlはC言語で書かれているのでデフォルトの「html.parser」より高速(?)らしいです。

# lxmlを使う場合
soup = BeautifulSoup(html, "lxml")

# html.parserを使う場合
soup = BeautifulSoup(html, "html.parser")
Selenium

pip install selenium

javascriptを使った動的なページのスクレイピングには仮想ブラウザを立ち上げて操作するSeleniumが有効です。

なおSeleniumをするためには別途WebDriverというブラウザ操作を橋渡しするツールを導入する必要があります。

qiita.com

web系

Flask

pip install Flask

シンプルなwebフレームワークです。
これを使うことで簡単にwebサイトを作ることが出来ます。
Flask自体の機能はかなりシンプルなので、こだわらなければ1つの.pyファイルで1つのサイトの機能を丸ごと記述できます。もちろんこだわれば大体の機能を後付出来ます。

同じく有名なpython webフレームワークである「Django」との違いについては

海賊はFlaskを使い、海軍はDjangoを使う

という説明が有名らしいです。
karupoimou.hatenablog.com

karupoimou.hatenablog.com

karupoimou.hatenablog.com

flask-bootstrap4

pip install Flask-Bootstrap4

pipだけでインストール出来るbootstrap4。
こんなに簡単に導入できるものなのかと言うほど簡単です。

mickey-happygolucky.hatenablog.com

Django

pip install Django

高機能なwebフレームワークです。
webサイトに必要な大体の機能が最初から入っています。
Flaskと比べて設定項目も多いため、導入にはやたらと時間が掛かりますがチュートリアルは豊富です。

PyMySQL

pip install PyMySQL

pythonMySQLを扱うパッケージの一つです。
MySQLを扱うパッケージは他にもいくつも存在しますが、機能的にどれも似たり寄ったりなのではないかと思います。
karupoimou.hatenablog.com

tweepy

pip install tweepy

ツイッターAPIを扱うパッケージです。
ツイートbotの作成からツイートデータ収集まで様々な用途に使えます。

karupoimou.hatenablog.com
karupoimou.hatenablog.com
karupoimou.hatenablog.com
karupoimou.hatenablog.com

PyInstaller

Pythonスプリクトを実行形式(.exe)に変換するパッケージです。

qiita.com

とりあえず全部入れる場合

pip-review
tqdm
joblib
jupyterlab
pandas
numpy
scipy
xlrd
XlsxWriter
matplotlib
japanize-matplotlib
Pillow
opencv-python
folium
plotly
wordcloud
requests
beautifulsoup4
lxml
selenium
Flask
Flask-Bootstrap4
Django
PyMySQL
tweepy
PyInstaller

その他 便利コマンドなど

処理時間を計測

標準モジュールで最初から入っている『timeit』を使うことで処理時間の平均を計測できます。

note.nkmk.me

音で処理完了を通知する

windowsの場合、最初から入っているwinsoundを使うと簡単です。

import winsound

winsound.Beep(500, 500)

# winsound.Beep(音程, 鳴らすミリ秒)

その他の通知方法に関するページ
quzee.hatenablog.com

例外処理
try:
    処理文
except:
    処理文

まず最初にtryに書いてある内容が実行され、エラーが出る場合はexceptの処理文が実行されます。
例外処理を書いておくことでエラー落ちを防ぐことができます。

定期実行

windowsの場合、タスクスケジューラを設定することで.pyを定期実行できます。

karupoimou.hatenablog.com

バッチファイル化

パスを通していなくても、batファイル化することで.pyファイルを実行できます。
(パスを通していればダブルクリックで実行可能です)

karupoimou.hatenablog.com

フォルダ・ファイルのサイズを取得する

karupoimou.hatenablog.com

関連ページ

karupoimou.hatenablog.com