Python関連のことを調べてみた2022年04月16日

Python関連のことを調べてみた2022年04月16日
目次

オブジェクトとクラスをjavaScriptとpythonで比べる

紛らわしいので、記事にして、アウトプットしておく。

クラスandインスタンス化

javaScript

“`javascript
class Person {
run() {
console.log(“run”)
}
}
const person = new Person();
person.run();
“`

python

“`python
class Person(object):
def run(self):
print(“run”)

person = Person()
person.run()
“`

__init__とconstructor

javaScript

“`javascript
class Person {
constructor(name) {
this.name = name;
}
run() {
console.log(

元記事を表示

PythonのDocker公式イメージからLANG=C.UTF-8の環境変数が削除された

uWSGI で動かしているアプリケーションが、最新の Docker イメージでビルドしたときに `UnicodeDecodeError: ‘ascii’ codec can’t decode byte…` のエラーで動かなくなったのでメモ。

## 要約

以前は Python3 側にバグがあり、環境変数 `LANG=C.UTF-8` を指定しないと動かなかったみたいだが、現在は修正されているため最新の Docker イメージではこれが削除された模様。

https://github.com/docker-library/python/pull/570

しかしながら、この環境変数をいくつかのライブラリは見ていたようで、上記 issue には今回の変更による[悲鳴](https://github.com/docker-library/python/pull/570#issuecomment-1100274060)が寄せられている。

影響を受けるライブラリの1つが、私も使っている uWSGI で、日本語の文字(非 ascii 文字)を扱おうとすると `UnicodeDecodeEr

元記事を表示

pythonのEXE化時のパスについて

# pyinstaller使用時のpathについて
pyinstallerで実行ファイル化すると、動作としてテンポラリフォルダ(_MEI*****というフォルダ)に解凍し、そこで実行する挙動になっています。

pyinstallerを使用して一つの実行ファイル化するときに、画像や設定等のファイルを参照する方法は2つあります。
実行ファイルがそれぞれ `C:\python\`にあるとします。
1.実行ファイルと同じフォルダに置いて参照する
2.ファイルを内蔵して参照する

### 1.実行ファイルと同じフォルダに置いて参照する場合
“`get_path.py
import sys
import os
get_path = os.path.dirname(sys.argv[0])
※必要によって .replace(“\\” ,”/”) を追加
print(“get_path=”,get_path) #get_dir= C:\python
“`
### 2.ファイルを内蔵して参照する場合
実際はテンポラリフォルダ内で参照することになるので、そのパスを取得します。

“`temp_

元記事を表示

CppCheckのアドオンをいじってみる(C言語の静的解析)

# 前文
この記事は自身のために残すものです。そのため技術的な解説は無く、成果物のみを掲載しています。
もし私以外にCppcheckの出力するdumpファイルを解析したい人がいれば、参考となれば幸いです。(非常にニッチ)
なお私はC言語使いのため、コードがPython向けに最適化されておりません。

# 概要
静的解析を使用してコードの品質向上を行いたいが、有償ソフトの導入はハードルが高いためCppcheckを使用する。
しかし、下記項目のチェックをできないことが不満であったため、アドオンをいじることでチェックを実装する。
・ネイティブの型(UCHAR/SCHAR/USHORT/SSHORT/ULONG/SLONG/FLOAT/DOUBLE)間でのキャストなしの代入を検出する。(広い表現範囲を狭い表現範囲に代入する)
・関数の引数に代入する際、同上のチェックを実施する。

主にUCHAR←SCHARなどのサイズ一致のケースで表現範囲が異なるケースを検出するための機能。
コンパイラによっては警告を出さない場合があるため、検出機能を実装した。

# 実現方法
下記の順序で実装した。
① C

元記事を表示

医療機器データベースに 機械学習 を利用する

# 医療機器データ解析するメリット

病院の医療機器管理は医療法で求められており 
平成19年第5次改正医療法の施行「医療機器の安全管理に係る体制整備」が義務となりました
法律でも明記されている

 「医療機器の安全対策のための責任者(医療機器安全管理責任者)の配置」
 「従業者に対する医療機器の安全使用のための研修の実施」
 「医療機器の保守点検に関する計画の策定および保守点検の実施」
 「医療機器の安全使用のために必要となる情報の収集
   その他の医療機器の安全使用を目的とした改善のための方策の実施」

が医療機器管理業務で必要となったのですが

対象となる医療機器が400台以上と多くデータベースの活用が必要でした

医療機器管理データベースを院内で構築すると
これまで見えてこなかった 情報が見えてくるようになりました

誰がどれくらい医療機器管理業務に携わっているか
年間でどれくらい経費節約に繋がっているか
これを皆様と具体的なデータと一緒に共有することで 
医療機器管理業務に対する 理解も得られてきました

データ解析するメリットは皆様の理解を得られることだと思います

#

元記事を表示

Ubuntu 22.04にmecab-ipadic-neologdをインストール

“`bash
sudo apt update \
&& sudo apt install -y mecab libmecab-dev mecab-ipadic-utf8 git make curl xz-utils file python3-pip \
&& pip install mecab-python3 \
&& git clone –depth 1 https://github.com/neologd/mecab-ipadic-neologd.git \
&& cd mecab-ipadic-neologd \
&& ./bin/install-mecab-ipadic-neologd -n -y
“`

# テスト
“`bash
echo “import MeCab
tagger = MeCab.Tagger(‘-Ochasen -d /usr/lib/x86_64-linux-gnu/mecab/dic/mecab-ipadic-neologd’)
print(tagger.parse(‘鬼滅の刃’))” | MECABRC=/etc/mecab

元記事を表示

SNSからWeb漫画ランキングを自動生成したら、話題の漫画が集まった【個人開発】

# はじめに

Web漫画のランキングサービスをリリースしました!
SNSで話題になっている漫画を探すのに便利です。

bookle – 話題のWeb漫画が見つかる!(無料)
http://bookle.work/

## サービス概要

はてなブックマークやTwitterからWeb漫画のブックマーク数やツイート数などを収集し、**漫画の人気度をスコア化してランキング表示するサービスです**。

– 特徴
– 手間をかけずに人気の漫画を発見できる
– 広く情報収集して自動判定するため、特定のサービスや個人の嗜好の影響を受けにくい

![service.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/118730/68d8c1c4-693a-1a6e-58a0-e371b188e9f6.png)

## なぜ開発したのか?

いろいろなサイトでWeb漫画が公開されていますが、私自身は時々SNSで話題になったものを読む程度で、あまり積極的に読んでいませんでした。一番の理由は、**多数の漫画の中

元記事を表示

Pytorchモデルの保存、読み込み

保存

“`python
torch.save(model.state_dict(), PATH)
“`

読み込み

“`python
model = TheModelClass(*args, **kwargs)
model.load_state_dict(torch.load(PATH))
model.eval()
“`

🐣
****
フリーランスエンジニアです。
お仕事のご相談こちらまで
rockyshikoku@gmail.com

Core MLやARKitを使ったアプリを作っています。
機械学習/AR関連の情報を発信しています。

[Twitter](https://twitter.com/JackdeS11)
[Medium](https://medium.com/@rockyshikoku)
[GitHub](https://github.com/john-rocky)

元記事を表示

dataframeのあるカラムについてのユニークな値について出現頻度を見る

[pandasでユニークな要素の個数、頻度(出現回数)をカウント](https://note.nkmk.me/python-pandas-value-counts/)
value_counts()は、ユニークな要素の値がindex、その出現個数がdataとなるpandas.Seriesを返す。


“`python
df[‘Hoge’].value_counts()
“`
出力
“`
0 303341
1 44193
Name: Hoge, dtype: int64
“`

元記事を表示

Pythonで複数行の文字列を複数行の文字列に置換する

Pythonで複数行に渡る文字列を別の文字列へ置換したい場合、`re`モジュールの`re.DOTALL`を指定して`re.sub()`を使用する。

# サンプルコード解説
以下は、ファイルの中の複数行の文字列に一致する箇所を新たな複数行の文字列に置換し、同名のファイルとして保存するサンプルコードとなる。

“`py:multiline_convert.py
#!/usr/bin/env python3
import sys
import re

target = r’\tfor \(hoge\) {\n\t\thogehoge;\n\t}*’

replace = “”” if (hoge) {}
for (hoge) {
hogehoge;
}
}”””

f1 = open(sys.argv[1],’r’)
f2 = open(sys.argv[1]+”_new”,’w’)
body = f1.read()
distbody = re.sub(target, replace, body, flags=re.DOTALL)
f2.write(distbody)
f

元記事を表示

グラフをダブルクリックして軸をリセットする Bokehの場合

グラフ上をダブルクリックすると、軸がリセットされる機能って便利ですよね。
Plotlyにはその機能がデフォルトでついていますが、Bokehにはついていません。ですが、実は一行で実装できるのです。
[このissues](https://github.com/bokeh/bokeh/issues/4698)に実装方法が書いてあったので、参考にして簡単なグラフを作ってみました。

“`python
from bokeh.plotting import figure, save, output_file
from bokeh.models import ColumnDataSource, CustomJS
from bokeh.events import DoubleTap
from bokeh.sampledata.stocks import MSFT
import pandas as pd

output_file(‘MSFT.html’)

df = pd.DataFrame(MSFT)
df.date = pd.to_datetime(df.date)
source = Column

元記事を表示

GoogleColaboratoryでpythonだけでなくRustも試せる環境を作る

# なぜやるか

– 下のリンクの書籍は`Python`と`Rust`を比較しているもので、これを読みたいのだが環境設定は面倒に感じたため。
– https://www.socym.co.jp/book/1351

# やったこと

1. `GoogleColaboratory`上のコードセルで`!apt install cargo`を実行することにより`rustc`コマンドを実行できるようにした。

2. マジックコマンドの`%%writefile hoge.rs`を使うことによって`hoge.rs`ファイルを`GoogleColaboratory`上で作成した。

3. 実際に`GoogleColaboratory`上で`Rust`の`Hello World`が実行できることを確認した。

# 参考文献
1.は’%%writefile’を使って`GoogleColaboratory`上で`C++`ファイルを実行する流れを紹介しているサイトです。2.は、`Rust`のインストール方法について触れているサイトです。`Rust`カーネルを利用する方法についても触れていますが、私はま

元記事を表示

PythonとSeleniumを使ってkeio.jpに自動ログインする方法

皆さん,[keio.jp](http://www.keio.jp)に自動でログインしたいと思ったことはありませんか?カッコイイと思いませんか?
少なくとも私はそう思ったので、Pythonでそれを実現する方法を調べてみました.

この記事では私が発見した簡単な方法を記しておきます.

### はじめに

[keio.jp](http://www.keio.jp)(正式名称は”Keio Single Sign-On System”)にログインするとき,私たちは次のようなページ遷移を辿っています。

1. `http://www.keio.jp` (Top page)
1. `https://auth.keio.jp` (SSO login page)
1. `https://gslbs.adst.keio.ac.jp/student/index.html` (Syllabus page)
1. `https://www.edu.keio.jp/ess2/login?` (Class support page)

Web上のURLにアクセスする処理をコーディングするときに,Beautifu

元記事を表示

Effective Pythonまとめ 2. List and Dictionaries (Item11~Item18)

Pythonのコーディング力を引き上げるために、[Effective Python Second Edition(英語版)](https://www.amazon.co.jp/dp/B07ZG18BH3/ref=dp-kindle-redirect?_encoding=UTF8&btkr=1)を用いて学習しています。
(日本語版は訳が機械的でわかりづらいというレビューが多かったので、英語版を利用することにしました。)
今回は、第二章のList and Dictionaries (Item11~Item18)について、要点をまとめていきます。

:::note warn
個人的に解釈した内容を記述しているため、本の内容と厳密には一致しない表現が含まれる可能性があります。
:::

# Item11: Know How to Slice Sequences

### 基本的なsliceの使い方
Pythonでは、list, str, bytes型などをスライスする際には、`somelist[start:end]`が利用できる。
この際、startに指定したindexに対応する要素は実行

元記事を表示

cygwinでpyenvを使う

以前, [Anacondaをcygwinで使うための記事](https://qiita.com/birdwatcher/items/0265098e5f8c1e0f8aa4)を書きましたが, pyenvに乗り換えたので, cygwinでpyenvを使う方法を紹介します.
前回のAnacondaのときの知識をフル活用して, 自己流で設定を完了させました.
(Anacondaはアンインストール済みで, この記事の初期段階で入っているpythonはcygwinのpythonだけです. )

# 導入手順
## pyenvインストール
cygwinターミナルから, windows用にカスタマイズされた`pyenv-win`を`pip3`でインストールします.
“`bash
pip3 install pyenv-win –target $HOME/.pyenv
“`
`–target`には, pyenv関連のファイルを置きたい場所を設定します.

chmodで実行権限を付与します.
“`bash
chmod 744 $HOME/.pyenv/pyenv-win/bin/pye

元記事を表示

【AtCoder】PythonでABC247 F問題(Cards)を解く

# はじめに

こんにちは。AtCoder青色のkym3535と申します。先日のABC247 F問題「Cards」が、複数の競プロ典型を組み合わせて解くすばらしい融合問題で、解いていて内心感動してしまいました。そこで使われる着眼点や典型解法をぜひ紹介したく、解説記事を書いてみたいと思います。

# 問題

[(AtCoder Beginner Contest 247) F – Cards](https://atcoder.jp/contests/abc247/tasks/abc247_f)

$1,…,N$の番号がついた$N$枚のカードがあり、カード$i$の表には$P_i$が、裏には$Q_i$が書かれています。

ここで、$P=(P_1,…,P_N)$および$Q=(Q_1,…,Q_N)$はそれぞれ$(1,2,…,N)$の並び替えです。

$N$枚のカードから何枚かを選ぶ方法のうち、次の条件を満たすものは何通りありますか?$998244353$で割った余りを求めてください。

条件:$1,2,…,N$のどの数も選んだカードのいずれかに書かれている

# 制約

– $

元記事を表示

リモートワークを快適にする換気システムを作ってみた

# はじめに
リモートワーク中、頭がぼーっとするときはありませんか?
そんなときはもしかすると、部屋の二酸化炭素濃度が高いかもしれません。

この記事では、Raspberry Pi(以降、RPi)、CO2センサ、Nature Remo 3、および Amazon Echo(以降、Echo)を用いて、リモートワークを快適にする換気システムを作る方法について、解説します。

この換気システムを使用すれば、換気が必要なタイミング・換気が完了したタイミングを Echo に教えてもらうことができます。

# 換気システムの全体像
![換気システムの全体像](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/242339/4bdba0df-d040-ee0d-ca6d-0bd7cf41da0b.png)
# 換気システムの機能

– **CO2センサから取得した二酸化炭素濃度の値、Nature Remo 3 から取得した温度・湿度・照度の値(以降、各センサの値)をスプレッドシートに記録**
– **スプレッドシートに記録した各セン

元記事を表示

【Python】1~4次までの地域メッシュコードを計算する

# はじめに

緯度経度から、地域メッシュコードを1~4次まで計算するPythonのPGを作成しました。

# メッシュコードとは
緯度経度を基に四角の区域に分けたものです。交通量分析やPTでメッシュコード単位で分析をしているとよく出てきます。
詳細は下記を参照してください
– [総務省統計局 地域メッシュ統計の特質・沿革](https://www.stat.go.jp/data/mesh/pdf/gaiyo1.pdf)
– [地域メッシュまとめ](https://qiita.com/nkuchiii/items/a3a83d5a2cdd5d8d630c)

# 環境
– python version 3.7.4
– windows10

# 実装
“`python:test.py
# coding: UTF-8
# メッシュコード変換設定用変数
MILLISECOND = 3600000 # 計算の単位(ミリ秒)に変換して計算する

#*************************************************************************

元記事を表示

ImportError: cannot import name ‘xxx’ from partially initialized moduleの対処法

# エラーが出た状況
このエラーが出たのが1つのファイルに色々コードを記述して、だいぶごちゃごちゃしてきたので、複数ファイルに分けようとしていました。
そしたらファイルを複数に分けた後、「ImportError: cannot import name ‘xxx’ from partially initialized module」が出てきやがりました。

# 原因:循環import
このエラーの原因は循環importでした。
循環importとはなんだよという方のために説明いたします。

ファイルA
“`
import ファイルB
“`

ファイルB
“`
import ファイルA
“`

めちゃくちゃ簡潔に書くとこんな感じです。
ファイルAでファイルBをインポート、ファイルBでファイルA。
両方のファイルでファイルを呼び出し合っていることによりこのエラーが発生してあります。

この両方からファイルを呼び出し合っているところを解決してあげるとエラーが消えました🤗

# 終わりに
初心者エンジニアですので何かありましたらコメントしていただけるとありがたいです!☺️

元記事を表示

AutoTrainで多クラス分類【アヤメ】

# AutoTrain🚂🚂🚂とは

ノーコードでテキスト分類や要約や構造化データの機械学習などがstate-of-the-artできるサービスです。本日より構造化データもサポートされました🎉
AutoNLPだとググラビリティが低かったのではなく、構造化データもサポートしたかったから名称変更したようです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/208363/455f097f-30c1-c7f0-050f-5907ae43f968.png)

https://huggingface.co/autotrain

# データ準備
アヤメの品種を花びらの長さやがくの幅から3品種に分類します。
CSVファイルをダウンロードしましょう。
“`bash
wget https://gist.githubusercontent.com/netj/8836201/raw/6f9306ad

元記事を表示

OTHERカテゴリの最新記事