LoginSignup
4
9

More than 1 year has passed since last update.

Python便利ライブラリ

Last updated at Posted at 2022-01-01

はじめに

Pythonって,ライブラリとかパッケージ,モジュールが多くて実装がとっても楽なんですけど,自分の知らないライブラリとか,こんなのあるの!?楽じゃんみたいなこと結構自分はあったので,自分用にメモみたいな感じで便利なものリストアップしていきます

Web

Herokuと組み合わせて使うことで簡単にサービス公開とかできます!

Django

Djangoは大規模開発に向いてるフレームワーク
自分のポートフォリオはDjangoで作りました.
まだまだ大規模なWeb作ったことないので個人的な範囲内の利用だとFlaskでいいかなってことが多かった.

Flask

Flaskは軽量フレームワーク,すぐに開発できる
稲が健康かどうかを深層学習で求めるシステム作った時に,FlaskでWeb上から使えるようにしたー.めっちゃ早く作れる.

科学計算

Numpy

機械学習とか画像分類をするときの画像処理とかで使う.
行列作って〜みたいな時にめっちゃ便利だし早い.

Scipy

プログラミング数学,科学,工学のための数値解析に便利
配列とか行列の演算に使う,時計とか高度な数学的計算が簡単にできる.

グラフ作成

ここは結構好みが分かれるところ.Kaggleやる人がよく使う!
8割くらいの人はmatplot使ってるかも?
個人的にはseabornが好きです.

matplotlib

import matplotlib.pyplot as plt

でよく使われるやつ!

seaborn

import seaborn as sns

でよく使う.

機械学習・深層学習

最近の流行りのコレ.
Pythonだとライブラリがいっぱいあってすぐに実装できる.

scikit-learn

機械学習モデルで,色々な機械学習の手法が使える.
訓練データ,テストデータの分割もコレでやる!
あとは,データを標準化する時も使う.

statsmodels

統計解析ソフトで,最小二乗法とか加重最小二乗法とかやる時に使う.
###PyTorch
ディープラーニングを実装するためのライブラリ.
FacebookのAIグループによって開発された.
自然言語処理で使われる.
define by run方式っていうのをとっていて,直感的にRNNを書くことができて,デバックが容易だったりする.

TensorFlow

Googleが開発したやつ
ディープラーニングを実装するためのライブラリ
大規模データセットとか,パフォーマンスが高い方がいいとか,物体検出によく使うイメージ.

Keras

最近はTensorFlowの中に組み込まれたやつ.
コードがめっちゃシンプルでモデル作成に時間がかからない!

ファイル,フォルダ操作

os

OSに依存している様々な機能が利用できる.ディレクトリ,ファイル操作ができたり,ファイルの一覧を取得したりできる.ファイル作成も可能.
osでファイル一覧を取得して,for文で1つずつ読み込んだりできたのが便利だと感じた.それにファイル名が複雑な時とか,打ち間違いとか無くなってとても良い

Pathlib

ファイルやフォルダ操作が可能

OpenPyXL

Excel操作ができる

requests

htmlデータ取得とかできる.

Selenium

動的ページのスクレイピングに向いてる

Beautiful soup

スクレイピングがしたい時に結構使う

Pandas

Excel,CSVデータ加工する時によく使う.Kaggleとかやる人は必修

subprocess

Pythonのプログラムから他のアプリを実行したり,実行結果を取得するためのモジュール.
コマンドを実行したり,外部ファイルを実行したりできる

GUI,デスクトップアプリ

Pythonでデスクトップアプリを作りたいときはここら辺が便利.

Tkinter

シンプルな文法で作れて,起動も早い
Pythonの中で一番人気が高いGUIライブラリだと思う

PySimpleGUI

2018年から開発が始まったらしい!
こっちもGUIを作るのに便利なライブラリ

ネットワーク系

scapy

CTFでよく使われる.幅広いプロトコルに対応したパケット操作プログラム.
パケット解析とかもできる

socket

低水準ネットワークインターフェース.
ソケット通信を実装するときとかに使う.
サーバークライアント間の通信とか
TCP,UDP通信系

telnetlib

Telnetプロトコルを実装しているtelnetクラスが提供される.
サーバやネットワーク機器の情報をexpectコマンドを使って取得可能

Netmiko

ssh接続とかする時に使う
まだ使ったことがないので,使ってみたら追記
ファイル転送も可能
リモート機器に接続して,操作の補助をする
ログイン,ログアウト,モード移行,ページング設定コマンド
Cisco,Juniper,Palo Alto,Dell,Linuxに対応

NAPALM

Arista,Cisco,Fortinet Fortios,IBM,Juniper,Mikrotic RouterOS等に対応している.
ネットワーク機器に対して何かをすると言った感じ
ARPテーブルの取得や,MACアドレステーブル,ルーティング情報,環境情報の取得,装置情報の取得等ができる

struct

バイトオーダーの変換が可能
ネットワークバイトオーダーからホストバイオーダーに変える必要性(ソケット通信等)をする時に重宝

非同期処理

asyncio

シングルスレッド下で動作し,試行した複数の処理は順次に処理され,IO待ち時間にぶつかると実行可能な別の処理を実行すると言う感じに,無駄なIO待ち時間を有効活用すべく,別の処理を割り当てるらしい.

ここを参考.
詳しく知りたい人はクリックしてみてください!

forで使えるもの

tqdm

https://qiita.com/pontyo4/items/76145cb10e030ad8186a
進捗管理をしたい時に便利.繰り返しが何%終了したかを確認できる

# coding: utf-8
from tqdm import tqdm
import time

for i in tqdm(range(100)):
    time.sleep(1)
#100%|██████████| 100/100 [01:40<00:00,  1.00s/it]

zip

繰り返す要素が複数個ある時に便利.
https://note.nkmk.me/python-zip-usage-for/


names = ['Alice', 'Bob', 'Charlie']
ages = [24, 50, 18]

for name, age in zip(names, ages):
    print(name, age)

# Alice 24
# Bob 50
# Charlie 18

enumerate

要素とインデックス番号を取得できる.

for i, name in enumerate(l):
    print(i, name)
# 0 Alice
# 1 Bob
# 2 Charlie

最後に

便利なものはこれだけにとどまらないです.これから自分もコードを書いていく中でまた,便利なものを見つけたりしたらまたどんどん追記していく予定です.なにかおすすめなものあったりしたらコメントください!

4
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
9