- 1. pytest fixtureでユニットテストの前処理をする
- 2. 初心者で Python を使いたい人で環境構築に困った場合メモ
- 3. 【Jupyter Notebook】Bad file descriptorエラーを解決する
- 4. Python環境構築[Mac(M1)]
- 5. scipy.stats: 1 標本 t 検定 ttest_1samp
- 6. djangoのmodelsで生のSQLを実行する
- 7. Bottle製のアプリをHerokuへデプロイする方法
- 8. BottleとVueで作成したアプリ(ローカル開発編)
- 9. WebアプリとWebサイトに関する現在までの理解
- 10. PandasのDataFrameでappendの代わりの方法
- 11. Python学習の基礎・覚え書き
- 12. scipy.stats: 適合度の検定 chisquare
- 13. M1 MacminiでTensorFlowを使った画像分類
- 14. python3 MySQL すべてのデータベースのすべてテーブル件数を取得する。
- 15. ICRA 2022: DodgeDrone Challengeに参加した話
- 16. Lambdaの説明とlambdaのlayersの作り方
- 17. DjangoでHello Worldを表示する
- 18. scipy.stats: 関連2標本の平均値の差の検定 ttest_rel, ttest_1samp
- 19. scipy.stats: 独立2標本の平均値の差の検定 ttest_ind
- 20. 【Python】ezdxfを使ってみよう#5~実践!自動作図編~
pytest fixtureでユニットテストの前処理をする
Pytestによるテスト実行前に「環境設定をテスト用に差し替えたいなあ…」と思うことがありました。(接続先データベース等)
pytestコマンドの実行前に手動で環境変数を書き換えることも可能ですが、煩わしいので自動化したいです。
そこで今回はpytest fixtureでテストの実行前に自動で環境変数を書き換えました。
pytest fixtureを使えばテストの実行前に特定の処理を自動で実行することができます。### 環境
Python3.8.10
pytest
flask### ソースコード
“`py:__init__.py
from http.client import BAD_REQUEST, INTERNAL_SERVER_ERROR, NOT_FOUND
from dotenv import load_dotenv
from flask import (Flask)
from app.presentation.shared.exceptionhandler.notfoundexception import NotFoundException
fro
初心者で Python を使いたい人で環境構築に困った場合メモ
# 新たなプログラム言語を始めるにあたって何が障害?
私はずばり「**環境構築**」だと思っている。
新たなプログラム言語を習得するとかって、いろいろと用意することがあった記憶がある。
少なくとも私はそれが一番初めに来るのが嫌だった・・。
「まずは動くもの作りたいし、仕組みもシンプルなほうがよい。」
性格的に、なんでそう動くの?どんな仕組みでって考える人は、初めのハードルが高い気がする。(私見)幸い私の場合は Python を業務ですぐに習得しなければならない事情があったので、とりあえず、動く環境で動かしてみることを続けた。
その間、Python のバージョンアップや周辺環境の変化によりいろいろな選択肢が出てきて、いまでは環境の仕組みがわからなくても何とかなる。しかも、Pythonのような人気がある言語の場合は、ぐぐーったら環境構築の記事はごまんとある。新旧織り交ぜて・・・
これらのサイトをいろいろと読んでいて、一つ思ったのが[**公式サイト**に書いてあるじゃん](https://www.python.jp/index.html)
しかも、Pythonは比較的初心者に
【Jupyter Notebook】Bad file descriptorエラーを解決する
# 内容
タイトル通りですが、解決できる対象の環境は**ディレクトリ名に日本語が入っている**(Windows OSでユーザー名に日本語が入っている等)場合です。
エラー内容としては`jupyter notebook`コマンドからノートブック立ち上げ→カーネル立ち上げ→`Bad file descriptor`でノートブックが強制終了してしまうことを指しています。(以下のようにノートブック立ち上げ後に`Bad file descriptor`で落ちてしまう)
![SnapCrab_NoName_2022-6-1_20-50-9_No-00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/635079/d4fb32ca-b7d9-5639-840c-b1623e6fc27f.png)# 解決方法
`pip install notebook`実行時にインストールされる`pyzmq`をアンインストール
“`:python
pip uninstall pyzmq
“``pyzmq==19.
Python環境構築[Mac(M1)]
# 目次
1. Visual Studio Codeインストール
1. Visual Studio Code設定
1. 仮想環境構築
1. 仮想環境運用# 1. Visual Studio Codeインストール
以下より、インストールができます。https://code.visualstudio.com/
# 2. Visual Studio Code設定
vscodeの拡張機能より、Pythonをインストールします。# 3. 仮想環境構築
vscodeで任意のフォルダーを開き、ターミナルで以下を実行します。
>“`bash
>python3 -m venv .venv # .venvという名前の仮想環境を作成
>. .venv/bin/activate # 仮想環境(.venv)に切り替え
>“`
先頭に(.venv)と表示された状態で以下を実行すると仮想環境にパッケージがインストールできます。
>“`bash
>python3 -m pip install# <パッケージ名>
>“`# 4. 仮想環境運用
インストール
scipy.stats: 1 標本 t 検定 ttest_1samp
# scipy.stats: 1 標本 t 検定 `ttest_1samp`
`scipy.stats.ttest_rel` の項で既に書いたが,これはこれで改めて書き起こす。
1 標本 $t$ 検定は,2 つの局面で使われる。
1. 本当に 1 つの標本の,母平均の検定として
1. 本当は 2 つの対応のある標本の母平均の差の検定として後者の場合は `scipy.stats.ttest_rel` を使えばよいが,対応するデータの差をとって `scipy.stats.ttest_1samp` を使うこともできる。その際,差の母平均が 0 であるかの検定になる。
“`python
from scipy.stats import ttest_1samp
“``ttest_1samp(a, popmean, axis=0, nan_policy=’propagate’, alternative=’two-sided’)`
# 1. 母平均の検定
検定したい母平均を `popmean` で指定する。
例題: ある工業製品の重さは規格により 10g とされている。20
djangoのmodelsで生のSQLを実行する
# 環境
django : 4.0.3
python : 3.9.6
ubuntu : 18.04# 本題
生のSQLの実行自体は、公式ドキュメントを参考にしてrawメソッドを記載すればよいことがわかります。
公式ドキュメント : https://docs.djangoproject.com/ja/4.0/topics/db/sql/
ちなみに単純にrawを使う方法はviewsに書きます。自分はmodelsに書くと思っててハマりました(笑)。
下のは適当なサンプルです。
“`python
sql = “select * from テ-ブル名 where 1”
temp = モデル名.objects.raw(sql)
“`
SQL自体は適当に全件表示で書いてます。ただ、この方法だとviewsに記述するコード量が半端なくなっちゃいます。
俗にいうファットコントローラー問題ってやつです。
それを解消するためにmodelsに書きたいってなりました。さて、書き方についてですが、
結論から言うと「raw-sugar」ってのを使うといいみたいです。
手順
①raw-sugerを
Bottle製のアプリをHerokuへデプロイする方法
# Introduction
## きっかけ
ふと自分自身のサービスを作成してみたくて、Webアプリをインターネットにデプロイしてみようと思いました。普段の仕事でAWSを用いた業務アプリはいくつも作ってきました。しかし個人アプリ程度[^1]でAWSを使うのもどうか?と考え、AWSを使わず(なるべく安価で)構築してみようと考えました。とかなんとか考えて作業をしていくわけですが、作業をしていく中でだんだんとこの選択が愚かしいことだったと理解していきます。結論から言うと、Webの世界の茫漠さとAWSの圧倒的な便利さに驚嘆するわけなのですが、この時の自分はわかっていませんでした。[^2]
なお今回の記事は三部作となっております。
WebサイトとWebアプリの違い
Webアプリの開発(ローカル)
Webアプリの公開(Heroku) <-イマココ です。 本記事の内容において上記の解説は省略しております。あらかじめご了承ください。 なおWebアプリとWebサイトに関する ~~未熟さ、~~ 当時の知識レベルはこちらの記事にまとめました。 https://qiita.com/Se
BottleとVueで作成したアプリ(ローカル開発編)
## きっかけ
Pythonでプログラムを書いていると、フロントエンドからの入力部分が割と簡素なものになりがちです。
普段自分で使っているJupyter labなどは最低限の入力画面を作成できますので、他人に見せるときもそれなりの見栄えで紹介できます。しかし自分の作成したPythonプログラムはTerminalからだったり、Pythonコードを修正していじることが多かったため、他人に入力してもらいづらいです。操作性や見栄えが悪いからといって、HTMLやCSSを書くのは億劫です。
個人的には、フロント周りをなんかこういい感じに作成して、最小限の努力でそれなりの見栄えを手に入れたいと思います。色々調べた結果、とっつきやすそうなVueで簡単に作成します。[^1]しかしバックエンドとフロントエンドの接続は、今までAWSを前提としたAmplify等でしか実装したことないため、個人で試すには十分そうなPythonのフレームワークであるBottleを用いて簡単に開発してみようと思いました。
なお今回の記事は三部作となっております。
WebサイトとWebアプリの違い
Webアプリの開発(ロ
WebアプリとWebサイトに関する現在までの理解
# Introduction
> こちらは継続的な記事で、少しずつ加筆します。
## きっかけ
過去インターネットのサービスをいくつも利用してきました。現在はWebエンジニアとして働いています。しかし、未だにWebサイトとWebアプリの境界線がフワッとしています。自分自身のポートフォリオを作成したいと考えてもう3~4年経過しています。ブログは書いたことありますし、こうしてQiitaでも執筆しています。文章ならばいくらでもインターネット上に公開した経験はあります。しかし自分自身で作成したPythonファイルをインターネット上に公開するのはどうすれば良いのでしょう。(過去に業務でクラウドを用いてWebアプリをいくつも作成した経験はあります。)
サーバーレス開発を何度もしている人間が、サーバーを用いたWebアプリ開発で四苦八苦した記録をここに残します。
結論は、AWSマジパネェッス。です。
要するに下記の隔たりがどれほどの隔たりなのかを検証する記事となっています。
ローカル環境へのデプロイと、Webへのデプロイの間にはどれほどの違いがあるのかを検証する記事となります。過程はこの
PandasのDataFrameでappendの代わりの方法
# PandasのDataFrameでappendの代替
## FutureWarning
pandasのDataFrameに対してappendを用いると以下のような警告がされる。
いつかなくなるメソッドだからappendではなくconcatを使ってね、とのこと。
“`text
FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version.
Use pandas.concat instead.
“`## appendを使用する目的
カラム名だけで値は空のDataFrameを用意して、カラムを追加していきたい。
## 結論
コード
“`python
# カラム名のみの空DataFrameを作成
cols = [‘col_{}’.format(s) for s in range(9)]
df = pd.DataFrame(index=[], columns=cols)
# >> Empty DataFrame
# >
Python学習の基礎・覚え書き
# はじめに
この記事は、Pythonの自己学習で学んだこと(基礎的なこと)を書き留めておく覚え書きです。
環境構築手順や、アプリケーション作成のノウハウなどについては触れていませんので、あらかじめご了承ください。
## 実行環境
* MacOS 11.6.2
* Python 3.9.7# 基礎編
## 変数
### 変数宣言
変数名を書くだけで使用できる。キーワードは不要。
“`Py
x = 100 + 123
x.bit_length() # ビット数を取得
“`
“`:output
8
“`
### None
`None`は、何もない状態を示す。Javaで言えば`null`のようなイメージ。## 演算
### 除算結果の小数点以下を切り捨てる
“`Py
20//3
“`
“`:output
6
“`
### べき乗
“`Py
3**2
“`
“`:output
9
“`
### 文字列の繰り返し
文字列型の値に対して乗算を行うと、その文字列を繰り返す。
“`Py
msg1 = ‘hello’
msg2 = ‘!’
print(msg1, ms
scipy.stats: 適合度の検定 chisquare
# scipy.stats: 適合度の検定 chisquare
Help では “Calculates a one-way chi square test” と書いているが,一般的には適合度の検定である。[^1]
[^1]: `scipy.stats.binom_test`, `scipy.stats.power_divergence`, `scipy.stats.chi2_test` との関連についても述べる。
カテゴリーデータの集計の結果,度数分布が特定の分布にしたがっているかどうかの検定である。
特定の分布としては,
– 一様分布
帰無仮説:各カテゴリーの頻度は同じである $H_0: p_i = 1/k,\ \ i=1,2,\dots,k$
– その他の分布
帰無仮説:各カテゴリーの頻度は特定の割合(母比率 $\pi_i$)である $H_0: p_i = \pi_i,\ \ \sum \pi_i = 1,\ \ i=1,2,\dots,k$“`python
from scipy.stats import chisquare
“``chisqu
M1 MacminiでTensorFlowを使った画像分類
# 参考
– [Getting Started with tensorflow-metal PluggableDevice](https://developer.apple.com/metal/tensorflow-plugin/)
– [Making your own TensorFlow model for image classification](https://github.com/tensorflow/hub/tree/master/tensorflow_hub/tools/make_image_classifier)# 概要
tensorflowを使用した画像分類を試してみます。今回使用するのは`tensorflow-macos`です。
`tensorflow-metal`もインストールしてみましたが、うまく動作しなかったため後日再チャレンジします。# 目次
[環境](#環境)
[仮想環境の用意](#仮想環境の用意)
[pipのアップデート](#pipのアップデート)
[tensorflow-macosのインストール](#tensorflow-macosのイン
python3 MySQL すべてのデータベースのすべてテーブル件数を取得する。
### 環境
“`
$ cat /etc/os-release
NAME=”Amazon Linux”
VERSION=”2″
ID=”amzn”
ID_LIKE=”centos rhel fedora”
VERSION_ID=”2″
PRETTY_NAME=”Amazon Linux 2″
ANSI_COLOR=”0;33″
CPE_NAME=”cpe:2.3:o:amazon:amazon_linux:2″
HOME_URL=”https://amazonlinux.com/”$ python3.9 -V
Python 3.9.13
“`
### 必要なパッケージ
・pip install mysql-connector-python“`python:get_all_table_count.py
#!/usr/local/bin/python3.9
import mysql.connectordef convertTuple(tup):
str = ”.join(tup)
return strdef tableCount (HOST:str,
ICRA 2022: DodgeDrone Challengeに参加した話
# はじめに
以前書いた記事も面白いのでぜひご覧になってください!
[AWS Robot Delivery Challenge 2022 に出場できなかった話](https://qiita.com/KyoBashi/items/153aff5ce8af7111b537)# DodgeDrone Challenge とは?
詳しくは[こちら](https://uzh-rpg.github.io/icra2022-dodgedrone/)DodgeDrone Challengeとは、ロボットの国際学会である[ICRA2022](https://www.icra2022.org/)の中で行われたドローンの制御を競う研究目的のコンテストです。シミュレーターが用意されていて、その中で自分の書いたコードを動かしてドローンを飛ばします。
コンテストは終了しましたが、ソースコードは公開し続けるそうなので興味を持った方はぜひ動かしてみてください!!
# ルール
動く球状の障害物が多数配置されているフィールド内でドローンが初期位置から60m先に到達するとゴールとなります。State bas
Lambdaの説明とlambdaのlayersの作り方
## lambdaとは
AWS Lambda は、サーバーレスでイベント駆動型のコンピューティングサービスであり、サーバーのプロビジョニングや管理をすることなく、事実上あらゆるタイプのアプリケーションやバックエンドサービスのコードを実行することができます。インフラストラクチャのプロビジョニングや管理をすることなくコードを実行コードを書いて、.zip ファイルやコンテナイメージとしてアップロードするだけです。
### サーバーレス
サーバーではなくて、その場でコードを実行する環境です、trigger(s3,SQSなど)で実行しても良い、定期実行もCloudwatchイベントからでも出来ます、サーバーと違って使ってる分だけを支払いします。同時実行も1秒で1000件まで出来ますのでインフラが楽です。
### 使い方
Lambdaを作るには割と簡単です!名前と言語とアーキテクチャを選べたらもうコード修正とテストが出来ます。
名前はエンドポイントになりますので気をつけてお名乗りください。
環境としては色々の言語は出来ます。
![Screen Shot 2022-05-27 a
DjangoでHello Worldを表示する
# 1. はじめに
PythonのWeb開発フレームワークとして人気のDjango(ジャンゴ)で「Hello World」を表示していきます。
開発環境はWindows上に仮想環境を構築し、仮想マシン(Ubuntu)で行います。# 2. 開発環境
OS: Windows 10 Pro
VirtualBox: 6.1
Vagrant: 2.2.19
仮想マシン: Ubuntu 20.04.4 LTS
Python: 3.10.4
Django: 4.0.4# 3. Djangoとは
DjangoはPythonで実装されたWebアプリケーションのフレームワークの一つです。
Instagramやmozillaなどの有名なサイトでDjangoが使われています。
オープンソースで多数の機能が含まれおり、効率的に開発を進めることができます。# 4. 環境構築
まずはWindows上に仮想環境を構築し、仮想マシン(Ubuntu)にPythonとDjangoをインストールします。## 4.1. VirtualBoxインストール
Virtual
scipy.stats: 関連2標本の平均値の差の検定 ttest_rel, ttest_1samp
# scipy.stats: 関連2標本の平均値の差の検定 ttest_rel, ttest_1samp
# 1. テストデータの生成
“`python
import numpy as np
x = np.array([63.6, 62.9, 41.1, 54.0, 45.0, 39.8, 62.4, 37.8, 45.5, 47.9])
y = np.array([69.7, 50.2, 48.7, 59.4, 52.8, 54.9, 76.9, 66.4, 50.1, 48.8])
“`# 2. 関連2標本の平均値の差の検定 `ttest_rel`
“`python
from scipy.stats import ttest_rel
“``ttest_rel(a, b, axis=0, nan_policy=’propagate’, alternative=’two-sided’)`
デフォルトで両側検定である。特に指定するなら `alternative=’two-sided’` を指定する。
帰無仮説は「2 つの対応のある標本の母平均は等しい」である
scipy.stats: 独立2標本の平均値の差の検定 ttest_ind
# scipy.stats: 独立2標本の平均値の差の検定 `ttest_ind`
# 1. 関数定義
`ttest_ind(a, b, axis=0, equal_var=True, nan_policy=’propagate’, permutations=None, random_state=None, alternative=’two-sided’, trim=0)
あまり使われない引数もあるので,一応説明を加えておく。
– equal_var : 等分散を仮定するか?
デフォルトは `True` で,二群の分散が等しいと仮定する検定を行う。`False` を指定することで,二群の等分散を仮定しない Welch の方法による検定を行う。
– nan_policy : `nan` の取り扱いかた
* ‘propagate’: 結果として `nan` を返す
* ‘raise’: エラーを発生させる
* ‘omit’: `nan` を除いたデータで検定する
– permutations : 並べ替え検定
0 また
【Python】ezdxfを使ってみよう#5~実践!自動作図編~
ここまで図形の描画と寸法線の描画をまとめました。
それらの応用として、実際の構造物を作ってみましょう!前章はこちら:[#4~寸法編~](https://qiita.com/Rai-see/items/04a5733e77f791cdaa09)
## 実践!自動作図! ##
pythonで自動作図する優位性を考えて、規格の異なる構造物を同じコードで作成することに挑戦!U型トラフ(U字溝)をサンプルにして挑戦してみます。
U型トラフの規格は下記のHPを参考とします。http://www.sckk.jp/product/road/uu.html
カリオストロ級のspaghetti codeとなりましたが、非プログラマのやることと思ってお付き合いください。:spaghetti::spaghetti::spaghetti:
## 前提事項 ##
– これまでの作図メソッドの振り返りを兼ねますので、座標などの管理が合理的でない点が多々あります。座標管理の合理性の追求は次章以降とするつもりです。
– 寸法値b,eを採用し正確な再現をすると三角関数などが登場し可読性が低下するため無視