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

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

NeurIPS 2024上位解法まとめ

# はじめに
初めて真面目に取り組んだKaggleコンペの上位解法を復習がてらまとめます。

# 1. 参加したコンペ
NeurIPS 2024 – Predict New Medicines with BELKA Predict small molecule-protein interactions using the Big Encoded Library for Chemical Assessment (BELKA)

https://www.kaggle.com/competitions/leash-BELKA

SMILESという文字列形式で表された化合物が特定のタンパク質3種類に反応するかどうか予測するテーブルコンペです。

# 2. データセット
コンペで与えられたデータの概要をさらっと紹介します。詳しくは本家のHPをご覧ください。
## 2.1 構造
至ってシンプルで、id + smiles + protein nameだけです。学習データは3億行、テストデータは250万行ほどです。Kaggle Notebook上でtrain.csvを全部読み込もうとすると行が多すぎて

元記事を表示

【QuantLib-Python】金利スワップの評価と検証

# 0. はじめに

## 0-1. この記事を読めば

– わかる
– TIBORスワップの商品性
– そもそもTIBORとは
– TIBORスワップの評価(手計算)
– TIBORスワップの評価(QuantLib-Python)
– **QuantLib-Pythonによる評価の検証**
– わからない(書ききれなかったこと)
– スワップの歴史
– 中央清算機関での清算の詳細
– ヘッジ会計など

## 0-2. 誰のための記事か

マーケット部門の従事者で1~2年目の方を読者として想定している.マルチンゲール・アプローチについて知っていると詳細な議論が終えるようになっている.マルチンゲール・アプローチの参考文献としては[村上](https://www.kindaikagaku.co.jp/book_list/detail/9784764904804/ “外部サイトへ”)が挙げられる.

## 0-3. 金利スワップとは

スワップについては以下のような説明がある[^1].
[^1]: スワップ取引のすべて pp.

元記事を表示

NiceGUIを使ったPython GUI アプリの作成と配布

Pythonで作成したツールの公開・配布を考えた場合にベストな開発構成は何かを考えた次第です。
言語はやはりライブラリが豊富なPythonがよい。GUIはやはり必要なのでGUIフレームワークを利用します。
`Streamlit` `Flet` `NiceGUI` などを検討しましたが、ネイティブアプリ化がしやすく、UIのカスタマイズも容易な `NiceGUI` がベストでした。

## 準備

ryeを導入しておきます。

https://rye.astral.sh/

以降のステップは Windows環境 を想定しています。最終的にアプリのexeファイルを作るからですが、どのような環境でもほぼ同じ手順だと思います。

## 1.プロジェクトを作る

rye で project を作ります。名前は適当。

“`powershell
❯ mkdir niceapp-hoge
❯ cd .\niceapp-hoge\
❯ rye init –script
“`

必要な依存関係を追加してsyncする。

“`powershell
❯ rye add nicegui pywebv

元記事を表示

物価資料のコード一覧PDFをCSVに変換してみた

工事積算するときに物価資料の平均値から材料の単価を採用しているけど、いちいち検索するのが面倒くさいので、自動化したい。その前段階として、両調査会が公表しているコード一覧をCSVに変換してみた。(最初からcsvで公表してくれると楽なんですがね)

## 建設物価
収録品目リスト(コードブック)「建設物価4編」のPDFをCSVに変換。

単価データファイル

## 積算資料
建設物価の方とざっくり順番が似ている、コード表(分類順)のPDFを使用。

https://www.zai-keicho.or.jp/zk/sample/ecb/

# コード
pyMupdfを使用
## 建設物価
“`python
import fitz
import pandas as pd
import requests
from tqdm import tqdm

pdf_path = ‘local-kensetsu.pdf’
csv_path = ‘kensetsu-bukka.csv’

data = [

元記事を表示

PWM変調のプログラム

https://jp.mathworks.com/discovery/pulse-width-modulation.html

http://energychord.com/children/energy/pe/inv/contents/inv_pwm_tri.html

“`py
import numpy as np
import matplotlib.pyplot as plt

# PWM parameters
frequency = 50 # Hz
period = 1 / frequency # seconds
sampling_rate = 10000 # samples per second
t = np.linspace(0, 2 * period, int(sampling_rate * 2 * period), endpoint=False) # Time array

# Create a sawtooth wave (carrier signal)

元記事を表示

何日前の日付をPythonで調べる

# 今日の○日前はいつ?

“何日前” という情報から、それが何月何日なのかをPythonで調べてみた。
Excelの方が早いじゃん、とか言わないでください。コマンドラインで起動できるPythonを使えばExcelの起動を待っている間に答えが出る!かな?(笑)

対話モードを起動して、
“`python
Python 3.12.4 (tags/v3.12.4:8e8a4ba, Jun 6 2024, 19:30:16) [MSC v.1940 64 bit (AMD64)] on win32
Type “help”, “copyright”, “credits” or “license” for more information.
>>> import datetime
>>> t = datetime.datetime.today()
>>> t
datetime.datetime(2024, 7, 15, 12, 14, 35, 98633)
>>> t – datetime.timedelta(days=15)
datetime.datetime(2024, 6, 30, 1

元記事を表示

【Python】ImportError: libGL.so.1: cannot open shared object file

docker container上でOpenCVを使用したときに発生。
“`ImportError: libGL.so.1: cannot open shared object file“`

## 解決策
“`bash
apt -y update && apt -y upgrade
apt -y install libopencv-dev
“`

元記事を表示

Seeed XIAO BLE IoT センサーデータをThingsSpeakにアップロード

![tp02.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1015969/1cf26d96-579d-aa55-3414-7f231b0955ba.jpeg)

# はじめに

[前回製作したBLE IoTセンサー](https://qiita.com/DeviceManager/items/e237b421d8ec92bca8b2)のデータを、ラズパイで取得して[ThinkgsSpeak](https://thingspeak.com/)にアップロードする簡単なゲートウエイプログラムを作成しました。

# 事前準備

[ThinkgsSpeak](https://thingspeak.com/)にアカウント作成を行います。無料で利用できる範囲で利用します。チャネルを作成しておき、以下のようにデータフィールドを設定します。

![キャプションを入力できます](https://camo.elchika.com/bac8bb11d4cf9df715f5f85136d85b2beefb274a/68747

元記事を表示

SAR Handbook[Chp3-5]を写経し、難しい単語を使わず意訳してみた

# はじめに
本記事シリーズではSERVIRが以下のサイトで公開している「SAR Handbook」を写経し、理解を深めることを目的としています。
https://servirglobal.net/resources/sar-handbook
もともとのサイトや資料は英語にて記載されているので、翻訳しつつコード理解をしていきます。

以下の記事の続きで、本記事ではChapter3のPart5について記載します。
https://qiita.com/oz_oz/items/0238dd7922fe381d7976

# CHAPTER3
## Using SAR Data for Mapping Deforestation and Forest Degradation
Chp3の説明資料は以下にあります。
https://gis1.servirglobal.net/TrainingMaterials/SAR/Ch3-Content.pdf
Chp3では主にSARによる森林監視について触れており、Sentinel-1などのSARミッションの登場により、適切な前処理と変化検出手法を用いること

元記事を表示

Pythonの recv と recvfrom の違い

### `recv`の概要
– **用途**: `recv`は主にTCPソケットで使用する。
– **機能**: データを受信するが、送信元のアドレス情報は取得しない。
– **構文**: `recv(bufsize[, flags])`
– `bufsize`: 受信するデータの最大バイト数。
– `flags`: オプションのフラグ(省略可能)。
– **特徴**: 接続指向プロトコル(TCP)を使っているため、接続が確立された相手からのデータを受信する。

“`python
import socket

# ソケット作成
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((‘example.com’, 80))

# データ受信
data = s.recv(1024)
print(‘Received’, repr(data))
s.close()
“`

### `recvfrom`の概要
– **用途**: `recvfrom`は主にUDPソケットで使用する。
– **機能**: データを

元記事を表示

Qiita APIを用いて投稿マラソン中の自分の記事ランキングをまとめる

## 経緯

投稿マラソンで、これまで期間中は毎日1つ記事を公開してきましたが、「いいね」がつく記事とそうでない記事は、自分自身の熱量や予測通りにならないことのほうが多いです。

これまで投稿マラソン期間中に公開した記事を「いいね」数の降順で確認して振り返りたいなと思いました。
この目的のためにQiita APIを初めて利用してみました。

## 実装

“`python
import requests
from datetime import datetime, timezone, timedelta

QIITA_API_ENDPOINT = “https://qiita.com/api/v2”

# https://qiita.com/maiamea/items/680cca06f7825595cba0
# などを参考にしてアクセストークンを発行し、下記を差し替え
ACCESS_TOKEN = “PLEASE_INPUT_ACCESS_TOKEN”

headers = {
“Authorization”: f”Bearer {ACCESS_TOKEN}”
}

# 対

元記事を表示

IoT百葉箱プロジェクト第2弾

## プロジェクト概要
私の趣味の一つである気象観測に関するプロジェクトです。
ラズベリーパイと温度、湿度、気圧が図れるセンサーBME280を接続して、観測データを毎時00分と30分にTweetしてます。
[X(Twitter)](https://x.com/weathertakz2001)

第1弾はこちら↓
https://qiita.com/takz2001/items/c544dc04e08f852dfa64

第2弾の今回はラスパイカメラを接続して、空の写真を撮影して、Tweerに載せました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/587072/559a4272-0380-6b8d-c794-28610a1ff2ee.png)

## カメラについて
本来はベランダ設置の百葉箱にカメラを設置したいのですが、地べたに置いているのでいい高さからの写真がとれません。ベランダの柵が画角に入ってしまうんですよね。
百葉箱の定義をなしていませんがw

## 百葉箱の定義
“地上か

元記事を表示

Python NumPyを活用したバッチデータの数値計算高速化テクニック

## はじめに

大量のデータを扱うデータサイエンスや機械学習の分野では、効率的な数値計算が非常に重要です。Pythonの標準ライブラリだけでは処理速度に限界がありますが、NumPyを活用することで驚くほど計算速度を向上させることができます。この記事では、NumPyを使ってバッチデータの数値計算を高速化するテクニックをいくつか紹介します。

“`mermaid
graph LR
A[NumPyを活用した
バッチデータの
数値計算高速化
テクニック]

A –> B[ベクトル化演算]
B –> B1[ループ不要]
B –> B2[配列全体に対する演算]

A –> C[ブロードキャスティング]
C –> C1[異なる形状の
配列間で演算]
C –> C2[小さい配列を自動拡張]

A –> D[高度な索引操作]
D –> D1[複雑なデータ操作]
D –> D2[条件付き
フィルタリング]

A –> E[ユニバーサル関数
ufunc]

元記事を表示

Python Pandasを使った大規模CSVファイルの高速処理方法

## はじめに
こんにちは!今回は、Pythonの人気データ処理ライブラリであるPandasを使って、大規模CSVファイルを効率的に処理する方法をご紹介します。大量のデータを扱う際、メモリ使用量や処理速度が問題になることがありますが、適切な手法を用いることでこれらの課題を克服できます。

## 目次
1. [チャンクを使った読み込み](#チャンクを使った読み込み)
2. [データ型の最適化](#データ型の最適化)
3. [不要な列の削除](#不要な列の削除)
4. [並列処理の活用](#並列処理の活用)
5. [CSV書き出しの最適化](#CSV書き出しの最適化)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2648069/8d216b23-52c4-876a-9691-feafb724d7b7.png)

## チャンクを使った読み込み

大規模なCSVファイルを一度に読み込むとメモリ不足になる可能性があります。Pandasの`read_csv`関数の`chunksize`パラメー

元記事を表示

システムアーキテクチャ7種の比較

## 1. はじめに
このドキュメントでは、Slack botアプリケーションを題材に、さまざまなシステムアーキテクチャを比較します。比較対象のアーキテクチャは以下の通りです。

– MVC(Model-View-Controller)
– MVP (Model-View-Presenter)
– Layered Architecture
– Hexagonal Architecture (Ports & Adapters)
– Clean Architecture
– Onion Architecture
– アーキテクチャなし (必要最小限のモジュールのみを実装)

各アーキテクチャの特徴を説明し、Pythonを用いてSlack botアプリケーションを実装する際の構成例を示します。

## 2. Slack botアプリケーションの概要
今回比較に用いるSlack botアプリケーションは、以下の機能を持つシンプルなものとします。

– ユーザーからのメッセージを受信し、応答を返す
– 特定のコマンドに反応し、対応する処理を実行する
– Google Cloudのサービス(例:C

元記事を表示

Jupyter・Colabでバックエンドフレームワークを実行するメモ

## 概要

Jupyterのコードセルでバックエンドフレームワークのコードを書いて、できるだけJupyter内で動作確認できるように試行錯誤したメモ。

## 成果物

Colabで実行できるようにしました

https://colab.research.google.com/github/uniras/flasktest/blob/main/flasktest.ipynb

## 技術メモ

### ColabでサーバーにアクセスできるようにURLを取得

ローカルのJupyterの場合はlocalhostで起動したサーバーに接続できますが、Colabではそうはいかないのでサーバーに接続するためのURLを取得する必要があります。

Colabでは`google.colab.kernel.proxyPort`というJavaScript APIでポートを指定すればそのポートで立てたサーバーにアクセスするためのURLが取得できます。

“`python
# ColabのサーバーURLを取得(Colab以外の環境ではローカルホストを返す)

server_port = 5000 # ポ

元記事を表示

Jupyter・Colabのコードセルでテストするメモ

## 概要

Jupyter/ColabのPythonコードセルで標準のdoctestやunittestが動かせたのでメモとして残しておく。

## doctest

一般的にはメソッド内にdoctestを記述して`doctest.testmod()`を呼び出すことでテストを実行する仕組みですが、コードセル内でも同様のコードでテストすることができます。`vervose=True`を渡すとテストが成功した場合でも何をテストをしたのわかるので渡すようにしています。(Falseだと成功した場合は何も出力しません)

“`python
def add(a, b):
“””
>>> add(1, 2)
3
“””

return a + b

if __name__ == “__main__”:
import doctest
doctest.testmod(verbose=True)
“`

関数内にテストコードを書かずに別のセルに書く事もできます。一般的には別ファイルにテストコードを書いて`doctest.testfile()`で読

元記事を表示

Pythonのデコレータってどう実装するん?ってことでフレームワーク的な実装を試してみた

## はじめに

最近はあまり触れていないが、PythonでDiscordのBOTを作成しようとすると、discord.pyやPycordのようなライブラリを使うのが一般的と思う。
その中でよく使われる構文の中に`@bot.command`のような構文を目にすることだろう。

これは**デコレータ**と呼ばれる構文なのだが、私は中身の構造は関数型引数を実装した関数のような感じなんだろうなと予想はしながらも、なんとなしで利用していた。
そんなわけで、調べていきながら便利な使い方なんかを探してみる。

## そもそもどういう構文?

`Pycord`のサンプルコードを見てみよう。
一番シンプルなBOTはこれだけで実装可能だ。

“`py
import discord
from discord.ext import commands

intents = discord.Intents.default()
intents.members = True
intents.message_content = True

bot = commands.Bot(
command_prefix

元記事を表示

HTMLファイルを統合してDeepLで翻訳し、その後元のディレクトリ構造に分割する方法

大量のHTMLファイルをDeepLで翻訳する際に、ファイルのアップロード回数制限を回避するための方法を紹介します。
この手法を使用することで、ディレクトリ階層が分かれている大量のHTMLファイルを一つのファイルに統合し、DeepLで翻訳した後、再度元の構造に戻すことができます。スクリプトを利用して、手動での作業を最小限に抑え、効率的に翻訳作業を行う事が出来ます。

## 手順

### 1. HTMLファイルの統合

ディレクトリ階層を保持しながら、全てのHTMLファイルを一つの大きなファイルに統合します。統合されたファイル内に、元のファイルパスを示す特別な識別子を挿入します。

#### 統合スクリプト

以下のPythonスクリプトを使用して、HTMLファイルを統合します。読み込み元ディレクトリと出力ファイルを引数として指定します。

“`python
# combine_html.py
import os
import argparse

def combine_html_files(directory, outfile):
for root, _, files in

元記事を表示

指数分布とポアソン分布の関係を数式から確認する

# 指数分布とポアソン分布の関係を数式で確認

## はじめに

確率論や統計学を学ぶ上で、指数分布とポアソン分布は非常に重要な役割を果たします。特に待ち時間分布や到着イベントのモデル化に使われるこれらの分布は、特定の条件下で密接な関係を持っています。本記事では、この関係を数学的に証明し、具体例を用いて理解を深めたいと思います。

応用例については、

https://qiita.com/yamadasuzaku/items/b835f50b37f681e27b0c

で紹介しています。

## 基本概念の定義

### 確率密度関数(PDF)
確率密度関数(Probability Density Function, PDF)は、連続確率変数の値が特定の範囲にある確率を記述する関数です。PDF $ f(x) $ は次の条件を満たします:
1. $ f(x) \geq 0 $ for all $ x $
2. $ \int_{-\infty}^{\infty} f(x) dx = 1 $

### 確率質量関数(PMF)
確率質量関数(Probability Mass Function,

元記事を表示

OTHERカテゴリの最新記事