- 1. pythonでcase文を書く
- 2. AIによる野菜識別器アプリの作成
- 3. 「DPC導入の影響評価に係る調査」実施説明資料のPDF内のICDコードをCSVに変換
- 4. Pythonで特定の拡張子のファイルリストを作る
- 5. MasoniteでチョットController
- 6. pytestでSQLAlchemyの接続先をオンメモリSQLite3に挿げ替える
- 7. pythonでQRコードを読み取ってHTMLで表示する
- 8. Pythonで機械学習・AI・深層学習のアプリを作ってみよう!#1
- 9. シグマ光機(OptoSigma)製コントローラをシリアル通信で制御してみる
- 10. Pythonで地理空間情報(GIS)やるために必要なパッケージ全部入りの「geospatial」が便利すぎた
- 11. JINS MEMEを買ったのでリアルタイムデータをPythonに取り込んでみた
- 12. Python2: py-bt frame information optimized out
- 13. scipy.stats: マン・ホイットニーの U 検定(ウィルコクソンの順位和検定) mannwhitneyu
- 14. [Python] YouTubeリンクをコピーしたら自動でダウンロードする。音声のみ。
- 15. tkinterを使ってテキストエディタのアプリを作ってみた ~PART3~
- 16. 【Python】クラス変数、クラスのインスタンス変数の一覧を取得
- 17. scipy.stats: コルモゴロフ・スミルノフ検定 kstest
- 18. pip search で ERROR: XMLRPC request failed [code: -32500] の解決法
- 19. 【初心者向け】Cloud ComposerでELT処理のワークフロー管理をしてみた
- 20. 【linux】.sh実行結果をログファイル出力する(特にpython系)
pythonでcase文を書く
python3.101 リリースが2022/04くらいなので今更感はあるが、、
## 主要な変更点
– 構造的パターンマッチング(case構文)
## 構造的パターンマッチング
要するにcase構文. SQLとかではifよりこっちがメインだがpythonでは`dict`や`if ..elif`でなんとかなるだろうと言うことで今まで採用して来なかったらしい。
他の言語と同じように書ける.
“`example1.py
a:int = 2
match a:
case 1:
print(“this is 1”)
case 3:
print(“this is 3”)
case _:
print(“Other”)
# Other
“`これまでは`case`を書きたければ以下のように書く必要があった.
“`example2.py
# pattern1
if a == 1:
print(“this is 1”)
elif a == 3:
print(“this is 3”)
else:
AIによる野菜識別器アプリの作成
# はじめに
初めまして、Yukimuraと申します。
ネットワークエンジニア(非AI)をしていますが、AIエンジニアをやりたいなと思っている今日この頃です。E資格やDS検定(リテラシーレベル)は取得済みのため、AIに関する基本的な知識はありますが、実践力を身に着けたく、AidemyさんのAIアプリ開発講座を受講しました。
# 本記事の概要
本記事は、AIアプリ開発講座の集大成として、オリジナルアプリ(画像認識)を作成したことについてです。
オリジナルアプリのネタは色々考えたところ、実家が農家のため、野菜識別器とかいいんじゃないかなと思い、それに決めました。
作成した野菜識別器は、以下になります。https://vegetable-classifier-app.herokuapp.com/
実は、私よりも以前に同じ講座を受講されていた方が、野菜識別のアプリを作られていました。
なので、以下の記事はとても参考になりました。
(特にソースコードの解説が秀逸です。)
偉大な先輩、ありがとうございました。https://qiita.com/a_tonbo/items/0696f
「DPC導入の影響評価に係る調査」実施説明資料のPDF内のICDコードをCSVに変換
https://www01.prrism.com/dpc/2021/top.html
2022年度「DPC導入の影響評価に係る調査」実施説明資料をダウンロード
“`
!wget https://www01.prrism.com/dpc/2022/file/setumei_20220331.pdf
“`# プログラム
“`
!apt update
!apt install ghostscript
!pip install camelot-py[cv]
“`“`python
import camelot
import pandas as pd# ページ範囲
pages = “145-168”tables = camelot.read_pdf(“setumei_20220331.pdf”, pages=pages, split_text=True)
dfs = [pd.DataFrame(table.data[1:], columns=table.data[0]) for table in tables]
# 結合
df = pd.concat(dfs).r
Pythonで特定の拡張子のファイルリストを作る
## 背景
・pythonでカレントディレクトリから特定の拡張子のファイルリストを作りたい時がある。## 目標
・pythonでカレントディレクトリから特定の拡張子のファイルリストを作る。## コード
“`:特定の拡張子だけのファイルリストの作り方
import os
files = os.listdir(os.getcwd())
md_files = [i for i in files if ‘.md’ in i]
“`“`:特定の拡張子だけのファイルリストの作り方:コメント入り
import os#カレントのファイルリストを読み込む
files = os.listdir(os.getcwd())#特定の拡張子のファイルのみを取り出す
#(例として「.md」ファイルを取り出してる)
md_files = [i for i in files if ‘.md’ in i]
“`## 更新記録
ver. 0.0.0:記事公開:2022/06/03## 参考資料
MasoniteでチョットController
(Python素人が、)ひっそりとMasoniteして行こう、Controller編。
[Masonite Documentation: Controllers](https://docs.masoniteproject.com/the-basics/controllers)
# バージョン
“`bash
Python 3.10.4
Masonite version 4.14.1
“`# ファイルの場所
“`app/controllers“`にあります。
最初は“`WelcomeController.py“`のみ。# 作成
Laravelと同様craftで作成できます。
“`bash
$ python craft controller UserController
Controller Created (app/controllers/UserController.py)
“`
“`python:app/controllers/UserController.py
from masonite.controllers import Controller
fro
pytestでSQLAlchemyの接続先をオンメモリSQLite3に挿げ替える
## 目的
外部への依存度を減らしつつ、DB関連コードのユニットテストを書くこと。
## 方法
表題の通り。
## コード例
“`python
“””pytestによるSQLiteの接続先の挿げ替え例.”””
from typing import Iterator, List, Tuple
from unittest.mock import patchfrom pytest import fixture
from sqlalchemy import create_engine, textdef get_stocks() -> List[Tuple]:
“””Product code.”””
user = “user”
password = “password”
host = “xxxx.xxxxxxx.us-east-2.rds.amazonaws.com”
database = “mysql”engine = create_engine(
f”mysql+pymysql://{user}:{pa
pythonでQRコードを読み取ってHTMLで表示する
# 目的
[こちらの記事](https://expy-style.net/python/websocket-qrcodereader/)を参考に自分のPC環境でも動くものを作りたい。
html上に表示し、QRコードを読み取り、リアルタイムで状態を変化させたい。# イメージ
![スクリーンショット 2022-06-03 20.34.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/176158/85316e94-6c56-169b-940a-2c5339c90e38.png)htmlで表示された表の状況の部分は、NGとなっています。QRコードをwebカメラで読み込むことでは、 データベースのstatusを書き換えます。すると、状況は、OKに変化します。
# プログラム
手順としては、 QRコードの作成、データベースの作成、pythonのプログラムの作成になります。プログラムは、githabにあげていますので、参考にしてください。
https://github.com/yutti/study/t
Pythonで機械学習・AI・深層学習のアプリを作ってみよう!#1
#機械学習とは?
シグマ光機(OptoSigma)製コントローラをシリアル通信で制御してみる
# 1.概要
シグマ光機(OptoSigma)の3軸ステージHSC-103を自動で駆動させたい気持ちが沸々と湧き起こってきました。
Pythonが第一言語の私はシリアル通信ライブラリのpyserialと組み合わせたいと思いました。まずは説明書を読んでみましょう。
https://jp.optosigma.com/ja_jp/hsc-103.html
取り扱い説明書にコマンド集があるので参照します。環境:
OS: Windows10
Python 3.6.8# 2.コマンド一覧
色々とありますが、うまくコマンドが打てていれば`OK\r\n`、間違っていれば`NG\r\n`が返ってきます。
## 2-1.Qコマンド
`Q:\r\n`
現在の座標をパルス数で返してくれます。
1パルスは0.01μmに該当します。
## 2-2.Mコマンド
`M:x,y,z\r\n`
相対位置をパルス数で指定して駆動します。
x, y, zは各軸の移動量で、1パルスあたり0.01μm進みます。
## 2-3.Aコマンド
`A:x,y,z\r\n`
絶対位置をパルス数で指定して駆動します。
x, y,
Pythonで地理空間情報(GIS)やるために必要なパッケージ全部入りの「geospatial」が便利すぎた
## Mac民にとってはめちゃくちゃ朗報かも
GISをやる人ならわかってくれると思うんですが、MacでPythonを使ってGIS(主にgeopandasなど)をやる時依存関係の解決にかかる時間ヤバすぎ問題っていうのがありまして…
主にGDLAとかGDALとかがかなりやばくて偉大なる先人様のお知恵を拝借して鼻血出しながらなんとかかんとか実行環境を整えていました。
が!!!!!もうそんな必要はないのかもしれませんね!!!!!!
## 早速インストール
Anacondaがインストールされている前提ですので、こちらの記事を参考にするなどしてインストールお願いします。
[MacでGISデータ分析を始めるためにサクッとAnacondaとjupyter labをインストールしてみる](https://qiita.com/nokonoko_1203/items/3b5ceb911af6b22a449f)
で、インストールはこれだけ。
“`bash
conda install -c conda-forge geospatial
“`この1コマンドでインストールされるパッケージは以
JINS MEMEを買ったのでリアルタイムデータをPythonに取り込んでみた
NALGO研究部の笹川です。
先日JINS MEMEを買ってみたので、何かしらデータを取得して遊んでみようと思いました。
※JINS MEME ([公式サイト](https://jinsmeme.com/))は、メガネブランドJINSから販売されているセンサー付きのメガネ製品です。良い姿勢で作業した時間割合を記録する等、「ココロとカラダのセルフケアメガネ」としての機能があるみたいです!
最終目標は社内Web会議で手軽、低負荷に使えるアバターカメラです。[^vtuner]
[^vtuner]: 元々VTUNERを試してみたくて購入したが、Google Meet等に仮想カメラで入力するような機能は無かった。
ひとまずメガネをかけてドキュメントを読んだり、既存の記事を当たったりしてみると、Unityを使用したりiOSアプリをビルドしたりする物のようで、少し腰が重い感じ。
また、[現在はSDKが非公開](https://jins-meme.github.io/sdkdoc2/sdk_common.html)のようです。
> JINS MEMEのSDKは非公開になっています。ご利用を
Python2: py-bt frame information optimized out
On system python2 on Debian 11 bullseye, when you try py-bt on gdb, session, frames are optimized out:
“`
(gdb) py-bt
Traceback (most recent call first):
(frame information optimized out)
“`To fix this, you can rebuild python2 without PGO.
– https://salsa.debian.org/cpython-team/python2/-/merge_requests/7
– https://github.com/cielavenir/salsa-python2/releases/tag/2.7.18-13.0.1Note that system Python 3.9 does not have issue.
scipy.stats: マン・ホイットニーの U 検定(ウィルコクソンの順位和検定) mannwhitneyu
# scipy.stats: マン・ホイットニーの U 検定(ウィルコクソンの順位和検定) `mannwhitneyu`
“`python
from scipy.stats import mannwhitneyu
“``mannwhitneyu(x, y, use_continuity=True, alternative=’two-sided’, axis=0, method=’auto’, *, nan_policy=’propagate’)`
– `use_continuity` : `method` が `’asymptotic’` の場合は,デフォルト(`True`)で連続性の補正を行う。
– `alternative` : デフォルトで両側検定 `’two-sided’`。片側検定の場合には `’less’`, `’greater’`。
– `method` : デフォルトは `’auto’` であるが,明示的に指定するほうがよい。
* `’asymptotic’` : 同順位補正をして標準正規分布で漸近検定。
* `’exact’` : 同順位補
[Python] YouTubeリンクをコピーしたら自動でダウンロードする。音声のみ。
必要なライブラリは適宜ダウンロードしてください。
ytdownload_bestaudio.py
“`
# -*- coding: utf-8 -*-from PIL import ImageGrab, Image
import tkinter
import time as tm1
import datetime as dt1
import pyperclip
import os
from youtube_dl import YoutubeDLclass Application( tkinter.Frame ):
def __init__(self, master):
super().__init__(master)
self.flag1 = 0
self.path1 = os.path.dirname(__file__) + “\\”
self.pack()
master.title(u”clipboard capture”)
master.geome
tkinterを使ってテキストエディタのアプリを作ってみた ~PART3~
前回はサブウインドウについて解説していきました。今回はメインウインドウについて解説していきます。テキストエディタアプリに関する投稿は今回が最後になります。
メインウインドウ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2631873/e965e9a0-fedb-fdba-7c73-7090f96f487a.png)
仕様としては、まずメニューバーのFileタブを押下すると、Open…とSave as…とExitが表示されます。そのうちのOpen…を押下すると任意のテキストファイルを読み込み、下部のテキストエディタに表示させることができます。また、Save as…を押下すると任意のディレクトリ内にエディタで作成した定型文を保存することができます。Exitはアプリを終了させます。では、プログラムを掲載します。
Open…押下時に動く関数open_func
“`py
# Open…
def open_func():
# 開くテキストファイルのパス
【Python】クラス変数、クラスのインスタンス変数の一覧を取得
クラス変数の変数名を一覧で取得したい、ということがあったのでその備忘録です。
“`python: クラスとインスタンスを用意
class Hoge:
a = 12
b = “hoge”def __init__(self):
self.c = 100
self.d = “fuga”hoge = Hoge()
“`
“`python: クラス変数”a”, “b”を含んだ辞書を取得
>>> Hoge.__dict__.items()
dict_items([(‘__module__’, ‘__main__’), (‘a’, 12), (‘b’, ‘hoge’), (‘__init__’,), (‘__dict__’, ), (‘__weakref__’, ),
scipy.stats: コルモゴロフ・スミルノフ検定 kstest
# scipy.stats: コルモゴロフ・スミルノフ検定 kstest
“`python
from scipy.stats import kstest
“``kstest(rvs, cdf, args=(), N=20, alternative=’two-sided’, mode=’auto’)`
★ 1 つの連続変数の分布(分布関数 $F(x)$)が特定の分布関数 $G(x)$ と同じかどうかの 1 標本検定
★ 2 つの連続変数の分布(分布関数 $F_1(x)$,$F_2(x)$)が同じかどうかの 2 標本検定引数
– rvs : 配列,文字列,関数
* 確率変数の観察値の一次元配列(ベクトル)
* 関数(キーワード引数 `size` を持つこと)
* 文字列の場合は `scipy.stats` での関数名(乱数生成のために使われる)
– cdf : 配列,文字列,関数
* 確率変数の観察値の一次元配列( この場合は `rvs` も一次元配列で,2 標本検定が行われる)
関数(累積密度関数 `cdf` を計算する)
pip search で ERROR: XMLRPC request failed [code: -32500] の解決法
# 結論
“`sh
$ pip3 install pip-search
$ pip_search mecab
“`:::note warn
インストールするパッケージ名は `pip-search` であるのに対し、コマンド名が `pip_search` であることに注意してください。
:::# 起きたエラー
pipで検索しようとしたら、エラーが発生しました。
“`sh
$ pip3 search mecab
ERROR: XMLRPC request failed [code: -32500]
RuntimeError: PyPI’s XMLRPC API is currently disabled due to unmanageable load and will be deprecated in the near future. See https://status.python.org/ for more information.
“`インストールは問題なくできていました。
“`sh
$ pip3 install numpy
Successfull
【初心者向け】Cloud ComposerでELT処理のワークフロー管理をしてみた
Cloud Composerを使用して簡単なワークフローを定義・実行したので、その際の処理の概要やCloud Composerについて学習したことをアウトプットしたいと思います。firebase-public-datasetを利用して、Cloud Storage上のデータをBigQueryの作業テーブルに取り込み、テーブルの結合などを行い、最後にBigQueyの作業用テーブルを削除する、という3つのタスクを定義・実行しました。GCP初学者なので、内容に誤りがあるかもしれません。その際はご指摘していただけると幸いです。
**本記事の対象読者**
・GCPを扱い初めて間もない方
・Cloud Composerを初めて利用する方**本記事で扱わないこと**
・Cloud SDKのセットアップ:記事内でターミナル上でコマンドを実行しGCPを操作することがありますが、Cloud SDKのセットアップは下記の記事を参考にしてください。
[Cloud SDK](https://cloud.google.com/sdk/gcloud?hl=ja)
・課金される料金の説明:課金される料金について
【linux】.sh実行結果をログファイル出力する(特にpython系)
# 結論
shellの実行結果をログファイル出力する。
リリース時に重宝する。
ターミナルの結果が消えても安心。1. 実行したいコマンド郡を{ファイル名}.shで用意する。
1. 下記コマンドを実行する
ログが吐かれる。
“`bash
script -c “{ファイル名}.sh” /dev/null | tee {ファイル名}.log
“`# 背景
Pythonのログは`script -c`で実行しないと、動作の完全終了後にすべてのログが一気に吐かれてしまう。
途中経過がログで追えなくなるので、上記コマンドで対応する。