- 1. プライベートのPythonライブラリ開発で設定しているGitHub Actionsを一通りしっかりまとめてみた
- 2. SPSS Modelerのユーザー入力ノードをPythonで書き換える。
- 3. VPSとクラウドサービスの違い 医療応用の可能性
- 4. M1 Mac、MontereyでPythonインストールするとreadline warning/SSL Errorが起きる場合の対処法
- 5. Python勉強開始② product 2022/06/14
- 6. 音楽を聞きながら寝るだけで睡眠を改善する方法
- 7. dict.fromkeysの罠
- 8. 徳島市ごみ収集日をPandasでデータクレンジングしてCSVに変換
- 9. Custom Vision 物体検知モデル⇒画像切抜き⇒分類モデルをバッチ化する Logic Apps
- 10. Pythonの開発環境を構築して日の出日の入り時刻の計算をしてみた
- 11. GPU環境構築
- 12. Effective Python 第2版 を自分なりにまとめてみる part2
- 13. kerasの実装
- 14. BigQueryのschema json を bigquery.SchemaField に変換するpythonスクリプト
- 15. Python-MIPのLinExprTensor.astype()をDataFrameの列に追加したときの考察
- 16. コマンドラインの where コマンドが無いときの代替スクリプト
- 17. macOS12.3でスクリプトが動かなくなったので修正した
- 18. VivliostyleをローカルPC内サーバーで展開するコードの修正
- 19. Python勉強開始① 2022/06/13
- 20. python の標準出力を tee で 表示/保存 できなかった件
- 21. Seleniumで利用するDriverの自動更新方法(Python)
プライベートのPythonライブラリ開発で設定しているGitHub Actionsを一通りしっかりまとめてみた
※この記事はQiita エンジニアフェスタ 2022「 GitHub Actionsの自分流の使い方をシェアしよう 」用の記事となります。
https://qiita.com/official-events/14b94a693d6153857db4
趣味(技術的盆栽)でちまちまと作っているPythonライブラリに対して設定しているGitHub Actionsの各種設定について説明・振り返りなどしていきます。Pythonライブラリの作成を検討している方で少しは参考になれば幸いです。
# 対象のライブラリ
以下のリポジトリのライブラリとなります。「Pythonでフロントエンドを書けるようにしてみたい」「細かい調整も自分でできるようにしたい」「HTMLとしてだけでなくJupyter notebook上でも使いたい」「将来的にはプロット制御などでも役立てたい」といった感じで少しずつ書いていっています。
https://github.com/simon-ritchie/apysc
# 設定しているGitHub Actions
Pythonライブラリなのでpipで扱えるようにするため
SPSS Modelerのユーザー入力ノードをPythonで書き換える。
SPSS Modelerでテスト用データやシミュレーション用データをつくるユーザー入力ノードをPythonのpandasで書き換えてみます。
以下の@416nishimaki さんの記事でModelerでの使い方は解説されていますので、この内容をpandasで行ってみます。
SPSS Modeler ノードリファレンス 1-3 ユーザー入力 – Qiita
https://qiita.com/416nishimaki/items/7cac454b4484f79d3587
# 1.連番データ作成
Modelerでは以下のように「1;13」という指定で1から13までの連続データを生成できます。
pandasではrangeオブジェクトで同じことができます。
ちょっとトリッキーなのは、出力結果にはstop値は含まないことで、出力したい値
VPSとクラウドサービスの違い 医療応用の可能性
サーバーを利用する必要があれば自社の建物の中などに
サーバー機器を設置して利用するのが一般的でした
この運用形態のことを「オンプレミス」といいます
病院などでは「オンプレミス」によって
各病院でデータ管理するのが通常でした病院の中のみで使用できる
物理サーバーを自社内などに設置して利用するオンプレミス型と違い仮想環境でサーバーを構築して利用するVPSやクラウドサービスは
導入コストの安さ、手軽さなどから導入が拡大しています
今後は電子カルテなどのデータの利活用が促進されることを考えると
病院間を超えて 良質な医療のため
クラウドコンピューティングの普及がおこることが想定されますhttps://note.com/taichi_endoh/n/ne1f508db26df
VPSやクラウドサービスとはどのような機能でしょうか?
### VPS(Virtual Private Server)
VPS:自由度は低いが安価
ホスティング業者によって提供されるサービスであることが多く
一台の物理サーバー上に仮想的に複数のサーバーを構築して利用できるようにしたものです固定
M1 Mac、MontereyでPythonインストールするとreadline warning/SSL Errorが起きる場合の対処法
MontereyだとPythonを標準でインストールしなくなりました。
で、Pythonを使う場合、インストールする必要があるんですが、インストールした時にwarningやらエラーでハマったのでそれのメモ。
ちなみに、python2.xはサポート切れているので、基本的には3.xを入れるべきかと思います。まず、インストールをぐぐりながら続けていくとこういうエラーが出ることがあります。
“`
pyenv install 3.10.4
python-build: use openssl@1.1 from homebrew
python-build: use readline from homebrew
Downloading Python-3.10.4.tar.xz…
WARNING: The Python readline extension was not compiled. Missing the GNU readline lib?
ERROR: The Python ssl extension was not compiled. Missing the OpenSSL
Python勉強開始② product 2022/06/14
アルゴリズムと数学の問題を今日も解いています。
008 – Brute Force 1の問題でGithubにPythonの解答が見つからなかったのでうんうん唸りながら解きました。問題文
赤・青のカードが各 1 枚ずつあり、あなたはそれぞれのカードに 1 以上 N 以下の整数を 1 つ書き込みます。カードに書かれた整数の合計が S 以下となる書き方は、いくつありますか?
これは全探索と呼ばれるアルゴリズムのようで、productを使って以下のように書き上げることができました。
~~~
from itertools import productN,S = list(map(int, input().split()))
l1 = range(1, N+1)l = []
p = product(l1, l1)for v in p:
sum = v[0]+v[1]
if sum <= S: l.append(sum) print(len(l)) ~~~ 何かもたついているような気もしますがどう変えたらいいのかわかりません。 ここでpro
音楽を聞きながら寝るだけで睡眠を改善する方法
一般的にバイノーラルビートと呼ばれる左右から異なる周波数の音をヘッドホンやイヤホンで聴くことで、左右の周波数差分だけ脳波が誘導されると言われています。
バイノーラルビートによる脳波誘導の検証は[こちら](https://qiita.com/tatsui/items/6308563300bebd8ef61b)の記事も参照してみてください。
今回はこのバイノーラルビートを使って睡眠もコントロール可能なのかどうかを検証してみました。## 検証に使用したセンサーとアプリケーション
* [Muse S](https://choosemuse.com/muse-s/)
* [Mind Monitor](https://mind-monitor.com/)バイノーラルビートの効果を検証するために脳波計(EEG)とジャイロセンサーを使います。
睡眠時は長時間バッテリーが動作する必要があり、寝返り等で電極がずれないようMuseS(Gen1)を使用しました。
計測データは正規化された脳波の値を使用しています。## サンプルデータの読み込みと表示
“`python
import panda
dict.fromkeysの罠
昔、こんな記事を書いたものです。
https://qiita.com/valusun/items/1ea8c08a19c2b2f349b4
AtCoderの[ABC235-C](https://atcoder.jp/contests/abc235/tasks/abc235_c)を解いていたら、見事に罠に引っ掛かったので書いておきます…
## 概要
この問題は、出現した値をキーに、出現した場所を値と持った辞書が必要になります。
入力例1を例に取ると、
“`
1 : [1, 2, 5]
2 : [3, 6]
3 : [4]
“`
のような辞書を作成します。自分は以前、上記のような記事を書いたこともあり`fromkeys`を使って下記のように書きました。
“`python
N, Q = map(int, input().split())
A = list(map(int, input().split()))
dic = dict.fromkeys(A, [])
for i, a in enumerate(A):
dic[a].append(i +
徳島市ごみ収集日をPandasでデータクレンジングしてCSVに変換
https://qiita.com/ffggss/items/96fbcd196c01f6345318
を参考に作成
https://www.city.tokushima.tokushima.jp/smph/kurashi/recycle/gomi/r4gomischedule.html
# スクレイピング
+ ごみ収集日程表をスクレイピング
“`python
import re
import pandas as pdyear = 2022
url = “https://www.city.tokushima.tokushima.jp/smph/kurashi/recycle/gomi/r4gomischedule.html”
# thousandsを設定しないとカンマが消える
dfs = pd.read_html(url, thousands=None)len(dfs)
“`
# データクレンジング
## ごみ収集地区割表
+ 五十音順に分割されているのでひとつに結合
“`python
def get_area(dfs):df0 = pd.conca
Custom Vision 物体検知モデル⇒画像切抜き⇒分類モデルをバッチ化する Logic Apps
# はじめに
前記事で、Custom Vision 物体検知モデル⇒画像切抜き⇒分類モデルを自動化する Azure Functions(Python)を作成しましたhttps://qiita.com/mimocihz/items/5afc7448fef276643d5e
Function 化することで、アプリからも呼び出せますし、Azure Logic Apps や Azure Data Factory から呼び出してバッチ処理させることもできます
活用の幅が広がりますね!
さて本記事では、Logic Apps から 前記事で作成したAzure Functions(Python)を呼び出し、Blob Storage の指定フォルダに存在する画像を全て画像解析処理をさせるバッチ実装について説明します# 実装イメージ
# Logic Ap
Pythonの開発環境を構築して日の出日の入り時刻の計算をしてみた
# Windowsにおける実行環境の構築
ますWindowsにおけるPythonの実行環境の構築は以前の記事で行っております。
WindowsにPythonをインストールするだけです。https://qiita.com/taka_so/items/a588aa2be0978bca0c15
# ライブラリの管理
Pythonには実に多くの有用なライブラリが用意されており、是非ともそのライブラリの機能を使いたいです。
Pythonをインストールした直後の実行環境にはライブラリまで準備されていないため、**必要なライブラリを別途インストールして**使うことになります。
このライブラリを直接Pythonの実行環境にインストールして使用することも可能ですが、この実行環境はそのプラットフォーム上のすべてのプログラムの共有の環境になるので、プログラムを作るたびにインストールされるライブラリがどんどん増えていくことになります。—
– プログラムAでは必要なライブラリはプログラムBでは不必要
– プログラムAとプログラムBではライブラリのバージョンを変えたい
– プログラムAで使っていたラ
GPU環境構築
共同研究が本格的に始まり python GPU の環境構築をする必要が出てきました
そこで、基礎的な部分をまとめます
まず以下の記事を参考にして環境確認を実施https://qiita.com/sabaku20XX/items/97db2c0bf7298e3a645c
### 環境
環境(構築前)
Ubuntu20.04LTS 64bit
CPU A10-7700K
(CPUコアが4基、クロックが3.4GHz、Max Turboクロックが3.8GHz、
GPUコアが6基、クロックが720MHz。L2キャッシュは4MBで、TDPは95W)GPU [GeForce RTX 3060 Ti] Device 2486.
### 前準備
CUDA対応NVIDIAボードが刺さっていることを確認する。“`
$ lspci | grep -i nvidia
07:00.0 VGA compatible controller: NVIDIA Corporation Device 2486 (rev a1)
07:00.1 Audio device: NVIDIA Corpora
Effective Python 第2版 を自分なりにまとめてみる part2
# はじめに
こちらの書籍のまとめになります[Effective Python 第2版 ――Pythonプログラムを改良する90項目](https://www.oreilly.co.jp/books/9784873119175/) (Brett Slatkin 著、黒川 利明 訳、石本 敦夫 技術監修)
– 全てのパートをまとめているわけではありません
– 個人的に難しくて理解できていなかったり腑に落ちていない箇所は省いています
– もしくは新たな気づきは特にないなと感じたところも省略しています
– コードに関しては書籍のものを丸々掲載するでなく、改変しています(その過程も個人的に有意義な時間でした)
– このページでは本書の4〜5章をまとめています。他の章はこちらを参照ください– [1〜3章](https://qiita.com/Takayoshi_Makabe/items/d49713937b1b482458b1)
– [4〜5章](https://qiita.com/Takayoshi_Makabe/items/e6d33a61568df437925f)
kerasの実装
# 参考動画
## データの取得
“`python
import numpy as np
import matplotlib.pyplot as plt
from keras.datasets import imdb
from keras.preprocessing.text import Tokenizer
from keras import models
from keras import layers
from keras.callbacks import EarlyStopping
f
BigQueryのschema json を bigquery.SchemaField に変換するpythonスクリプト
# 背景
pythonでBigQueryへのLoadJobConfigを書く場合、[bigquery.SchemaField](https://googleapis.dev/python/bigquery/latest/generated/google.cloud.bigquery.schema.SchemaField.html)が必要になる。bigqueryのschemaは `bq show –schema –format=prettyjson` などで取得できるjson型で取り扱うことが多い。
json型のschema情報を bigquery.SchemaField の形にconvertする機会が多いので、そのpythonスクリプトをメモしておく.
# 実装
“`py
# jsonからbigquery.SchemaFieldを生成する
def _get_field_schema(self, field):
name = field[‘name’]
field_type = field.get(‘type’, ‘STR
Python-MIPのLinExprTensor.astype()をDataFrameの列に追加したときの考察
## 概要
Python-MIPの`LinExpr`を要素に持つ多次元配列の`LinExprTensor`を考えます。
この`LinExprTensor`は、`astype(float)`により要素を`LinExpr`からfloatに変換してくれます。
ただし、型自体は`LinExprTensor`のままです。
これをDataFrameの列に追加すると、**一見floatの多次元配列に見えて実は異なる型になる**ので、その説明をします。## 説明
まずは、実際のコードを実行して確認してみましょう。
下記の数理モデルは、非負の連続変数が1つで制約条件なしの最小化問題なので自明の最適解(値は0)を持ちますが、解に意味はないです。
型が興味の対象です。“`py
import pandas as pd
from mip import Modelm = Model()
df = pd.DataFrame()
df[“Var”] = m.add_var_tensor((1,), “Var”)
m.optimize()
df[“Val”] = df.Var.astype(float
コマンドラインの where コマンドが無いときの代替スクリプト
“`python:
#!/usr/bin/env python3
import os, sys
len(sys.argv) < 2 and sys.exit(print('Usage: where file [file...]') or 1) x = list(filter(lambda q: os.access(q, os.X_OK), [p + '/' + n for n in sys.argv[1:] for p in os.environ['PATH'].split(':')])) len(x) and print('\n'.join(x)) ```
macOS12.3でスクリプトが動かなくなったので修正した
先日、macOS12.3へのアップデートを実施したところ、これまで動いていたいくつかのスクリプトが動かなくなりました。調べてみたところどうやらPython2.x系のランタイム環境が削除された影響だったようです。今後のために対処した方法を置いておきます。
VivliostyleをローカルPC内サーバーで展開するコードの修正
「アルゴリズム×数学」が基礎からしっかり身につく本を読み始めました。
わからないコードが出てくるたびに記事を作って頭を整理しようと思います。
ちなみにコードの説明はnote.nkmk.me を参考にさせて頂いています。問題ID002に出てきたmap()の使い方を勉強しました。
map()は、第一引数に適用する関数、第二引数にリストなどのイテラブルオブジェクトを指定する。
ちなみに「イテラブルオブジェクト」とは、for文などで要素を1つずつ取り出して処理できるような(通常、複数の要素からなる)オブジェクトを指す用語である。 例えばリスト、辞書、タプルなど。
中身はそのままでは出力されないのでリスト表記にする必要がある。
“`
import math
l = [4, 16, 25]#このままでは中身は出力されない
print(map(math.sqrt, l))#リスト表記にするとプリントされる
print(list(map(math.sqrt, l)))
>>[2.0, 4.0, 5.0]
“`lambda式を利用して任意の処理を適用したい場合は以下のようにな
python の標準出力を tee で 表示/保存 できなかった件
開発中に大量のエラーを吐き出していたので
エラー表示を見ながらファイルにも保存したかったのに、`tee` を仲介させた途端何も出力しなくなった標準出力がバッファリングされるのが原因らしい
“`
python3 hoge.py | tee log
“`を
“`
python3 -u hoge.py | tee log
“`と、`-u` オプション追加で、解決した。
Seleniumで利用するDriverの自動更新方法(Python)
社内ツールでseleniumを使って色々やろうとしたのだが、Chromeが頻繁に更新されるので、手動更新がめんどくさくなった。
自動更新の仕方を調べ、実際にコーディングし、意図する結果になっているので、整理しておく。**※多少雑だが個人的備忘なのでご了承ください。**
そしてそのツールは現状日の目を見ていないが、法改正をキャッチするために日次でチェックするツール(スクレイピング)にでもしようかと思ったり。
**また、筆者はpythonはゴミレベルなので間違いとかあれば指摘歓迎です。**なおJavaの記事は以下で記載しているので参考まで。(私はJavaで飯を食っているエンジニア)
https://qiita.com/soepy/items/6c6fb877737b43c2ffcd
# 環境情報
– python3
– Windows 10
– VsCode※なお対象のdriverはchromedriver
# 実装
– まずseleniumがない場合はinstall
“`sh
> pip install selenium
“`– 適当なフォルダにpy