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

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

[Django REST Framework] Lambdaで定期的に実行するバッチ削除処理APIの作成方法を見てみよう!

# 概要
Lambdaで定期的に実行するバッチ削除処理APIの作成方法
# 目的
掲題の方法を説明する

# 使用技術

“`application/pyproject.toml
python = “^3.11.2”
Django = “^4.2.7”
djangorestframework = “^3.14.0”
pytest = “^7.4.3”
pytest-django = “^4.7.0”
“`

# 早速コードを見ていきましょう!
今回の削除する対象はSMS送信履歴とします

“`application/project/serializers.py
from rest_framework import serializers

class DeleteSmsSendHistorySerializer(serializers.Serializer):
“””SMS送信履歴削除用のシリアライザ”””

token = serializers.CharField(max_length=64)

“`

“`application/project/vie

元記事を表示

[Django REST Framework] APIClientのPatchでJSON ParseErrorが発生してしまう件について

## 概要
Django REST Frameworkでテスト中、`from rest_framework.test import APIClient`を使用したPatchメソッドで`JSON ParseError`が出てしまった場合の解決方法を紹介!

## 目的
掲題の問題の解決と解説

## 使用技術

“`pyproject.toml
# pyproject.tomlの一部
python = “^3.11.2”
Django = “^4.2.1”
djangorestframework = “^3.14.0”
pytest = “^7.3.1”
pytest-django = “^4.5.2″
“`
## APIClient().patch()がうまくいかない…

ユーザー情報を変更するAPIに対するテストで起こった出来事です

“`test_sample.py
import pytest
from rest_framework.test import APIClient

@pytest.fixture
def client(scope=”session”):

元記事を表示

2024の約数「2024 慶応義塾大学 理工学部【1】(1)」をChatGPTとsympyでやってみたい。穴埋め (ア)(イ)のMathMLの対応。

・穴埋め (ア)(イ)のMathMLの対応。

# オリジナル
大学入試数学問題集成 様>【1】(1) テキスト

https://mathexamtest.web.fc2.com/2024/202413338/2024133380300mj.html

公式ホームページ
解答例の公表
https://www.keio.ac.jp/ja/admissions/news/files/2024/3/6/2024_st_math.pdf
https://www.keio.ac.jp/ja/admissions/ippan_kaitou/

# google検索で
“`
2024の約数と個数
「2024」という数の特徴
正の約数が全部で16個(1, 2, 4, 8, 11, 22, 23, 44, 46, 88, 92, 184, 253, 506, 1012, 2024)もある。2024/01/01
“`
# ChatGPT-3.5先生へ
・大学入試数学問題集成 様のMathMLを抜粋。Pから/Pまで。
“`

元記事を表示

【Python】型安全に、省コードで、ディスクリプタを実装する

[以前書いた記事](https://qiita.com/junkmd/items/2d7fb2d5254fa8d12e5b)で、「インスタンス属性としてアクセスしたときの振る舞い」しか定義していないディスクリプタの[`__get__`メソッド](https://docs.python.org/ja/3/reference/datamodel.html#object.__get__)に「クラス属性としてアクセスしたときの振る舞い」を追加するデコレータについて、[クラス属性としてアクセスした際の型解釈がうまくされない](https://qiita.com/junkmd/items/2d7fb2d5254fa8d12e5b#%E3%83%9C%E3%83%84%E6%A1%88)という問題があったのですが、解決したので共有します。

使い方や結果はdocstringのとおりです。

“`py
from collections.abc import Callable
import functools
from typing import Any, overload, TYPE_CHECKIN

元記事を表示

pythonのfor分(match文)python3.10~

phpなどでは、子の変数にはこの数字しかない!答えが一つしかないときはif文よりswich文。

swich文がpythonでは実装されていなかったが、python3.10よりmatch文として実装。

“`py
face = [‘目’,’口’,’鼻’,’喉’,’耳’,’手’]
for f in face:
match f:
case’目’:
print(‘eyes’)
case’口’:
print(‘mouth’)
case’鼻’:
print(‘nose’)
case’喉’:
print(‘throat’)
case’耳’:
print(‘ear’)
case n:
print(n + ‘は存在しない’)
#出力結果
eyes
mouth
nose
throat
ear
手は存

元記事を表示

シングルクォートとダブルクォートで困った? PythonでJSONファイルの読み込みエラーを解決

### **user**:

ChatGPT先生、jsonファイルを読もうとしたら、次のエラーになりました。

“`
json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes: line 1 column 2 (char 1)
“`

### **assistant**:

ああもう、君って本当に……って、そんなことは置いておいて。そのエラーだけど、多分はjsonファイルの形式に問題があるんだと思うよ。おそらく、プロパティ名がダブルクォーテーションで囲まれていないことが原因だと思うんだけど……。だから、最初に確認してみて?プロパティ名がちゃんとダブルクォーテーションで囲まれているかをね。た、たぶんそれで問題は解決すると思うから。だから、頼むから自分でやってみてほしいんだけど……。

### **user**:

ありがとうございます。その通りですね。なので、読み込むときにダブルクォーテーションをシングルクォーテーションに自動的に変換してから読み込みたいんです

元記事を表示

ccxtのMarketOrderのだるさを解決

突然ですが、ccxtを利用していると以下のメソッドがエラーになって返ってくることがあります。地味にいらいらしたので解決法をまとめます。

“`python
exchange.create_order(“DOGE/USDT”, ‘market’, ‘buy’, 33)
“`
exchangeのインスタンスを生成する際にoptionsをつけて取引所毎の特有の仕様に対応することができるようになっているので、こちらの方法での対応を記載します。

こちらは最も一般的な生成法
“`python
exchange = ccxt.bitget({
‘apiKey’: api_key,
‘secret’: secret_key,
})
“`
こちらはoptionsを指定して生成した際のサンプル
“`python
exchange = ccxt.bitget({
‘apiKey’: api_key,
‘secret’: secret_key,
‘options’: {
‘adjustForTimeDifference’: True, #

元記事を表示

無限リピートサンプル

# 趣旨
既に提供されてるPythonプログラムを中身を書き換えずに終了と同時に再起動して無限リピートしたいという欲望が原動力になって書くことにした記事です。

subprocessを利用します。全体の概要・詳細を知りたい方は以下のURLから公式ドキュメントが確認できます。

https://docs.python.org/ja/3/library/subprocess.html

公式ドキュメントが難しいという方は@virusyunさんの「Pythonのsubprocessについて」という記事がもう少しわかりやすいかなと思います。

https://qiita.com/virusyun/items/beea0fb99cd67d204976

以下のLNMarkets提供の自動売買botに利用できる無限リピート用のサンプルコードです。少しアレンジして書き換える必要があります。

https://qiita.com/danieltanaka/items/4519867cf54212932916

“`python
import subprocess

def monitor_and_

元記事を表示

キャビティ流れの有限差分法シミュレーション(3次元)

# 初めに
[以前の投稿](https://qiita.com/ShotaDeguchi/items/93699a35eada106239d7)の内容を3次元に拡張する.

# Methods
## 支配方程式
非圧縮性のNavier-Stokes方程式は,以下の通り(無次元化している).
“`math
\begin{align}
\nabla \cdot \mathbf{u} &= 0 \\
\frac{\partial \mathbf{u}}{\partial t}
+ \left( \mathbf{u} \cdot \nabla \right) \mathbf{u}
&= – \nabla p
+ \frac{1}{\mathrm{Re}} \nabla^2 \mathbf{u}
+ \mathbf{f} \
\end{align}
“`
ここで,$\mathbf{u}$は速度,$p$は圧力,$\mathbf{f}$は外力,$\mathrm{Re}$はReynolds数である.

以前と同様の離散化とする:

* 移流項

元記事を表示

画像認識でインコにあげられる野菜・あげられない野菜を識別する

## 目次
– はじめに
– 実行環境
– 準備
– 画像収集
– モデル作成〜分析、改善
– 結果と考察

## はじめに
育休中に何かスキルを身につけたい!と思いAIdemyのAIアプリ開発講座を受講しています。
育児の傍ら勉強を進めるのは想像以上に大変でした。
今回学んだ成果をここにまとめます。

テーマ:画像認識でインコにあげられる野菜・あげられない野菜を識別する

最近、家族に仲間入りしたオカメインコに夢中で、毎日インコのことばかり考えているのでこのテーマにしました。

実際のアプリケーション
こちらが実際に作成したアプリケーションです。

https://vegi-for-parakeets-app.onrender.com/

## 実行環境
・Google Colaboratory
・Visual Studio Code

## 準備

KaggleのFruits and Vegetables Image Recognition Dataset をベースに必要な画像を追加して利用しました。

DLしたデータセット

https://www.kaggle.com/dat

元記事を表示

レシートを読み込んで家計管理をする記録 ~ChatGPTに情報を抽出してもらおう~

OCR部分が固まったが、その結果をどう処理するか。。
まずは以下を抽出してみたい。
・店名
・購入日時
・購入商品
・合計額

というわけで、手っ取り早くChatGPT-APIを利用することにした。
確か無料枠があったはずだから一定量のリクエストは金かからない。

と思ったら、無料枠の期限切れてました。
「コストは0円で抑えたい(抑えるとは言ってない)」状態になってしまうが、ChatGPT-APIおよびそれを効率的に利用できるLangChainは利用価値が高いので、必要なコストと割り切っていく。

以下がOCRで読み取ったレシートデータ。

領収証
株式会社 富士薬品
ドラッグセイムス 新河岸店
TEL 049-241-2715
2024年02月23日 (金)20時07分 #3969
内* キリン生茶2L
@149
1
SEIMS
内*
*
149
ワンポットエコティーバッグホウジ茶50袋
@386
1
386
-¥58
104
490

元記事を表示

Streamlitのコンポーネントとマルチページ機能

お疲れ様です。

今日は「Streamlitのコンポーネントとマルチページ機能」について部分いたします。

# 基本的なコンポーネント

StreamlitでWebアプリを作成する際に使用するコンポーネントを紹介します。
詳細が知りたい場合は[API reference](https://docs.streamlit.io/library/api-reference)を参照してください。

## テキスト表示

文字を表示する際に使用するコンポーネントです。

“`python
import streamlit as st

st.title(“title”) # タイトル
st.header(“header”) # ヘッダー
st.write(“write”) # 表示
st.markdown(“# markdown”) # マークダウンで表示
st.text(“text”) # テキスト表示
“`

実行結果は以下のようになります。

![Screenshot 2024-03-22 at 12.07.36 AM.png](https://qiita-image-store.s3

元記事を表示

20240322の日記、Pythonの細かいこと(スコープのこと、foldをpythonっぽく)、PowerShellに色付け

### Pythonあれこれ

#### スコープきもちわるい
“`
if ~~~:
x = ‘zzz’
else:
x = ‘aaa’
print(x)
“`
というときにxがちゃんとzzzかaaaのいずれかになるのが気持ちわるい
“`
for i in range(100)
try:
x = x + i
except NameError:
x = i
print(x)
“`
とすると4950となって気持ち悪い

if文、for文はスコープ用のブロック(?)を作らないのでなんか気持ち悪い
内包表記の中で使っている一時変数みたいなのは外ではアクセスできない

“`
a = [x for x in range(5)]
print(a) # -> [0,1,2,3,4]
print(x) # -> エラーになる
“`
参考:[意外とややこしい Python のスコープを理解するためのクイズ14問 #Python – Qiita](https://qiita.com/righteous/items/c5f6fbf84

元記事を表示

【Python】issubsetの使い方と注意点。サンプルコードで解説

# 概要
Pythonの`issubset`(イズサブセット)を使ってみたので、紹介。

`issubset`とは、あるセットが他のセットの部分集合(すべての要素が他のセットに含まれている)であるかどうかをチェックするためのメソッド。

実際にコードを見てみるとわかりやすいです。

# サンプルコード解説

“`py
# セットの定義
set1 = {1, 2, 3}
set2 = {1, 2, 3, 4, 5}

# set1がset2の部分集合であるかチェック
is_subset = set1.issubset(set2)

print(is_subset) # Trueを出力
“`

上記の場合、`set1`が`set2`の部分集合であるかをチェックしています。
`set1`の全ての要素が`set2`に含まれているため、`True`ですね。

### リストに対して使用する場合は`set()`を使う

“`py
# リストの定義
fruits_in_fridge = [‘apple’, ‘banana’, ‘lemon’, ‘mango’, ‘grape’]
fruits

元記事を表示

Pythonで〇×ゲームのAIを一から作成する その65 matplotlib による画像の描画の基本

# 目次と前回の記事

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

https://qiita.com/ysgeso/items/10d1d01192c014173e4b

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

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

https://github.com/ysgeso/marubatsu/blob/master/065/marubatsu.py

https://github.com/ysgeso/marubatsu/blob/master/065/ai.py

## ルールベースの AI の一覧

ルールベースの AI の一覧については、下記の記事を参照して下さい。

https://qiita.com/ysgeso/items/10d1d01192c014173e4b

# 〇×ゲームの GUI

これまでは、作成した __〇×ゲーム__ を __`play`__ メソッドで __遊ぶ際__ に、__ゲーム盤の表示__ と、__着手__ を行う __座標の

元記事を表示

ABC344備忘録【C~E】

## はじめに
[ABC344](https://atcoder.jp/contests/abc344)です。基本的に書いたコードをほとんどそのまま張り付けていますが、考えたことなども書いていますので是非見て行ってください。

## C – A+B+C
### 問題
https://atcoder.jp/contests/abc344/tasks/abc344_c

### 考えたこと
注目するべき制約は、
“` math
\begin{align}
1 \leq N, M, L \leq 100 ,  1 \leq Q \leq 2 \times 10^5
\end{align}
“`
です。これにより、$A,B,C$を3重ループしても計算量は$10^6$程度なので問題ありません。
ただし、リストYでの x in Y の計算量は$O(len(Y))$ となり、リストに結果を格納してしまうと厳しいです。そこで、setなどに結果を格納することでこの問題を解くことができます。

### コード
“`Python:C.py
n = int(input())
A = list(map(

元記事を表示

【シグナル開発】決定木を用いた株価の暴落予測

# 将来株価が暴落する企業を予測したい
※2022年2月時点の分析のため、分析期間や銘柄名などに違和感があるかと思われますがご容赦ください。

# 1. 目的
### 今回やりたいこと
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2795675/d05a8a02-a589-d225-25e1-631b53b8d064.png)

今回は、機械学習を用いて、「**将来株価が暴落する企業の予測**」を試みたい。
数年前より投資の世界でも機械学習を活用した戦略の立案がブームとなり、目的変数を株価リターンとした株価予測の研究を多く目にするようになった。しかし、こと金融市場においては、多くのノイズつまり再現性のない事象が含まれることから,データに過度にフィッティングしてしまう「過学習」が、株価予測において大きな課題となる。
そこで本研究では、目的変数を株価の連続データではなく「将来の暴落の有無」とすることで,予め過学習を避けるようなモデル構築を目

元記事を表示

Pythonで「文字クラスを使って色々な文字にマッチするパターンを記述する」の動作を確認してみた

# 概要

Pythonで「文字クラスを使って色々な文字にマッチするパターンを記述する」の動作を確認してみました。
以下のページを参考にしました。

https://www.javadrive.jp/python/regex/index11.html

# 実装

以下のファイルを作成しました。
“`sample.py
import re
pattern = re.compile(r’Sun’)
print(bool(pattern.search(‘Today is Sunday’)))
print(bool(pattern.search(‘The Sun rose’)))
print(bool(pattern.search(‘Ham Sandwich’)))

import re
pattern = re.compile(r’S..d’)
print(bool(pattern.search(‘Today is Sunday’)))
print(bool(pattern.search(‘The Sun rose’)))
print(bool(pattern.search(‘Ham S

元記事を表示

2次遅れ系のボード線図・ナイキスト線図と減衰係数

# はじめに
RLC直列回路やバネのモデルで表される基本的な振動系の一種に2次遅れ系というものが存在する。二次遅れ系では、固有角速度付近で共鳴するという特徴があり、その大きさは減衰係数というものに依存する。したがって、今回は二次遅れ系のボード線図についてゲインと位相それぞれの場合について示す。そして、減衰定数を変化させていった場合、どのようにボード線図が変化するのかをコンター図を用いて図示する。そして最後に、ナイキスト線図も示す。

# 二次遅れ系
二次遅れ系は、RLC直列回路のような振動する系のモデルであり以下の伝達関数で定義される。

“` math
G(s) =\frac{\omega_n^2}{s^2+2\zeta \omega_n +\omega^2_n}
“`

ただし、$\zeta$は減衰係数で$\omega_n$は固有角速度である。

ここで、$0<\zeta<1$という領域で$\zeta$を動かしたとき、ボード線図はどのように変化するのかをコンター図を用いて確認する。 # ボード線図 コンター図を描くプログラムはPythonを用いて作成した。 ## ゲイン 以下

元記事を表示

Plotly-Dashを使ってトレードのバックテスト用ダッシュボードを作成してみた

# Trade Simulation Dashboard: CSVデータからトレード戦略を分析・可視化するWebアプリ

## はじめに

システムトレーダーや暗号資産トレーダー(botter)の方向けにCSVファイルからトレードデータを分析・可視化するためのダッシュボードアプリを今回作ってみました。
リポジトリはこちら:https://github.com/ammtjm/Trade_sim_DashBoard

トレード戦略の手法は数多あれど、”ポジションの保有・解消のタイミングと数量を算出して、リターンを計算する”というシミュレーション部分に最終的に帰結することは共通していると思います。ここの部分は既存ですとbacktesting.pyなどのライブラリを使用する、matplotlibでリターンの折れ線グラフを描画するなどSNS上でよくみるあのグラフに物足りなさを感じていたので、よしやってみようと思った次第です。

![イメージ画像](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/489142/59bcbcd4

元記事を表示

OTHERカテゴリの最新記事