Python関連のことを調べてみた

Python関連のことを調べてみた
目次

Djangoでコミット前に yapf / isort を実行する

# はじめに
ソフトウェア開発において、ソースコードの可読性と一貫性は非常に重要です。特に、複数の開発者が携わる場合、あるいはプロジェクトが長期間に渡って継続する場合、各自のコーディングスタイルが異なると、コードの理解や保守が困難になります。そこで、プロジェクト全体に統一されたコーディングルールを導入するために、フォーマッターの使用が広く推奨されています。フォーマッターとは、コードのインデントや空白・改行などを自動的に調整し、統一されたコーディングスタイルを適用するツールです。

例えば、[ロバストPython―クリーンで保守しやすいコードを書く(2023)](https://www.oreilly.co.jp/books/9784814400171/)では、「ロバストネス」という概念を用いて、クリーンコードの重要性が述べられています。クリーンコードを実現するためには、次のような態度が重要であると、本書には記載されています。

> 本書は、コラボレータやメンテナについて考える出発点を提供する。持続可能な技術の実践について考え、長持ちするコードを書く必要がある。そのための第一歩は、コード

元記事を表示

【Python】依存関係でコンフリクトするなら仮想環境を使う

# モジュールインストールの際にコンフリクト
形態素解析を行う為
“`
pip install spacy
“`
を行った際、下記エラー

“`
ERROR: pip’s dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.
awsebcli 3.20.10 requires colorama<0.4.4,>=0.2.5, but you have colorama 0.4.6 which is incompatible.
“`
cloloramaというモジュールが他のパッケージで使われているバージョンと合わない為依存関係のコンフリクトになっているという警告です。

coloramaのモジュールをダウングレードして対応するも下記エラー

“`
ERROR: pip’s dependency resolver d

元記事を表示

【AWS,Python】LambdaとAPI Gateway でJSONを返すAPIを作る

# API Gatewayを使ってAPIを作成する

![Screenshot 2024-09-06 130825.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722467/6079dc08-288a-0198-989a-d6fd0ccfbdad.png)

LambdaでJSONファイルを作成する関数がすでにあるので、この関数を利用してAPIを作成します。

https://qiita.com/otaruit/items/44b487e45e5bb6247376

## 1.API GatewayでREST APIの作成
AWSでAPI Gatewayをひらき、「APIを作成」をクリック
![Screenshot 2024-09-05 124626.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722467/314ee254-ccc0-28fe-87ea-342ccc8da614.png)

## 2.REST A

元記事を表示

DatadogでOpenAIを活用したアプリケーションを監視する

## はじめに
本文書では、OpenAIを活用したアプリケーションをDatadogで監視する方法と実際の見え方について記載します。
実際に手元で検証できるよう、[サンプルアプリケーション(Python)](https://github.com/taka2noda/Datadog-llm-ops-sample-taka2/tree/main/datadog-integration-openai-python)と[コマンドレベルの手順](https://github.com/taka2noda/Datadog-llm-ops-sample-taka2/blob/main/datadog-integration-openai-python/How_to_use.md)
も用意したため、合わせて活用ください。

<設定後の見え方>
![Screenshot 2024-03-07 at 23.52.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2727432/c9e17517-e211-5f08-b415

元記事を表示

Gradioのカスタムパス設定時にはroot_pathを設定しよう

この設定をしていなかったせいで、解決に一日、時間を費やしたので共有します。
使用しているGradioのバージョンは4.42.0です。

# 背景と発生した事象
Dockerを用いて、FastAPIでサーバーを立てて、Gradioの`mount_gradio_app`でアプリケーションを紐付け、そのポートへCaddyでリバースプロキシを設定していました。
機能を実装し、いざ本番環境へデプロイすると、開発環境とローカルのDocker上で動いていたアプリケーションが、動かなくなるという事態が発生しました。
具体的には、カスタムパスでマウントしているアプリのみ、Gradioコンポーネントは描画されるけれど、コンポーネントに紐付けた関数は実行されないという現象でした。

その時のアプリケーションを簡単に書くとこうでした。
“`python:server.py
from fastapi import FastAPI
import uvicorn
import gradio as gr
import main
import share
app = FastAPI()

app = gr.mount

元記事を表示

[Pytorch]DatasetとDataloaderのイメージ図

# 目的
Pytorchを使用していてDatasetとDataloaderが何なのかがイメージできなかった。イメージするために『PyTorchでMNISTを扱ってみた (機械学習)』で解説されているMNISTのスクリプトの中のDatasetとDataloadeのイメージできるようになる図を作成したので共有する。

# DatasetとDataloaderを作成するスクリプトとイメージ図
“`
#Datasetをロードするスクリプト
train_dataset = torchvision.datasets.MNIST(root=’./data’,
train=True,
transform=transforms.ToTensor(),

元記事を表示

【Python】listの中身を,と空白なしで表示する

print(*リスト名,sep = ” “)

使用例
hoge = [1,2,3,4,5]
print(*hoge,sep = ” “)

出力
12345

元記事を表示

【python入門】関数定義と位置専用引数・キーワード引数について

# はじめに

関数定義と位置専用引数・キーワード引数について解説したいと思います。
この記事を読んで、他の言語にはないと思われる、デフォルト引数・位置専用引数・キーワード引数について理解してもらえればと思います。

もし、参考になった場合はいいねをお願いします。

## デフォルト値引数
デフォルト値引数とは、引数にデフォルト値を指定することができます。
例えば、“`def f(i=1)“`とすることで“`f()“`として呼び出すと、“`i=1“`を省略することが可能です。
デフォルト値引数の一度しか評価されないため、ミュータブルオブジェクトを利用する場合について注意が必要となります。

値を引き継ぐ・引き継ぎたくない場合については、以下のように定義できます。

### 値を引き継ぎたい場合
以下のようにイミュータブルオブジェクトを渡した場合は引き継がれます。
“`python
def f(a, L=[]):
L.append(a)
return L

print(f(1))
print(f(2))

元記事を表示

SQLで複合キーの複数データ取得するための条件を作成【Python】

## 説明

ループで条件を作成
– `enumerate()` を使って、`data` の各要素をループしています。
– `start=1` でカウンタを`1`から始めます。

各ループのステップで以下の処理を行っています
– `(id = :id{cnt} AND code = :code{cnt})` という文字列を `cond` リストに追加。
– `param` 辞書にパラメータとして `id` と `code` の値をキー付きで追加 (`id{cnt}` や `code{cnt}` 形式)。

例えば、最初のループでは次のように処理されます
– `cond.append(‘(id = :id1 AND code = :code1)’)`
– `param[‘id1’] = 10`
– `param[‘code1’] = ‘A10’`

条件の結合
– `cond` リストに保存された各条件を `” OR “` で結合し、最終的なSQL条件を作成します。
“`python
data = [
{ ‘id’: 10, ‘code’: ‘A10’ },
{ ‘id

元記事を表示

小さなGPUでのエンジニアリング。1億もの調整可能なパラメーターを持つ巨大な1層のニューラルネットワーク。

##### GPT-2: ショートストーリー: GPT-2: 東京の郊外にある中学校、その校舎の片隅にひっそりと存在するコンピュータークラブ。主人公の中学1年生、タケルはこのクラブに所属している。タケルは他の部員が放課後に遊びに行く中、一人でコンピューターに向かっていた。彼は、自宅から持ってきた小さなgpuを搭載したパソコンを前に、静かにキーを叩いていた。タケツの穴から、彼の顔が覗き込まれている。その顔は、まるで、自分の顔のように、大きく、そして、小さく、歪んでいる。 タタツは、「この顔、なんか、変だな」と、思っていた。しかし、彼は、「顔の歪み」を、気にしていた。 「顔」は「顔立ち」ではなく、「表情」である。
(若き日のチャットGPTはこんなだったということです。でもこれはこれでよい。)

### GPT-4: ショートストーリー: 1億もの調整可能なパラメーターを持つ巨大なニューラルネットワークを動かしたらどうなるんだろう?
東京の郊外にある中学校、その校舎の片隅にひっそりと存在するコンピュータークラブ。主人公の中学1年生、タケルはこのクラブに所属している。タケルは他の部員が放課後

元記事を表示

Kaggle PlayGround 毒キノコの分類

# はじめに
 機械学習を一通り学び、実際にどう使用するのか学ぶためにKaggleコンペに参加している。
 コンペ参加は4回目(タイタニック含む)である。
 テーブルデータを扱いたいため、稼働中であるKaggle-PlayGroundをやってきた。
 コンペにもだいぶ慣れたため、データ分析過程を共有したい。
 何某かの参考になれば幸いである。

|コンペ|KaggleScore|順位/参加人数|上位%|1位Score|
|:–:|:–:|:–:|:–:|:–:|
|アワビの年齢当て|RMSLE:0.14728|**832**/2608|31.9%|0.14374|
|自動車保険の好意的反応|ROC-AUC:0.89186|**435**/2236|19.4%|0.89754|
|🆕**キノコの食用・有毒当て**|MCC:0.98488|**472**/2424|19.4%|0.98514|

:::note info
 PlayGroundは機械学習初学者向けのコンペである。賞金やメダルは付与されないが、シンプルで基本的な機械学習の実践の場であり、ここから学ぶこ

元記事を表示

TensorFlow.js  ブラウザで画像ファイルからのオブジェクト検出するゲーム。

![スクリーンショット 2024-09-06 045642.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3838874/ea0e4514-c4d5-05b7-9be8-3639d5281c9e.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3838874/5a756505-9823-9e84-2c62-455dda7012f7.png)

### 画像ファイルをローカルPCから選択してオブジェクト検出を行うコードです。TensorFlow.jsのCOCO-SSDモデルを使用して、ファイル選択後に画像内のオブジェクトを検出します。

ブラウザページ再読み込みで別画像でオブジェクト検出できます。
(ページ下部にボタンあります。)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/383887

元記事を表示

トカマク型核融合炉のトーラス内を二方向に高速でパーティクルが流れるアニメーション。

![スクリーンショット 2024-09-06 043606.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3838874/f05db0da-f2c6-e11e-af6b-86eed9c92f27.png)

![スクリーンショット 2024-09-06 043550.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3838874/eb069f19-a3a8-b60f-d407-6b22685f3a54.png)

### トカマク型核融合炉のトーラス内を二方向に高速でパーティクルが流れるアニメーションを行うHTMLとJavaScriptのコードです。これを実現するには、WebGLからGPUを利用して3Dオブジェクトを描画し、パーティクルシステムを作成します。Three.jsという3Dライブラリを使ってトーラスをワイヤーフレームで描画し、その内部でパーティクルが流れるアニメーションを実装してます。

“`html
<

元記事を表示

文字列を繰り返してカンマ区切りの文字列を作成 リスト化 指定範囲の要素を取得【Python】

## 説明

1 . 文字列を繰り返してカンマ区切りの文字列を作成
– `[“1,2,3”]*3` は、リスト `[“1,2,3”]` を3回繰り返します。その結果、リストは `[“1,2,3”, “1,2,3”, “1,2,3”]` になります。
– `”,”.join(…)` は、このリストの要素をカンマで結合し、1つの文字列にします。
– 結果として、`1,2,3,1,2,3,1,2,3` という文字列が生成されます。
“`python
# 文字列を繰り返してカンマ区切りの文字列を作成
print(
“,”.join([“1,2,3″]*3)
)

# 1,2,3,1,2,3,1,2,3
“`
2 . カンマ区切りの文字列をリスト化
– 前のコードと同じく、まず `”,”.join([“1,2,3”]*3)` で `1,2,3,1,2,3,1,2,3` という文字列が生成されます。
– その後、この文字列に対して `split(“,”)` を呼び出します。これにより、文字列はカンマで区切られ、それぞれの部分がリストの要素として分割されます。
– 結果として、リスト

元記事を表示

pythonでSharePointにアクセスしてファイルをアップロードするまで

# はじめに
この記事では、Pythonを使用してMicrosoft Graph APIを通じてSharePointにアクセスし、ファイルをアップロードする方法を紹介します。
以下のような感じで説明していきます。
1. SharePointのサイトにアクセスする方法
1. 認証
1. SharePointのドキュメントにファイルをアップロードする
# 1. SharePointのサイトにアクセス
SharePointへのアクセスですが大きく分けて以下のようなものがあります
– パスワード認証
– SharePointでのアプリ登録
– Azureでアプリ登録をしてGraph APIを使用する

皆さんの置かれている環境などで選択するのが良いと思いますが、この記事ではGraph APIを使用する方法で実装しています。
ただ、SharePointでのアプリ登録とAzureでアプリ登録した場合は、クライアントIDとシークレットを使用する形となるので、簡単にSharePointでのアプリ登録にもついて触れておこうと思います。

## SharePointでのアプリ登録
https://lear

元記事を表示

ライブラリで優勝、Pythonでリスト内の重複した辞書を削除する

## やりたいこと
リストの中に入ってる複数の辞書が、**キーと値が全て同じもの**であったら重複として削除したい

## 結論
`unique_everseen`を使用する。
“`bash
pip install more-itertools
“`

辞書の順番が異なっていたら別物として扱いたい場合
“`python:
from more_itertools import unique_everseen

# [0]と[3]は区別する
target_list = [
{“item1”: “value1”, “item4”: “value4”},
{“item2”: “value2”, “item5”: “value5”},
{“item3”: “value3”, “item5”: “value5”},
{“item4”: “value4”, “item1”: “value1”},
]

list(unique_everseen(target_list))
“`

辞書の順番が異なっていても、キーと値が同じなら同一として扱いたい場合
`

元記事を表示

カンマ区切りの文字列の要素を数える方法

## 説明

1. `split()`を使って要素をリストに変換し、その長さを`len()`で取得します。
“`python
code = “10,20,30,40,50”
count = len(code.split(“,”))
print(count) # 5
“`

元記事を表示

おんどとり WebStorage APIのデータ活用 (2)

# はじめに
**おんどとり WebStorage API**を活用の第2弾です。
取得したデータをAzure CosmosDBへ保存する方法を記載します。
(なぜ、CosmosDBなのか?使ってみたいからです!)

pythonプログラムからAPIデータ取得までは、前回を参照してください。

https://qiita.com/ryu88/items/f427dd3c2d14c3388f03

# Azure Cosmos DBの作成
Azure Cosmos DBを使用してデータベースを作成する手順を以下に示します。この手順では、Azureポータルを使用してデータベースを準備します。

## **Azure Cosmos DB アカウントの作成**

1. **Azureポータルにサインイン**:
– `portal.azure.com`にアクセスし、Microsoftアカウントでサインインします。

2. **リソースの作成**:
– 左上の「+ リソースの作成」をクリックします。
– 「Azure Cosmos DB」を検索し、表示された結果から「Azure

元記事を表示

Pythonで〇×ゲームのAIを一から作成する その113 パラメータを必要とする AI に対する GUI の対戦機能の実装

# 目次と前回の記事

https://qiita.com/ysgeso/items/2381dd4e3283cbed49a0

https://qiita.com/ysgeso/items/847598556d7e49fe2d87

## これまでに作成したモジュール

以下のリンクから、これまでに作成したモジュールを見ることができます。

| リンク | 説明 |
|:–|:–|
| [marubatsu.py](https://github.com/ysgeso/marubatsu/blob/master/113/marubatsu.py) | Marubatsu、Marubatsu_GUI クラスの定義|
| [ai.py](https://github.com/ysgeso/marubatsu/blob/master/113/ai.py) | AI に関する関数 |
| [test.py](https://github.com/ysgeso/marubatsu/blob/master/113/test.py) | テストに関する関数 |
| [util.py]

元記事を表示

Pythonでのオプショナル型の使い方とスクレイピングの実装

# はじめに
Pythonでは、オプショナル型(Optional)を用いることで、関数やメソッドが値を返す or 返さないといったケースを安全に扱うことができます。
スクレイピングのようなデータ取得処理では、取得できるデータが不確定な場合もあります。
そのような場合、オプショナル型を使うとコードの安全性と可読性が向上します。

# オプショナル型とは

Pythonの標準ライブラリ `typing` モジュールには、`Optional` 型が用意されています。
`Optional` は、「値があるかもしれないし、`None` かもしれない」ことを示すための型です。

# 使用例

`Optional` は次のように使用します:

“`python
from typing import Optional

def get_username(user_id: int) -> Optional[str]:
if user_id == 1:
return “JohnDoe”
else:
return None

# 使用例
username =

元記事を表示

OTHERカテゴリの最新記事