- 1. 旧車レストア (ジェットボートの車検)
- 2. teradatamlデータフレームからデータを抽出する
- 3. Python Language – format() built-in Floating Point Rounding(浮動小数点数の端数処理 – 丸め)
- 4. 時系列データを3分割(訓練、検証、テスト)する方法
- 5. z-score normalization (python での実装コードあり)
- 6. GPT3を使ってみた
- 7. AmazonAlexaスキルの仮想開発環境を構築してみた
- 8. 現場のスクレイピング
- 9. 競プロのためのPythonの便利な機能
- 10. PytestとSeleniumでE2Eテストを自動化する
- 11. Socket.IOを使って、Node.js(client)とPython(Server)の双方向通信
- 12. Pythonの仮想環境についてまとめておいた
- 13. 球状黒鉛鋳鉄品の黒鉛球状化率と丸み係数について
- 14. SEOに強いPythonのselfに関する記事が間違いだらけで頭を抱えた
- 15. cifファイル中の分子をpy3Dmolを使って三次元的に重ね合わせ表示してみたよ
- 16. OpenCVを用いて対象物の基準線を水平に傾き補正する方法
- 17. Azure MLのジョブのStatusを確認する方法
- 18. Flaskでデータベースが作成されない時〜RuntimeErrorを読み解く〜
- 19. 【Python】Macで作業環境(Safari、Chromeなどのアプリ+α)のバージョンを一括出力する
- 20. ChromeBook(Chrome OS)でM5Stack環境(Arduinuo IDE)入れたときの備忘録
旧車レストア (ジェットボートの車検)
今まさにプログラミングを学んでいる人全てをエンジニアとして扱っていこうと思っています。
趣味で旧車のレストアもしていますので、趣味を紹介する傍らで、
本来の目的pythonも勉強中ですので、なにこれ。 ぐらいで留めていただければ。旧車が好きで、歴代の車を売却せずに長く残しています。
購入順に並べると、
– ビート(HONDA)H4年製
– ジムニー(JA11)H7年製
– ジムニー(JA11)H5年製
– RX-7(FC3S)H2年製
– MR2(SW-20)H7年製
– レオーネSVX(SVX)
– レガシーB4(B4)
– インプレッサ(GC8)どれもこれもいわゆるバブル期に作られた車で、20~30年超えてます。
車としては、どいつもこいつも地球環境には悪いですが、車は趣味と割り切っています。さて、これだけの数の車を維持しようとすると、とんでもないお金がかかります。
古ければ古いほど、ディーラーにお願いするとトンでもない金額を請求されます。よってエンジニアだったら、自分で車検を通すのです。(Qiitaとして定義したエンジニアの意味が違うけど)
自前でガレー
teradatamlデータフレームからデータを抽出する
[Teradata® Package for Python Function Reference](https://docs.teradata.com/r/Teradata-Package-for-Python-Function-Reference/April-2022) [リリース番号:17.10 リリース日付:2022/4]の翻訳です。
# はじめに
Pythonでteradatamlデータフレームからデータの抽出方法について説明します。
ライブラリとして[teradataml](https://pypi.org/project/teradataml/)を利用します。:::note info
**teradataml**はTeradata Vantage用のPythonライブラリです。
:::# 基本操作
## Vantageに接続する
“`python:python code
# 接続用ライブラリの宣言
import teradataml as tdml
# データベース接続
tdml.create_context(host = “IPアドレス”,username=’
Python Language – format() built-in Floating Point Rounding(浮動小数点数の端数処理 – 丸め)
Python では、他の多くの言語と同様に浮動小数点数における端数の丸めが行われます。
__15. Floating Point Arithmetic: Issues and Limitations__
https://docs.python.org/3.9/tutorial/floatingpoint.html__The Perils of Floating Point__
https://www.lahey.com/float.htmPython では IEEE 754 の `Round to nearest, ties to even(最近接丸め(偶数)= 偶数丸め(= 銀行家の丸め =Bankers’ Rounding ))` を採用しています。
__IEEE 754__
https://en.wikipedia.org/wiki/IEEE_754#Rounding_rules※ decimal 等で丸めの方法を変更することも可能です。
__Rounding modes__
https://docs.python.org/3/library/decimal.htm
時系列データを3分割(訓練、検証、テスト)する方法
# 読み込み
train = pd.read_csv(os.path.join(Input, “train.csv”))
test = pd.read_csv(os.path.join(Input, “test.csv”))df_data= pd.concat([train.assign(ind=”train”),test.assign(ind=”test”)], sort=False)
df_data.date_time = pd.to_datetime(df_data.date_time)
df_data=df_data.set_index(‘date_time’)test, train = df_data[df_data[“ind”].eq(“test”)], df_data[df_data[“ind”].eq(“train”)]
test.drop([‘ind’],axis = 1,inplace = True)
train.drop([‘ind’],axis = 1,inplace = True)
df_data.reset_index()CO_features
z-score normalization (python での実装コードあり)
# z-score normalization とは
下記の式で表現され
$$
\tilde{x} = \dfrac{x-\bar {x}}{\sigma}
$$$\bar{x}$は平均、$\sigma$は標準偏差を表す。
この標準化方法はそれぞれの値が平均からどれだけ離れているかをばらつき(標準偏差)で補正してあげることで、**単位が異なる数値同士を比較できる**ようになる。例えば…
体重(kg)と身長(cm)を比較したい時などに **z-score normalization** を使うことで比較が容易になる。||身長|Z-score(身長)|体重|Z-score(体重)|
|—-|—-|—-|—-|—-|
|A|170|0|70|-1.225|
|B|160|-1.225|90|1.225|
|C|180|1.225|80|0|z-score はデータを平均 : 0, 標準偏差 : 1 にスケールするので、そこからわかることは
– A の人は身長が平均ちょうどで、体重が比較的軽い
– B の人は身長が比較的低く、体重が比較的重い
– C
GPT3を使ってみた
# はじめに
文章生成というものに興味がありまして、今回GPT3を使ってみました。
APIの取得方法から簡単な文章生成までをサラッと紹介します。# 実装
## アカウント登録とAPIkeyの発行
まずはじめに、[OpenAIのアカウント登録](https://openai.com/api/)を行ってください!
登録がおわた後、右上の「Personal」から「View API keys」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2230776/44255531-01ac-2424-1168-7b0df6206e94.png)右側のAPI Keysから新しくAPIキーを発行してください。
発行したキーはどこかにメモしておきましょう!
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2230776/70dd2916-7232-3336-770c-6f7c8764b7
AmazonAlexaスキルの仮想開発環境を構築してみた
# 目的
アレクサで作ってみたいアプリがあるのですが、私自身全く未知な領域ですので、勉強がてら少し触ってみました。
今回はその過程を開発環境の構築から細かく記録しておこうと思います。
ところどころそこまで細かく説明する?ってくらい書いてますが初心者の方でも伝わるように書きました。(伝わるといいな~)
実際の開発はまた後日、記事にしたいと思います。
## AmazonDeveloperアカウントの作成
**まずは開発環境を用意します。**
[AmazonDeveloper](https://developer.amazon.com/ja)
に飛んでログイン及び必須項目の入力を行います。
その後、コンソールの開始をクリックし、amazondeveloperのホーム画面に行きます。
ホーム画面に下記のアレクサの項目があるので、こちらをクリック
![image1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2919558/a7256025-8068-92c6-1bad-54577e9c1d07.png)
左上
現場のスクレイピング
みなさん、スクレイピングしてますか?
この記事では現場でよく使う実践向けの内容をまとめました
– **idやclass属性が無くても抽出する方法**
– **ログインが必要なサイトの攻略法**
– **無限スクロールがあるサイトの攻略法**
– **“`## 使用するツール
| ツール | バージョン |
|:-|:-|
| Python | 3.10.6 |
| ChromeDriver | 107.0.5304.62 |
| selenium | 4.6.0 |
| beautifulsoup4 | 4.11.1 |:::note warn
selenium 3系とselenium 4系でコードの書き方が異なるので注意
:::## ツールを準備する
### Python 3.10.6
ダウンロード先:https://www.python.org/downloads/
インストールするときの注意点としては **“`Add Python 3.x to PATH“`**
競プロのためのPythonの便利な機能
# 条件式 (Conditional Expressions)
“`python
expression1 if condition else expression2
“`
conditionがTrueであればexpression1に評価され、
Falseであればexpression2に評価される。
JavaとC++の三項演算子 condition ? expression1 : expression2 に該当する。伝統的なIF文で表現する場合:
“`python
if n >= 0:
param = n
else:
param = -n
“`条件式の場合:
“`python
param = n if n >= 0 else -n
“`条件式はソースコードの可読性を向上させる場合のみ使用する。
# 内包表記文法 (Comprehension Syntax)
リスト内包表記:
“`python
[expression for value in iterable if condition]
“`使用例:
“`python
n = 10
PytestとSeleniumでE2Eテストを自動化する
## 背景
チームにてWebアプリを開発する際に、別のメンバーのコミットによってこれまでの機能に不具合が生じてしまう現象が起こり得ます(Degradation; デグレ)。自分のコミットをマージしてもらう前にE2Eテストを流して、以前の機能に影響がないことを確かめることによりデグレの発生確率を抑えることができます。
今回はPythonのテストフレームワークである `Pytest` とブラウザの自動操作ツールである `Selenium` のPythonライブラリを用いて E2Eテストの自動化を試してみます。
– ソースコードは弊社でインターンシップとして参加してくれている [@marufura](https://github.com/marufura) が協力してくれました。
## 環境
– MacBook Air (M1, 2020)
– Python 3.9.13
– Rosetta提供のIntel環境にてビルドされたPythonを利用しています.
– Chrome
– バージョン: 107.0.5304.110(Official Build) (arm64)
Socket.IOを使って、Node.js(client)とPython(Server)の双方向通信
Node.jsとPython間で、Socket.ioでメッセージをやり取りする自分用メモ。
いやぁ、、、Python難しい、、、まじでわけわからん。。# やりたかったこと
* Pythonが定期的に(やや重たい)演算処理を実行している
* Python側の演算処理が一巡したら、Node.jsへ結果を送りたい
* また必要に応じてNode.js側からPython側へ演算のもとになるデータを送りたい
* Python側がメインのシステム。
⇒PythonからNode.jsと、Node.jsからPythonへ、双方向でやり取りしたい
⇒とりあえずメッセージをやりとりするための土台をつくろう!# 環境
* Windows 10 64bit
* Node.js(v18.0.0)
* Python(3.7.9)# Python のパッケージ
* cmd > pip install python-socketio
⇒依存:python-engineio, bidict
* cmd > pip install eventlet
⇒依存:dnspython, greenlet, s
Pythonの仮想環境についてまとめておいた
# 仮想環境とは
`Python`で何かしたいときに`pip install`とか`conda install`とかよく出てきますよね。
全部ネットや本に書いてる通りやってると、環境がグチャグチャのとんでもないことになってしまいます。「きちんと書いてある通りにやってるのに動かない:innocent:」
「~~なんだこのポンコツPC~~:rage:」
実は、Pythonを使うときはプロジェクトごとに用途に応じた専用の実行環境をつくると良いです。
この一時的な実行環境のことを「**仮想環境**」と呼びます。# 仮想環境を使う目的
– モジュールの追加・入れ替えを自由に行いたい
– 異なるバージョンの`Python`を使い分けたい
– 異なるバージョンのモジュールを使い分けたい
などなど……**例**
「`TensorFlow`の1系と2系を使い分けたい」「`Python 3.9`と`Python 3.10`を使い分けたい」
# 仮想環境の種類
– `pyenv`
– `virtualenv`
– `venv` (旧称:`pyvenv`)
– `Anaconda`
–
球状黒鉛鋳鉄品の黒鉛球状化率と丸み係数について
# はじめに
JISのG5502 球状黒鉛鋳鉄品やG5505 CV黒鉛鋳鉄品において、組織画像から画像処理により黒鉛球状化率を測定する場合、黒鉛の形状を丸み係数というパラメータで評価します。ここで、丸み係数は次式で定義されています。“`math
丸み係数 = \frac{黒鉛の面積}{黒鉛の最大軸長を直径とする面の面積} (1)
“`
式(1)を画像処理のライブラリOpenCVを使って求める場合、{黒鉛の最大軸長}を直接求める関数はありませんが、これに近い「黒鉛の最小外接円の直径」を求められる関数があります。このため、上式の分母を“`math
丸み係数の近似値 = \frac{黒鉛の面積}{黒鉛の最小外接円を直径とする面の面積} (2)
“`
と置き換え、「丸み係数の近似値」が「丸み係数」とほぼ同じであることを確認できれば、実用上は式(2)から丸み係数を求めればよいことになり、計算が容易にできます。そこで今回は、種々の形状の黒鉛に対して、式(1)と(2)の値を求めて比較しました。# 検証1
ISO 945-1のFig.1のⅠ~Ⅵの黒鉛形状図の個々の黒鉛に対し
SEOに強いPythonのselfに関する記事が間違いだらけで頭を抱えた
# またお前か、侍エンジニア…
というわけで、侍エンジニアさんの間違いだらけな記事を見つけたので物申します。
「また」というのはこちらを参照。https://qiita.com/suin/items/fc19f0109dd876e6ecbf
# 問題の記事
https://www.sejuku.net/blog/64106
こちらの記事です。「Python self」で調べると一番上に出てきます。
# クラス変数として参照する
という見出しで紹介されていたコードがこちら。
“`python
class className():
def __init__(self, strA, strB):
self.strA = strA
self.strB = strBdef output(self):
print(self.strA)
print(self.strB)test = className(“Hello”, “World!”)
test.output()
“`
クラス変数…?
cifファイル中の分子をpy3Dmolを使って三次元的に重ね合わせ表示してみたよ
# 分子の重ね合わせ表示
有機構造化学は有機物の結晶構造とその物性について検討する学問です。有機構造化学では、結晶中の分子同士の形状を比較したいってことがよくあります。比較したい分子同士の結合長やら二面角やら数値を比較しても良いのですが、二つの分子の三次元画像を重ねて表示しちゃえば直感的にもわかりやすいです。この分子の重ね合わせ表示の図は論文とかではよく見るのですが、自分でやろうとすると思ったような描画ができずなかなか大変です。
そこで、ここでは、有機構造化学の分野でよく用いられる結晶構造データであるcifファイルから分子一個の立体構造データであるmolファイルを取り出しpythonを用いて三次元の重ね合わせ表示を行う方法をまとめます。
本記事の内容は無料でできるのが強みです。また、pythonによる描画なので色、大きさ、表示形式、重ね合わせ方法など設定の自由度が高いです。しかし、初めてpythonを扱う場合、環境構築が恐ろしく大変なのが短所です。
# インプットとアウトプット
今回のデモンストレーションにおけるインプットデータとアウトプットデータを示します。
・インプット
→
OpenCVを用いて対象物の基準線を水平に傾き補正する方法
# やりたい事
対象物を撮影後に傾きを発見し、水平方向に補正したいと思ったことはないですか。例えば、下記のようにiPadを撮影した時に、底面を基準に水平補正したいとした時に、このプログラムを使えます。
汎用の画像編集ソフトでは、0.1°単位での補正しかできません。そのため、研究活動やレタッチの際に詳細な水平補正で苦労するかと思います。また、目視での水平補正では、ピクセル単位で水平か確認できません。
そこで、本プログラムを使用することにより、0.01°の補正や指定辺を基準に回転補正することを容易にすることができます。## 動作
本プログラムは、コードを扱うことに慣れていない人向けに作成したため、すべての動作をGUIにより動作します。①実行後はGUIにより、水平補正を行いたい画像を選択します。
Azure MLのジョブのStatusを確認する方法
# はじめに
今回はAzure MLで作成したデザイナーを実行し、ジョブが完了したかどうかをPythonから確認してみました。# 開発環境
+ OS Windows 10(NVIDIA GTX 1650Ti,16GB RAM, i5-10300H CPU)
+ Visual Studio Code 1.73.1
+ Python 3.9## Azure ML上でジョブのStatusの確認
まずは[こちら](https://qiita.com/kkawano_neko/items/e08ea559af2cbf9a2066)の二項分類のパイプラインを実行してみます!
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2976188/92769379-b06b-1a00-0c57-b4044e80415f.png)学習データを後からでも追加できるように、**Import Data**コンポーネントを入力データとしました。
そして、**Export Data**を**Score Mode
Flaskでデータベースが作成されない時〜RuntimeErrorを読み解く〜
以前Flaskでアプリ制作をしてた時にデータベースファイルが作れないエラーが起きたので記録していきたいと思います。
Flaskでデータベースを作成する時はSQLAlchemyを使うのが便利。ちゃんとインポートしときましょう。
一応こちら?は簡単なサンプルコード。ちなみに仮想環境は使用していません。
“`python:app.py
from flask import Flask
from flask import render_template, redirect, request
from flask_sqlalchemy import SQLAlchemyapp = Flask(__name__)
app.config[‘SQLALCHEMY_DATABASE_URI’] = ‘sqlite:///lesson.db’
db = SQLAlchemy(app)class Lesson_db(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.Stri
【Python】Macで作業環境(Safari、Chromeなどのアプリ+α)のバージョンを一括出力する
記事を書く時、不具合を報告する時など環境としてコピペできるように出力してみました。
改善の余地は多々あるけど、とりあえず満足したのでメモがてら残します。[subprocess](https://docs.python.org/3/library/subprocess.html)を使用します。
## 環境
MacOSバージョン: 12.6.1
python3バージョン: Python 3.9.13## アプリのバージョンをPlistBuddyで取得する
Macにデフォルトで入っているplist編集コマンド`PlistBuddy`を使用します。“`sample.py
import subprocessresult = subprocess.run(“/usr/libexec/PlistBuddy -c \”print :CFBundleShortVersionString\” /Applications/Safari.app/Contents/Info.plist”, capture_output=True, shell=True, text=True)
prin
ChromeBook(Chrome OS)でM5Stack環境(Arduinuo IDE)入れたときの備忘録
– ChromeBoookを購入して、プチ開発環境を入れようとしてハマった体験の備忘録。
[2022/11/29版]
– この記事ではChrome OS V107 Lenovo IdeaPad duetを使用した際の開発環境に関する内容になります。※たぶんそのうちESPToolのほうがアップデートしてこういう事気にしなくなると思うけどそれまで
前から気になっていたChromeBookが格安で手に入ったので、せっかくだしス○バなどでなんたらチーノとかいうの飲みながらカフェでコーディングなんていう意識高い系やりたくなってちょっとした環境構築をしようとしたときにハマりました。。。。
**(つまり、M5Stackのコンパイルが通らない!!)**まず調べると、概ねChromeBookのChrome OSでも大概のことができるらしい。
ただし他人事みたくブログ見ているのとは違い、いざ当事者となるともう思ってたのとのギャップがちらほら、、、
(翌々考えたらハードウェアやOSからすると当たり前のことだったわけですが。。。)
[^1]:開発環境の構築
# まずは諸々の開発環境構築
手順は下記を