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

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

VSCODEを使ってFlaskを使えるように環境を作った方が確実

先日GitHubで公開したプログラムに、GUIを付けようとWeb開発環境を作っていました。
virtualboxにインストールしているUbuntu22.04を使って、python開発環境を作りました。

既にUbuntuにpython3が、インストールされている状態です。
その後、Jupiternotebookをインストールしていました。
でも、ネットで見つけた記事のように、インストールができた確認ができずネット検索を続けていました。
その様子をまとめていますので、こちらの記事も併せて読んで頂けましたら幸いです。

https://zenn.dev/masaru21/articles/285ff4c3e0d123

今回は、下記の記事を見つけました。
この記事に従って、勉強しました。

https://atmarkit.itmedia.co.jp/ait/articles/1807/24/news024.html

そして、この画像のように、同じ内容を実行できました。
![スクリーンショット_20221106_102826.png](https://qiita-image-store.

元記事を表示

並列処理を使った時系列モデル(Prophet)の作成

機械学習モデルは1つでよい場合もあれば、複数必要になる場合もあります。
例えば、何かしらのセグメントごとに最適なモデルを組むことで精度を上げるといったことが考えられます。

最近業務で時系列データを扱うことがあったのですが、
顧客ごとの複数の変数に対して時系列予測をおこなう必要があったため、”顧客数×変数”の数のモデルが必要になり、モデル学習と予測の処理時間が大きくなるという問題がありました。

一般的に、時系列データは変数単位でモデル構築するため、モデルが多くなる傾向があると思います。
上記の例以外でも例えば、POSデータを扱う際は”店舗×商品数”の数だけ時系列データが存在するといったような。

そこで、Pythonの並列処理(Multiprocessing)を利用することで処理時間の短縮を図ります。

本記事における時系列分析にはFacebookが開発したProphetというライブラリを利用します。ここは自身が扱いたいライブラリに置き換えて考えてもらえるとよいです。
また使用するデータセットはProphetのチュートリアルで利用されているデータを扱います。

# 実行環境
Goog

元記事を表示

ABC276回答メモ

0.はじめに
 昼間にやっていた東京工業大学のもちらっとやってみましたが
 ちょっと無理でした・・。
 気を取り直してABCに挑戦しましたが
 実装にてこずった感じになりました。
 3問正解もレートは下がってしまいました。

1.A – Rightmost
 最初一番左かと思って作り始めてから右側ということに気づきました。
 A問題らしい簡単な問題でした。

 https://atcoder.jp/contests/abc276/submissions/36223973

2.B – Adjacency List
 難易度急上昇。
 絶対TLEとはおもいつつ
 最初は10000×10000の枠を作って
 道路のある組には1をセットして
 枠をもとにアウトプット。
 としたらやっぱりTLEでした。

 素直に、表L[出発都市][到着都市配列]を作り
 道路情報をもとに到着都市配列に追加していき
 最後に都市数と到着都市配列を順に表示。
 で、できました。
 今となっては最初なぜ枠を作る方式にしたのかが謎なくらい
 後者の方が楽でした・・。

 https://atcoder.jp/co

元記事を表示

簡易ベイジアンABテスト&アンケート分析のPyMC3版

# 経緯

タイトルの通り,以下の記事を基に作ったCoLabを利用したツールのPyMC3版を2つ,GitHubに上げました.手作り版はアクセス数・CV数が大きくなるとエラーになってしまう不具合があり,今回ライブラリを使用したバージョンを作り直すことにしました.

# 注意
– コード複製・改変・その他諸々フリーですが,ツールから得た結果について一切責任を負いません
– このツールはGoogleドライブ上に保存することができるので,セキュリティに注意ください!
– ツール紹介がメインなので,技術的な説明や使用条件は省略しています
– とは言え記載に致命的な誤りがある場合はコメントください

# 過去記事

ベイジアンABテストに関する記事

https://qiita.com/o93/items/15bfdb259580461793b5

旧手作り版ツールの記事

https://qiita.com/o93/items/95570b30ed37b608279f

# 新しいツール

## ABテストPyMC3版

https://github.com/o93/bayesian-ab/bl

元記事を表示

Pythonで複数のclassごとにIDを振る方法

# やりたいこと
製品A,Bのオブジェクトがそれぞれいくつかあって、A,BごとにIDを1から振りたいという場合の方法です。クラス変数を置いて、インスタンスを作るごとにクラス変数に1を足す方法はいろんな方が書かれていたのですが、それを継承させる方法が見つからなかったので、備忘として書いておきます。

# やり方
まず、元となるクラス(BaseProduct)を作り、それをA,Bの各クラスに継承させます。元クラスにはクラス変数(class_count)を作り、クラスごとのID(class_id)にそれを入れて、入れ終わったら1を足す、というメソッドをクラスメソッドとして定義します。
その後、インスタンス変数としてのidにclass_idを入れてやるという処理です。見ていただいが方が早いですね。

“`python
class BaseProduct:
class_count = 1
@classmethod
def id_counter(cls):
cls.class_id = cls.class_count
cls.class_c

元記事を表示

[python]テキストファイルの作成、書き込み

## 環境

||環境|
|:-|-:|
|pc|windows10|
|言語|python3.11|

## ファイルの作成、書き込み

### open-closeの場合
“`Python3.11
import os
os.getcdir() #カレントディレクトリを確認(オプション)

c = C:/Users/~/codenote.txt # 指定のパスを用意

s = ‘start’ # 書き込む内容

f = open(c, ‘w’) # wで書き込み可能にする
f.write(s) # startと書き込む
f.close()
“`
:::note info
open-closeのセットで書き込まなければならないことが手間
withを使うとclose省略可能
:::

### withの場合
“`
with open(c, ‘w’) as f:
f.write(s)

with open(c) as f:
print(f.read()) # 書き込んだ内容確認
“`

参照:https://note.nkmk.me/python-file-

元記事を表示

diffusers多言語対応でWaifu Diffusionを試す

GitHubに興味深いコミュニティパイプラインを作った人がいたので試してみる。

https://github.com/huggingface/diffusers/pull/1142

# インストール

2022/11/06現在、メインブランチにマージされていない&しれっと0.7.1がリリースされているので、プルリクエストされたソースをコピーして実行する手順とする。

## 必要なパッケージのインストール

“`
pip install transformers gradio scipy ftfy “ipywidgets>=7,<8" datasets diffusers[torch] sentencepiece ``` `sentencepiece`が増えているので注意。 ## プルリクエストされたソースをローカルにコピー ```bash: git clone https://github.com/huggingface/diffusers.git cd diffusers git fetch origin pull/1142/head:add-multilingual-t

元記事を表示

pythonを使ってyoutubeをダウンロードする

## 検証動画

## ライブラリのインストール
“`
pip install yt-dlp
“`
## コーディング
“`
from yt_dlp import YoutubeDL

ydl_opts = {‘format’: ‘best’}
with YoutubeDL(ydl_opts) as ydl:
ydl.download([‘https://www.youtube.com/watch?v=47Jl-_0wQHM&t=1s’])
“`
## 実行結果
“`
[yout

元記事を表示

はじめまして

内容

コンピュータ初心者がweb系エンジニアになるまで、もしくは挫折するまでのの足跡

学習中言語など

Pyton

Django

使用教材

コンピュータの基本:

基本情報技術者

python:
現役シリコンバレーエンジニアが教えるPython 3 入門 + 応用 +アメリカのシリコンバレー流コードスタイル
https://www.udemy.com/course/python-beginner/

Django:

djangoチュートリアル

元記事を表示

[python] 簡単にJSON形式でファイルの使用記録を残す

# はじめに
自分が作ったプログラムの使用記録を残したい
よって簡単で扱いやすい形式で保存しておきたい
よって今回JSON形式で使用記録、すなわちLogを記録しておく

# 環境
windows 10
python version: 3.7.8

# Code
“`python
import json
import datetime
import os
import getpass

def Save_Log():
data = {
‘name’: getpass.getuser(),
‘date’: str(datetime.datetime.now().strftime(‘%Y/%m/%d %H:%M:%S’)),
}

log_json = “”
if os.path.exists(‘./log.json’):
try:
json_file = open(‘./log.json’, ‘r’)
log_json = json.load(json_

元記事を表示

Pythonのbool値で躓いた話

# 目次

– 躓いたポイント
– 解決方法
– まとめに
– bool値についての補足(追記)

※ 2022/11/06 追記
変数が大文字になってたので修正
補足を追記
その他コメントでして指摘のあったものを修正

# 躓いたポイント
正規表現(re)を勉強していたある日のこと
>マッチオブジェクトのブール値は常に `True` です。
>match() および search() はマッチがないとき `None` を返すので、マッチがあるか単純な if 文で判定できます。

こりゃ便利だ。早速試してみよう
“`python:test.py
import re

truestring = “aaa”
pattern = re.compile(r”aaa”)

trueresult = pattern.match(truestring)
if trueresult == True:
print(“Matched!”)
else:
print(“Not matched…”)
“`

“`terminal:result
Not matched…
“`

元記事を表示

古いMacでDiffusersを使う(CPUで使用する)

初めに私の使っているMACの性能をお伝えします。
“`
MacBook Air (11-inch, Early 2015)
プロセッサ:1.6 GHz デュアルコアIntel Core i5
メモリ:4 GB 1600 MHz DDR3
グラフィックス:Intel HD Graphics 6000 1536 MB
“`
新しいMacを買えよ。というツッコミは置いといてこのMacで流行りのDiffusersを使う際にした紆余曲折を書きたいと思います。
なおこのMacだと文字から1枚の画像を作るだけで数時間かかるので、忙しい人はお勧めしません。(そもそも私と同じように古いMACを使っている人はいるのか?)
また本記事はpoetryを使用しておりますので、pip等を使っている方は置き換えが必要になります。

## 試したプログラム
公式ドキュメント等を参考に基本的な文字から画像を作成するプログラムになります。
前述の通り一枚作るだけでかなりの時間がかかるためfor文を使用しておりますが、作る画像は一枚だけになります。
Googleコラボラトリではこの記述で使えたのでローカルでも試しました

元記事を表示

[Python] DataFrame型の引数を関数内で変更した時の挙動について

## 背景
C言語上がりのプログラマであり、DataFrame型を引数渡しした時の挙動について調査したい。

## 1次調査結
・pythonでは参照渡しで関数に引き渡されるが、引数に指定したオブジェクトがイミュータブルなオブジェクトなのかミュータブルなオブジェクトなのかによって呼び出し元の変数も更新されるか挙動が異なる
→ DataFrame型で実際に試してみる。

<参考>
https://www.javadrive.jp/python/userfunc/index3.html

## 2次調査結果
### ソースコード
“`Python
import pandas as pd

def add_height(master_df):
master_df[‘Height’] = [170, 171, 175]
print(master_df)

data = { ‘Name’:[‘Shota’,’Akebono’,’Yamaoto’],
‘Weight’:[60,99,55] }
df = pd.DataFrame(data)
print(df)

元記事を表示

Pythonを勉強してみる(1日目:環境構築)

# これはなに?
+ 主目的
– 誰かに読んでもらう!というより自分なりのアウトプットとして残すこと
+ 付加価値
– 自分以外にも勉強するぞ!という人がいた時の参考になればこれ幸い
– 詳しい方にコメントいただけたらうれしい

この投稿によりQiita投稿童貞を卒業するので
Qiitaベースでアウトプットしていけたらと思っている

# 作業環境
+ MacBook Pro (Retina, 13-inch, Late 2013)
+ プロセッサ:2.4 GHz デュアルコアIntel Core i5
+ メモリ:4GB 1600 MHz DDR3
+ OS MacOS BigSur 11.7.1を使用する
-> 構成がぐちゃぐちゃだったので工場出荷状態にした

約10年前のモデルなのにわたしのプライベートな要件を満たしてくれるスゲーやつ。
Python勉強しているうちに逝かれてしまったらしっかり供養したうえで
M1MAXチップのMacBookProにシフトしようと思う。

IDEは慣れているVisual Studio Codeを利用する。

# Homebre

元記事を表示

Macbook AirでAIやってみた

1週間ほど前にM1のMacbook Airを購入しました。
試しにMNISTで機械学習をやってみたので、やり方と結果のメモです。
MNISTは0〜9の手書き文字の画像がセットになっており、画像認識で数字をAIが数字を当てるものになっています。

## 環境構築
macOS VenturaからPythonの同梱が終了されたようなので1からPythonをインストールします。
私の場合homebrewからインストールするとパスがうまく通せなかったので[公式サイト](https://www.python.org/)からインストールしました。
今回はPython 3.9.13にしました。

Pythonをインストールしたら次はライブラリをインストールします。
以下をpipで以下をインストールしましょう。

pipのアップグレード
“`
pip3 install –upgrade pip
“`
Numpy
“`
pip3 install numpy
“`
pandas
“`
pip3 install pandas
“`
Tensorflow
“`
pip3 install tens

元記事を表示

python: pip installをコマンドしてもinvalid syntaxでうまくいかないときの対処法

## 環境
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2649584/bd8c248e-f27f-67ac-5622-8071fd0177c8.png)

## コマンドプロンプト起動後すべきこと

コマンドプロンプト起動後、pythonを起動する前にpip installを実行することで、エラーを回避することができる
“`python3.11
pip install ~ # pip installがpyの前に来る

py
“`

参照:https://sprockethole.work/2018/09/09/python%E3%81%AEpip%E3%81%A7%E3%82%A4%E3%83%B3%E3%8

Janomeが半角記号を「名詞,サ変接続」と認識するのを変更する

# はじめに
MeCabと同様、Janomeでも半角文字を形態素解析すると「名詞,サ変接続」と予測される(ややこしい)仕様が存在します。

“`python
from janome.tokenizer import Tokenizer

tokenizer = Tokenizer()

for t in tokenizer.tokenize(“/”):
print(t.surface, t.part_of_speech)
#=> / 名詞,サ変接続,*,*
“`

MeCabの場合は辞書を書き換えてインストールし直す必要があります。

https://nymemo.com/mecab/564/

しかし、JanomeはPythonだけで書かれているのでPythonのコード上でなんとかすることができます。

“`
# バージョン
janome==0.4.2
“`

# Pythonのコード上で変更する方法
tokenizerを呼び出した後、以下のように未知語に対する辞書の設定を呼び出すことができます。
“`python
from janome.tokenizer imp

GCPの実行異常クラスタを通知する方法

## 概要
実行異常でクラスタが存在し続けることがあります。
未発見の場合、ずっと実行がなされるので異常な料金が発生します。

そこで、定期的に実行の確認をするために、Cloud Functionsを活用して
ログを抽出して存在すればslackチャンネルを通知する というシステムを構築しました。

![gcp.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1180499/b722eded-8194-2da2-1223-99b550439e9a.jpeg)

## 対応方法

### 前提

#### Webhook URL?

今回このslackへの通知に使用する「Webhook URL」についての解説

・アプリケーションの更新情報を他のアプリケーションへ
リアルタイム提供する仕組みや概念

・イベント(リポジトリにプッシュなど)発生時
指定した**URLにPOSTリクエストする仕組み

Webhookの説明を見ると**「通知する、Webhookを送る」などの言葉が用いられているが、
これはPO

pyenvから3.11をインストール

pyenvをアップデートしたら3.11が追加されていました。

“`shell
$ pyenv update
$ pyenv -v
pyenv 2.3.6
$ pyenv install –list | grep ” 3.1[0-9]”
3.10.0
3.10-dev
3.10.1
3.10.2
3.10.3
3.10.4
3.10.5
3.10.6
3.10.7
3.10.8
3.11.0
3.11-dev
3.12.0a1
3.12-dev
“`

早速インストールしてデフォルトにしました。

“`shell
$ pyenv install 3.11.0
$ pyenv global 3.11.0
$ pyenv rehash
$ pyenv versions
system
3.10.7
* 3.11.0 (set by /Users/k.abe/.pyenv/version)
“`

高速化が気になったのでクラスメソッドさんの記事を参考にパフォーマンスを測ってみました。参考にしたブログは[こちら](h

【Python / Pyxel】Webで遊べてSNSに共有できる,レトロゲームを作ってみた.

![image_home.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2952428/6d5275b8-2284-680b-ebe4-af81e09a7e2b.png)

# はじめに

はじめまして,
[42tokyo Advent Calendar 2022](https://qiita.com/advent-calendar/2022/42tokyo)の8日目を担当する、changです.
今回は,Python向けのレトロゲームエンジンであるPyxelを使って,簡単なミニゲームを制作しました.Pyxelはゼロベースで学習しながらの制作でした.その際に学んだこと,役に立った知識や文献等を,時系列を追って簡単にまとめます.尚,今回はサウンドや効果音周りにまでは手を広げず,あくまでも最低限の基本要素のみとさせていただきます.
Pyxelをゼロから始めてみたい方の参考になれば幸いです.

# 目次

1. [Pyxelとは](

環境
pc windows10
言語 python3.11