- 1. 2020年5月におけるPython開発環境の選択肢
- 2. Cisco覚書_Pythonでconfig投入
- 3. カーネル密度推定のやり方
- 4. 【EC2】seleniumが実行できないエラーの対処法(No module named selenium)
- 5. 【EC2】エラー:Non-ASCII character ‘\xe8’の対処法
- 6. 【EC2】chromeをインストールする方法と各コマンドの内容
- 7. DataLoaderからファイル名を見たい
- 8. 【EC2】chromedriverをコマンドラインでインストール&ダウンロードする方法
- 9. Django -開発環境構築-
- 10. OpenCVをつかった特徴点マッチングについて少しだけ掘り下げる
- 11. Python tutorial
- 12. WSL(windows subsystem for linux)上でPython使おうとしたらJupyterで詰んだ(解決済み)
- 13. Python3 を子供に教えるためにオセロを作ってみた(4)
- 14. 【大田区】特別定額給付金の申請処理の状況を確認する
- 15. Poetry入門 インストールから実行、バージョン管理まで
- 16. 韻を扱いたいpart5
- 17. ゼロから始めるLeetCode Day36「155. Min Stack」
- 18. バブルソートでソートされる様子を可視化する
- 19. 【1日1写経】Predict employee attrition【Daily_Coding_001】
- 20. python xlwingsを用いたExcelグラフ作成
2020年5月におけるPython開発環境の選択肢
# はじめに
インストールすればすぐに書けて動かせるのが魅力のPythonですが、
実際に業務などでキチンと書こうと思ったら– Pythonのバージョン管理ツール
– パッケージマネージャー
– エディター(IDE)
– リンター
– フォーマッター
– 型チェッカーくらいは最低限用意する必要があります。
しかしこの界隈、怒涛の勢いで日々新しいものがリリースされていて一概に「これがベストプラクティス」を提示するのが難しいんですよね。そこで今回は上記それぞれのツールについて「こんなものがあるよ」というのをご紹介したいと思います。# TLDR
– バージョン/パッケージ管理はpyenv + Pipenvがスタンダードだった時代は終わった
– VS CodeかVimを使うなら型解析にPyrightを導入するとよい
– [テンプレートを用意しました](https://github.com/ikumi-rai/Python-VSCode-Template)# 1. バージョン/パッケージマネージャー
プロジェクトごとに異なるPythonのバージョンおよびパッケージを使い分けるた
Cisco覚書_Pythonでconfig投入
###Cisco機器上のPythonプロンプトconfig投入
IOS-XEのファームは`16.XX~17.XX`と`3.X.X`の2種類あり、guestshellやpythonの機能が使えるのは`16.XX~17.XX`のみ。
JUNIPERもCISCOもPythonが標準具備になってきていているらしい。
EEM(event)をトリガーにスクリプトを自動実行させるようなprogramableなネットワークの実装が可能。
Junosでは昔からshellモードがあり運用者が間違えて入ると危険という意味でユーザ権限無効にしていた。
CiscoのTCLも障害対応のワークアラウンドで埋め込んだことはあるが運用側でメンテはハードルが高い。
大人気のPython、NW運用でも活用できるかな。。。とにかく簡単で安全じゃないと使ってもらえないから、、まずは試してみる。#####豆知識
IOS-XE搭載のCatalyst3850/3650では
`16.XX`のファームウェアのコードネームは、頭文字のアルファベット順で山の名前が付けられている。
16.2 – 16.3 は Denali
16.6
カーネル密度推定のやり方
・hogehogeの中に予測したいlistを入れる
・kdeの中に密度推定した確率密度関数が格納される“`python
from scipy.stats import gaussian_kde
kde = gaussian_kde( hogehoge )
“`
【EC2】seleniumが実行できないエラーの対処法(No module named selenium)
#【EC2】pythonでseleniumが実行できないエラー(No module named selenium)の対処法
##エラー内容
“`
#実行内容
$ python ファイル名.py#エラー
ImportError: No module named selenium
“`seleniumはインストール済みなのに、no moduleとでる。
##対処法
`python3`で実行する。“`
$ python3 ファイル名.py
“`インストールしたpythonが3系のため、**python3**コマンドを使う。
そもそも、**seleniumもpip3でインストール**している。▼[補足] pipコマンドは使えない(pip3がmust)
“`
$ pip install selenium
-bash: pip: command not found
“`
【EC2】エラー:Non-ASCII character ‘\xe8’の対処法
#【EC2】エラー:Non-ASCII character ‘\xe8’の対処法
EC2でpythonのファイルを実行しようとしたときに発生したエラー(seleniumのwebdriverを実行する途中)
##エラー内容
“`
SyntaxError: Non-ASCII character ‘\xe8’
in file ファイル名.py on line 行番号,
but no encoding declared;
see http://python.org/dev/peps/pep-0263/ for details
“`ファイル内に日本語など、デフォルトで読み込めない文字が使われている場合に発生するエラー。
(ローカルでは発生しなかったが、EC2上で発生。)##対処法
ファイルの1行目に下記を記述。(文字コードがutf-8であることを宣言)“`
#-*- coding: utf-8 -*-
“`再度実行し、無事完了。
【EC2】chromeをインストールする方法と各コマンドの内容
#【EC2】chromeをインストールする方法と各コマンドの内容
EC2でseleniumを動かすための準備。
実行コマンドの内容確認のためchromeインストール部のみ切り出し。前提:sshでEC2インスタンスに接続済み。
#chromeインストール用のシェルスクリプトのダウンロードと実行
“`
#この1文でEC2へのchromeインストールが完了
curl https://intoli.com/install-google-chrome.sh | bashComplete! <-インストール成功 Successfully installed Google Chrome! #ファイル名を変更 sudo mv /usr/bin/google-chrome-stable /usr/bin/google-chrome #バージョンの確認 google-chrome --version && which google-chrome Google Chrome 83.0.4103.61 <- --versionの実行結果 /usr/bin/google-chro
DataLoaderからファイル名を見たい
## はじめに
PytorchのDataLoaderとても使いやすくていいですよね.個人的に分類問題をしたときに分類に失敗したファイル名を見れたら分析しやすいと思ったのでファイル名の取り出し方を備忘録として記載しておきます.## Pathを取り出す
何ら難しいことはないですがDataloaderから直接取り出します.
PyTorchの[TRANSFER LEARNING FOR COMPUTER VISION TUTORIAL](https://pytorch.org/tutorials/beginner/transfer_learning_tutorial.html#load-data) [1]を参考にしてdataloadersを作ります.“`python
IMAGE_SIZE=224
BATCH_SIZE=20
TRAIN = ‘train’
VAL = ‘val’
DATA_DIR = ‘H:\\dataset/predata/’ # select your dataset directory
DEVICE = torch.device(“cuda:0” if torc
【EC2】chromedriverをコマンドラインでインストール&ダウンロードする方法
#【EC2】chromedriverをコマンドラインでインストール&ダウンロードする方法。
pythonのseleniumを使うためにEC2インスタンスにchromedriverをインストールする。
##1.chromedriverのパスをコピー
ChromeDriverのオフィシャルページからDLしたいバージョンのダウンロードページに移動https://chromedriver.chromium.org/downloads
linux64用のリンクのアドレスをコピー![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/563526/65f340ba-fca7-444f-7a15-6689baa73e31.png)
>ここでは下記バージョンをDL
https://chromedriver.storage.googleapis.com/83.0.4103.39/chromedriver_linux64.zip##2.chromedriverをEC2にダウンロードし解凍
“
Django -開発環境構築-
## **レッツジャンゴ -環境構築-**
プログラミングの挫折あるある:環境構築が想像の7000倍難しい。
ぼくは環境構築に相当労力使いました…。当時はわからなくてもとりあえず手を動かすスタイルで突っ走っていたのですが、最近ようやく理解が追い付いてきたのでここらで自分なりにまとめたいと思います。
あまり難しく考えすぎず、単純に順を追って Django の開発環境構築をしていきます。## **前提**
– 筆者は Windows ですので、Mac の方は適宜読み替えてください。
– すでに Python をインストール済みの方は該当箇所を読み飛ばしてください。## **手始めに Python をインストール**
#### ダウンロード
下記のURL にアクセスします。
https://www.python.org/
![python_install.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/641843/a11a8e42-5cd6-7f81-cec7-e0ff5a7b1c51.png)
OpenCVをつかった特徴点マッチングについて少しだけ掘り下げる
# 特徴点マッチングて?
こんなやつ。
400x400px の画像と、それを 200x200px にリサイズし回転させたものを特徴点を検出しマッチングさせています。![download.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/287998/abc85a17-58b5-340d-9bf0-fb41cdce14ca.jpeg)
# コード
上の画像を出力しているコードです。
これだけ。“`py
import cv2
from IPython.display import Image
from IPython.display import display# 画像読み込み
img1 = cv2.imread(‘/path/to/dir/megane400x400.png’)
img2 = cv2.imread(‘/path/to/dir/megane200x200_rotate.png’)# 特徴点検出
akaze = cv2.AKAZE_create()
kp1,
Python tutorial
#variables
https://docs.python.org/3/library/ 参照
“`python
a = 1
b = “Text”
c = None
d = True
# list
days = [“Sat”, “Sun”]print(“Sat” in days) # 出力結果 True
print(“Mon” in days) # 出力結果 False“`
list is sequence and mutable # days = [“Sat”, “Sun”]
tupple is immutable # days = (“Sat”, “Sun”)
dict me={ “name”:”zomggang”,
“age” : “secret”}
WSL(windows subsystem for linux)上でPython使おうとしたらJupyterで詰んだ(解決済み)
普段WSl上で開発を行っているのですが、今日久々にPythonを書こうとしたら詰まった点について解説していきます。
*問題発生から解決まで丸一日消費してしまった…環境
WSL2
Ubuntu 18.04
pyenv 1.2.18-12-g098227f2
python 3.8.2
pip 20.1
pipenv 2018.11.26## どこで詰んだのか
いつもどうりvscodeを立ち上げてJupyterNotebookでも書こうかなと思って、新規のノートブックを立ち上げたその時…
**カーネルが接続してくれない**
おかしい、pipenvで仮想環境は整えているはずなのに…
こうして私はJupyterを起動させるための長い長い旅に出た## 問題1 デフォルトでは.venvディレクトリが生成されない
windows上で開発してたときはうまく行ったんだ…何が違うんだ…
まず発見したのはインタプリタが入っているはずの.venvディレクトリが生成されていないのである。
これはpipenvのデフォルト設定のとき仮想環境は`~/.local/share/vi
Python3 を子供に教えるためにオセロを作ってみた(4)
# オセロゲームのプログラムを解説していきましょう
## 関数について理解しよう
プログラムでは関数はとても大切な要素です。関数というのは一連の動作を機能としてくるんだものを指します。例えば、「食べる」という機能には、以下のような動作が含まれています。
1. 口に入れる
2. 咀嚼する
3. 味わう
4. 飲み込む
5. (例外的に危険を感じたら吐き出すとか)この5ステップのロジックを、何か食べるたびに書いているとコードが冗長になりますし、もしかすると「食べる」機能の中に「香りも確かめるべき」みたいな話しが出ると、全ての食べるロジックを修正して回らないとならないから大変です。ですので何回か出現するような同じコードは**関数**として定義し、食べる内容が変わる部分は**変数**として渡してあげるようにします。
Python で関数を定義するには、以下のように記述します。パラメータとして渡す物が可変になっていれば、どんなものでも食べることができる「食べる」関数ができあがります。
“`python
def EatFood(food):
“`
カレーを食べさせたけれ
【大田区】特別定額給付金の申請処理の状況を確認する
# 概要
大田区のHPで[特別定額給付金のオンライン申請状況](https://www.city.ota.tokyo.jp/cyuumokujoho/infection/kyufu/teigakukyuuhuonlinejokyo.html)を確認できるようになりました。
オンライン申請している場合、受付番号から自分の申請状況を知ることができるため、BeautifulSoupを使用して
申請状況等の情報を取得してみます。# HPの更新日時の取得
更新日時は、Last-Modifiedレスポンスヘッダーから取得することができます。
“`
print(res.headers[‘Last-Modified’])# 出力 Mon, 25 May 2020 08:49:00 GMT
“`# 申請の処理状況の取得
申請状況は、id=”main”内のul、liタグから取得できます。select()で指定することで申請状況を含んだ一覧を取得できます。
オンライン申請済みの場合、受付番号が発行されているため、自分の番号と比較して現在の状況を知ることができます。
Poetry入門 インストールから実行、バージョン管理まで
#はじめに
備忘録としてPoetryの使い方を残します。
# インストール
“`bash
$ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python
“`# コマンド一覧
個人的に使いそうなコマンドを載せます。
### Poetryのアップデート
“`bash
$ poetry self update
“`### プロジェクトの作成
“`bash
$ poetry new“` ### パッケージのインストール
“`bash
$ poetry add“` ### パッケージのアンインストール
“`bash
$ poetry remove“` ### パッケージ一覧を表示
“`bash
$ poetry show
“`### 仮想環境内でのコマンドの実行
“`bash
$ poetry run
韻を扱いたいpart5
##__内容__
前回グラフを作れたので、クラスタリング等を行ってみる。
また、韻の捉え方を拡張する。「eい」→「ee」,「oう」→「oo」と変換し、変換後に母音が一致したものも「韻」と捉える。これはカタカナ英語や子供の間違えやすい日本語を参考にした。「ei」と表記しないのは「えき」が「ええ」にはならないということだ。「い」と「う」は母音単体ではないといけない。(「れいぞうこ」が「れえぞおこ」)##__グラフの操作__
“`python
import networkx as nx
import matplotlib.pyplot as plt
import communityG = nx.Graph()
G.add_weighted_edges_from(edge_list)
#クラスタリング
partition = community.best_partition(G, weight=”weight”)
#コミュニティごとにノードを分けてリストにする。[[コミュニティ0のノードリスト],[コミュニティ1のノードリスト]…]
part_sub = [[] for _ in
ゼロから始めるLeetCode Day36「155. Min Stack」
#概要
海外ではエンジニアの面接においてコーディングテストというものが行われるらしく、多くの場合、特定の関数やクラスをお題に沿って実装するという物がメインである。その対策としてLeetCodeなるサイトで対策を行うようだ。
早い話が本場でも行われているようなコーディングテストに耐えうるようなアルゴリズム力を鍛えるサイト。
せっかくだし人並みのアルゴリズム力くらいは持っておいた方がいいだろうということで不定期に問題を解いてその時に考えたやり方をメモ的に書いていこうかと思います。
[Leetcode](https://leetcode.com/)
[ゼロから始めるLeetCode 目次](https://qiita.com/KueharX/items/6ee2502c3b620c795b70)
前回
[ゼロから始めるLeetCode Day35「160. Intersection of Two Linked Lists」(https://qiita.com/KueharX/items/f9c01184085586fbe491)基本的にeasyのacceptanceが高い順
バブルソートでソートされる様子を可視化する
# 概要
バブルソートでソートされる様子を `matplotlib` を使って描画してみました
※jupyter notebook上に貼り付けて実行してください“`bubble_sort.py
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inlinelist_a = [5,7,4,5,1,2,3,2,9,1,4]
left = np.arange(1, len(list_a) + 1)
height = list_aplt.bar(left, height)
plt.show()for i in range(len(list_a)):
for j in range(0, len(list_a) – i – 1):
if list_a[j] > list_a[j + 1]:
list_a[j], list_a[j + 1] = list_a[j + 1], list_a[j]height = np.array(list
【1日1写経】Predict employee attrition【Daily_Coding_001】
## 初めに
– 本記事は、python・機械学習等々を独学している小生の備忘録的な記事になります。
– 「自身が気になったコードを写経しながら勉強していく」という、きわめてシンプルなものになります。
– 建設的なコメントを頂けますと幸いです(気に入ったら`LGTM` & `ストック`してください)。## お題:IBM HR Analytics Employee Attrition & Performance
– 今回のお題は、**IBM HR Analytics Employee Attrition & Performance**です。kaggleに記載のあった説明によると、**「従業員の退職理由」**を探る問題のようです。
– 今回、以下のyoutubeの動画を見つつ写経していきました。Link:[Predict Employee Attrition Using Machine Learning & Python](https://www.youtube.com/watch?v=CpCs–DpJh0&t=144s)
データはkaggleから取ってきました。
Link:
python xlwingsを用いたExcelグラフ作成
# コメント
xlwingsを使ったグラフ作成の参考にしてください。
こうする方がベターだよというご指摘あればうれしいです。
apiを使うとvbaのコードが使える→ わからないことはExcelにて「マクロの記録」で調べられる。
test.xlsxは白紙のワークブックです。# 環境
python 3.7
xlwings 0.18.0#サンプルコード
“`
import xlwings as xw
from xlwings.constants import AxisTypeDATA_NUM = 10
# エクセルワークブックの読み込み
wb = xw.Book(‘test.xlsx’)# データの挿入
data_x = list(x for x in range(DATA_NUM))
data_y1 = list(x*2 for x in range(DATA_NUM))
data_y2 = list(x*10-50 for x in range(DATA_NUM))xw.Range(‘A1’).value = ‘x’
xw.Range(‘B1’).value =