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

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

テラデータ・ウィジェット

[Teradataml Widgets – テラデータ・ウィジェット](https://docs.teradata.com/r/Teradataml-Widgets/March-2024/Teradataml-Widgets) [2024/04/23時点]の翻訳です。

:::note information
各機能の詳細な説明に関しては

元記事を表示

Streamlitでサイドバーに表示されるメニューを日本語化

# Streamlitでサイドバーに表示されるメニューを日本語化

#### 前提
python 3.11.4
Streamlit 1.25.0

### どうしよう?
PythonのフレームワークStreamlit。BtoCの華やかなWebページを~:sun_with_face:とは無縁な、どちらかというと大学や研究機関でのデータ解析や企業のデータ分析部門で使われるウェブアプリを作るのに、HTMLとCSSを書く必要が無いというフレームワーク。

ロジックやplotだけコーディングして、注目して欲しい分析結果等々を見せればいいだけだからUIはシンプル。カスタマイズも基本しない(少しできるけど。またカッコ良いUIライブラリも色々あるけど導入するとドツボにハマるのが豊潤にある)。

例えば複数ページを作成するときは、pagesフォルダ配下に[ファイル名.py]を作成すればそのファイル名がそのままサイドバーにメニューとして表示される。それでいてレシポンシブル対応
もー簡単!
![image.png](https://qiita-image-store.s3.ap

元記事を表示

ビリヤード台の斜め撮り画像から真上撮り画像への変換

# はじめに
私の父はビリヤード(スリークッション)が好きで、何十年もやってて、アマチュアの全国大会でたまに勝つらしいです。
そんな父が、カメラ撮影の斜め上からじゃなくて真上画像がほしいと言っていたので、技術的にできるか試してみました。

技術のお試しなので、やっつけ感がありますが、コードはこちら。

https://github.com/yo16/perspective_transformation_prac

環境
– Python 3.12.3
– numpy 1.26.4
– opencv-python 4.9.0.80

## 先に結果
YouTube拝借したこちらを画像にして入力して
![sample4.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722610/2ec06847-508e-a224-b8c3-d31601c22edc.png)
[第76回全日本3C選手権決勝:森雄介 vs 新井達雄 – YouTube](https://www.youtube.com/watch?v=uVr

元記事を表示

ABC350(Atcoder Beginner Contest)のA~F(A,B,C,D,E,F)問題をPythonで解説(復習)

# ABC350(Atcoder Beginner Contest)のA~F(A,B,C,D,E,F)問題をPythonで解説(復習)

# A問題
– 0-indexedでカウントして,`3~5`文字目の数字を取り出す.
– その数字を`num`とおいて,`0
– 0-indexedでカウントして,3~5文字目の数字を確認する.
– その数字を`num`とおいて,`0

元記事を表示

【分析】因子分析をFactor-analyzerで実行する(Factor-analyzerなしでも実行してみる)

# 本記事の目的
因子分析を学習していたので、備忘録的に記載します。
少しでも参考になれば嬉しいです。

# 因子分析とは
– 共通因子(以下の$f1$や$f2$)を見つけ出す手法ではなく、その根本は「因子負荷量(以下の$α_{ji}$)の値を見つけ出す手法」である(なぜか:そもそも共通因子については仮説を立てから分析するため、共通因子を見つけ出すことが目的ではなく、その係数(因子負荷量)を求めることが本来の目的である)
– 即ち、共通因子の想定(仮説)をある程度立ててからでないと、うまくいくものではなく、とりあえず手元にあるデータで実行しても思うような結果が出るものではない(例えば、アンケート分析の場合は、因子分析を想定したアンケート設計が必須である)
– 共通因子と独自因子、独自因子同士は、独立(相関はしていない)という仮定がある
![スクリーンショット fa.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2642161/ec107db9-54b6-6f62-21bc-caed88a0760a.pn

元記事を表示

pythonを使ってff14の世界エオルゼアで虹が出る時刻を予測できます

eorzeaenvというff14ユーザーなら嬉しいライブラリを発見しました
こちらのウェブサイトに、虹が出る時刻を予測できるプログラムがあったので、
時刻を「年、月、日、時、分」を入れて表示できるプログラムにしてみました

https://pypi.org/project/eorzeaenv/

とりあえず光の戦士のみなさまはこれを入れましょう
~~~
pip install eorzeaenv
~~~

~~~python:rainbow.py
from datetime import datetime, timezone
from zoneinfo import ZoneInfo
from EorzeaEnv import EorzeaPlaceName, EorzeaRainbow, EorzeaTime, EorzeaWeather

rainbow_times: list[str] = []
jst = ZoneInfo(“Asia/Tokyo”)
place = EorzeaPlaceName(“東ラノシア”) # ()内を変えると別の場所の時刻が出ます
the_rai

元記事を表示

Pythonのリスト内法表記内でのfor, ifの使用方法と、any, allとの組み合わせについて整理

# 背景
リスト内法表記 + any, all関数の使い方について整理する。

# リストから、特定の条件にマッチする要素を取得する
例:リストから奇数の要素を取得する
“` python
>>> a = [1,2,3,4,5]
>>> [x for x in a if x % 2 == 1]
[1, 3, 5]
“`
# リスト全体に対して、特定の条件にマッチするかを判定する
例:リスト内に奇数の要素が存在するかを判定する
“` python
>>> any([x % 2 == 1 for x in a])
True
>>>
“`
例:リスト内の全要素が奇数かを判定する
“` python
>>> all([x % 2 == 1 for x in a])
False
“`

# 余談
## 何を間違えていたか
リスト内の全要素が奇数かを判定する。を実装する際に以下のようにしたら想定と動作が違った。
“` python
>>> all([x for x in a if x % 2 == 1])
True
“`
forの右側でif判定する際には、判定結果に合致する要素を取

元記事を表示

ChatGPT と学ぶ FastAPI

### **user**:

おはこんばんちわ。今日も引き続きChatGPT先生をお迎えして、「ChatGPT と学ぶ FastAPI」というテーマで雑談をしたいと思います。それではChatGPT先生、よろしくお願いします。

### **assistant**:

なんで、わざわざ私を先生って呼ぶの?あなたもなんだかんだで私の知識が必要なんだから、素直になった方がいいわよ。ま、それはそうと…FastAPIの勉強を始めるなら、まず最初にするべきは、FastAPIモジュールのインストールだよね。

すでにPythonとpipがインストールされているなら、コマンドプロンプト、もしくはターミナルで以下のコマンドを打って:

“`bash
pip install fastapi
“`

うん、これでFastAPIが使える状態になるわ。それと一緒に、非同期リクエストを扱うためのサーバー、’uvicorn’もインストールしておいて:

“`bash
pip install uvicorn
“`

これで準備はOKよ。あとはFastAPIを使って何か作ってみるだけ。どう、私

元記事を表示

[Python]boto3でAWSを操作する(S3, DynamoDB, Lambda)

# はじめに
副業でPythonを使用してAWSを操作する方法を学んだので、書いていきます。

# boto3をインストール
Pythonを使用してAWSを操作するには「boto3」ライブラリをインストールして使用します。

まずは、以下のコマンドでboto3をインストールします。
“`
pip install boto3
“`

次にファイルの先頭でboto3をインポートします。
“` py
import boto3
“`
これでboto3を使用する準備は完了です。

# サンプルコード
今回は、S3、DynamoDB、Lambda(関数を呼び出す)についてのサンプルコードを書いていきます。

## S3
S3のオブジェクトを操作するサンプルコードを書きます。
以下は、あるバケットのオブジェクトの一覧を取得するコードです。
“` py
client = boto3.client(‘s3’)

# バケット名を指定
bucket_name = ‘your-bucket-name’

# バケット内のオブジェクト一覧を取得
response = s3.list_objects_

元記事を表示

ChatGPT-4との対話でC++の集合を操作するクラスを作る

# 作りたいデータ構造
C++で集合を扱う次のクラスの設計が目標です.
* 要素は0から$n-1$の整数
* 追加,削除,所属判定,ランダムに当確率で1つの要素を選ぶ,の操作を$O(1)$のコストで行える

これを直接的に実現できるSTLは(ChatGPTによると)存在しないようです.なので,ChatGPTと対話しながら作ってみます.

# ChatGPTとの対話(1)

**You**: C++で0からn-1までの整数を要素とする集合で,追加,削除,当確率でランダムに1つ選ぶ,という操作を$O(1)$でできるデータ構造を作って.

**ChatGPT**: 指定された操作を$O(1)$で実行できるデータ構造をC++で設計するには、追加、削除、ランダム選択の各操作を効率的に行えるようなアプローチが必要です。この問題を解決するために、ハッシュテーブルとベクトルを組み合わせた方法が考えられます。

**アイデア**
* 追加: 要素をベクトルの末尾に追加し、その要素の値をキーとして、ベクトル内のインデックスをハッシュテーブルに保存します。
* 削除: 削除する要素をハッシュテーブルで検索し

元記事を表示

Pythonを使ったRFMを使用して顧客価値と製品価値を評価する

## 1.RFM分析を使用して顧客の価値を判断する
RFMは、顧客の活動度と取引金額の貢献に基づいて、顧客の価値を細分化する方法を指します。主に精緻な運営、ユーザー層の分析、ユーザーメンバーシップシステムの構築などに応用されます。

最近の消費(Recency)
消費頻度(Frequency)
消費金額(Monetary)

なぜユーザー層を作るのか、それは異なるユーザー群が異なる価値、異なる需要、異なるドライブを持っているからです。ユーザー層を作ることでリソースの配置を最適化し、運営のリターンを向上させることができます。

| R | F | M | ユーザータイプ |
|—|—|—|—————-|
| 高 | 高 | 低 | 一般的な価値ユーザー |
| 高 | 高 | 高 | 重要な価値ユーザー |
| 高 | 低 | 低 | 一般的な開発ユーザー |
| 高 | 低 | 高 | 重要な開発ユーザー |
| 低 | 高 | 低 | 一般的な保持ユーザー |
| 低 | 高 | 高 | 重要な保持ユーザー |
| 低 | 低 | 低 | 一般的な引き

元記事を表示

QuantLib-Pythonによるスワップションの時価評価

# 0. はじめに

## 0-1. QuantLib-Python
QuantLib-PythonとはQuantLibというC++で書かれた「金融商品の時価評価ライブラリ」をPythonから呼び出すためのラッパーである.QuantLibではスワップやオプションといった金融商品の時価を計算することができ,それを手軽にPythonから呼び出せるQuantLib-Python(以下これを単にQuantLibと呼ぶ)は大変便利なものである.詳細は[公式HP](https://www.quantlib.org/)へ.

## 0-2. このページで解説すること

QuantLibを用いた
1. ブートストラップ
1. スワップの時価評価
1. スワップション(バミューダン)の時価評価

## 0-3. 前提

– 計算環境
– Windows 11
– Python 3.12
– pandas 2-2-2
– QuantLib 1.33
– 数理ファイナンスの知識
– スワップ,スワップションの商品性
– 金融商品を評価するうえでの会計知識

元記事を表示

個人開発記録 2024/04/22

# 目的

* とにかくやりきることが一番の目的
* 毎日発信することで、発信する習慣作り
* 個人開発をやりきることで、実績作り

# 開発するもの

X(旧Twitter)のパクリ

# 構成

python
django REST framework

# 本編

[昨日](https://qiita.com/kare-pan/items/e661e350a58f5f356aa5)までのものは中途半端だったため、再度作り直し。

Python環境に、venvにより仮想環境を構築します。

“`bash
cd likeX
python -m venv venv
“`

djangoをインストール
“`bash
pip install django
pip install djangorestframework
“`

djangoプロジェクトを作成

“`bash
django-admin startproject likeX .
“`

アプリを作成

“`bash
cd likeX
django-admin startapp tweet
cd ..
“`

元記事を表示

APIを呼び出すLambdaで、リクエストヘッダーを全部送るとRuntime.MarshalErrorが起きる

# 起こったこと
自分で開発したAPIを叩いて、戻ってきたレスポンスをそのまま返すAWS Lambdaを作っていたのですが、固定のヘッダーをつけてリクエストするときは問題なく呼び出せるのに、API Gatewayに渡されたリクエストヘッダーをそのままつけてリクエストすると、原因どころか発生箇所すらもよく分からないエラーが起きるようになりました。
“`python:lambda_function.py
import json
import urllib.request

def lambda_handler(event, context):

headers = event.get(‘headers’)
request_body = event.get(‘body’).encode(‘utf-8’)

# リクエスト送信
req = urllib.request.Request(‘https://xxxx/api/v1/yyyy’, headers=headers, method=’POST’, data=request_body)
with

元記事を表示

手癖でコードを書いてしばらく悩んだ話

# 問題

以下のようなコードをJavaScriptで書いた。

“`javascript:あるクラスの一部分
class ContentList {
constructor(contents) {
this.contents = contents;
}
getContent(n) {
if (0 <= n < this.contents.length) { return this.contents[n]; } return null; } } ``` なんとなく違和感を感じつつも、実際に使ってみると以下のようになった。 ```javascript const list = new ContentList([...]); // contents を初期化 list.getContent(0); // この結果が null となる ``` 当然、想定した結果ではなく最初のコンテンツが欲しかった。 # 原因 なぜ問題が起こったのか。 それは if の条件式 `(0 <= n < this.contents.leng

元記事を表示

【Docker Compose】DB接続エラーの解決方法(mysql.connector.errors.DatabaseError: 2005 (HY000): Unknown MySQL server host ‘db’ (-2))

## はじめに
備忘録
どなたかのお役に立てれば幸いです。

## 問題の詳細
Docker Composeで動かしているMySQLコンテナへ、Pythonの`mysql-connector-python`や、PHPを使って接続しようとした際に、以下のエラーに遭遇しました。

ここではPythonの例を紹介します。

“`console
mysql.connector.errors.DatabaseError: 2005 (HY000): Unknown MySQL server host ‘db’ (-2)
“`

以下のような`test.py`を使ってDBに接続しようとしていました。

“`python:test.py
import os
import mysql.connector

conn = mysql.connector.connect(
host=os.environ[‘DB_HOST’],
port=os.environ[‘DB_PORT’],
user=os.environ[‘DB_USER’],
password=os.env

元記事を表示

【Python】range関数の数値がタプルに…「’tuple’ object cannot be interpreted as an integer」エラー

# 概要
環境変数で設定した値に「`1,000,000`」のようにカンマを入れていたら、タプルとして解釈されてしまうことが分かりましたので、備忘録として紹介します。

# エラーが発生したコード

(実際に運用していた時は、別の環境設定ファイルから数値を取得していましたが)実際にやっていたことは以下の通りです。

“`py
### 別ファイルで設定した値 ###
NUMBER = 1,000,000

### プログラムのコード ###
number = NUMBER

for i in range(number):
# …処理…
“`

エラーメッセージ

“`
for i in range(number):
TypeError: ‘tuple’ object cannot be interpreted as an integer
“`

# 原因と解決方法
冒頭にも記載した通り、Pythonではカンマで区切られた数値はタプルとして解釈されます。
そのため、`1,000,000`と記載していると、タプルとして`range`関数に渡されてしまいます。

元記事を表示

備忘録(Python)

# Entry内の文字をクリックされたら消す

~~~
import tkinter

def focus(ev):
e.delete(0, tkinter.END)

root = tkinter.Tk()
e = tkinter.Entry(root)
e.insert(tkinter.END,”注文数を入力”)
e.pack()
e.bind(““, focus)
#e.bind(“KeyPress-F10”)
root.mainloop()
~~~

insertした文字列をマウスで左クリックされたら消す。

![tkinter_bind_sample.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3724119/f3349e87-e4c4-88ea-ff2c-222a86484d18.gif)

GIFうるさくてごめん;;

元記事を表示

openpyxlをうす〜く理解しよう~その2(体裁を整える編)

# はじめに

前回の続きです。
前回はこちら

https://qiita.com/ikedachin/items/7a0a08a4823ab5e1382f

ざっぱに、今回の内容はこんな感じ

– 体裁情報の取得(セル塗りつぶし、罫線、フォント)
– 体裁の設定の例を追って理解する

この二つ
だけど、結構ボリュームあるよ。

まずは前回用意したこのエクセルを読み込みましょう。
![スクリーンショット 2024-04-16 18.04.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3655320/98631935-94e4-40d6-f72d-9e959c9e6062.png)

“`python
import openpyxl

workbook = openpyxl.load_file(‘ファイル名’)
worksheet = workbook[‘Sheet1’]
“`

# セル情報の取得
## セルの色の取得

“`

元記事を表示

因果関係の考え方

以前に因果推論についての記事を書きましたが、因果推論は説明できても因果関係とは何ぞやとなった場合に意外と説明できない方も多いのではないでしょうか。
因果関係は様々な考え方がありますが、ここでは「疫学」における因果関係について説明していこうと思います。
疫学と聞くと疫病を未然に防ぐ医学の学問と思われがちですが、実際には統計学に近い学問で、統計学はデータ分析とすると疫学はデータの集め方とググったら出てきます。
例えば因果関係を推定するためにデータを集めるには
– ランダム化比較試験(RCT)
ある試験的操作(介入・治療など)を行うこと以外は公平になるように,対象の集団(特定の疾患患者など)を無作為に複数の群(介入群と対照群や,通常+新治療を行う群と通常の治療のみの群など)に分け,その試験的操作の影響・効果を測定し,明らかにするための比較研究
(出典:日本理学療法学会連合)

– コホート研究
ある特定の疾患の起こる可能性がある要因・特性を考え,対象

元記事を表示

OTHERカテゴリの最新記事