- 1. データベースパフォーマンスを最適化するコネクションプーリングとは
- 2. Djangoの裏側ではなにがおこっているのか?
- 3. 【Python】LINE Notifyの手引き
- 4. キュー滞留の監視メモ
- 5. 【Kaggle】自動車保険の2項分類コンペに挑戦
- 6. Terraformを使ったLambda関数のコンテナイメージ構築
- 7. FastAPIのテストをしっかり書いてみる
- 8. pygameでマインスイーパーを作った
- 9. 画像認識関係のサンプルをモジュールとして改造する
- 10. Poetryで管理しているプロジェクトの名前を変えたら、`poetry run mypy`を実行したときに”Command not found”というエラーが発生した
- 11. ubuntu22.04を24.04に変更したら、`pip`のインストールに失敗した
- 12. python備忘録~DataFrameのindexについて~
- 13. 巨大なネットワークを単位を区切って分析する
- 14. Djangoでカスタムコマンドを作成する
- 15. ベータを計算しbokehでグラフを作成する
- 16. 【Python】Excelのセル結合
- 17. Pythonを使って、指定したフォルダ以下の重複ファイルをチェックする
- 18. Pythonではじめる因果推論と気を付けるべきバイアスについて
- 19. 【Kaggle】メルカリ価格提案コンペの最多得票数コードを解説
- 20. Pythonで〇×ゲームのAIを一から作成する その99 深さ優先アルゴリズムによるゲーム木の生成
データベースパフォーマンスを最適化するコネクションプーリングとは
# データベースのコネクションプーリングについて
## 1. コネクションプーリングの概要
コネクションプーリングは、データベースとの接続(コネクション)を効率的に管理するための技術です。データベースへの接続はコストが高く、頻繁に作成・破棄するとパフォーマンスに影響を与えます。コネクションプーリングでは、一度作成したコネクションを再利用することで、接続のオーバーヘッドを削減し、アプリケーションのパフォーマンスを向上させます。## 2. コネクションプーリングのメリット、デメリット
### メリット:
* パフォーマンス向上: コネクションの作成と破棄にかかる時間とリソースを節約。
* スケーラビリティの向上: 多くのリクエストを効率的に処理できる。
* リソース管理: データベースサーバーへの負荷を軽減し、安定性を向上させる。### デメリット:
* 設定の複雑さ: 正しいプールサイズの設定や管理が必要。
* メモリ使用量: 使用されていないコネクションがメモリを消費する可能性。
* デッドロックのリスク: 不適切な使用でデッドロックが発生することがある。## 3. O
Djangoの裏側ではなにがおこっているのか?
:::note info
インフォメーション
本記事は独自で勉強した内容のアウトプットになります。
:::どうも初めましてエンジニアを目指して勉強中のsteveです。
Djangoを勉強して約二か月経過したので、ここでは,Djangoの概説を説明したいと思います。# はじめに -WebサイトとWebアプリの違いとは?-
簡潔にまとめると、responseするHTMLが動的ならwebアプリ、静的ならwebサイトになります
したがって、ユーザーによって動的に異なったwebページを返せるdjangoは、webアプリになります。## webアプリの処理手順
キーワードは、webサーバー,APサーバー、データベースになります。>Webサーバー・・・クライアントから受け取るリクエストの窓口
>APサーバー・・・必要に応じてデータベースと連携をとりレスポンスデーターを作成
>データベース・・・データを保管しているサーバー* 処理1 ブラウザからwebアプリにリクエストを送る
* 処理2 WEBサーバーが窓口としてリクエストを受け取り、レスポンスに必要なのが、静的コンテンツな
【Python】LINE Notifyの手引き
# LINE Notifyとは
LINE Notifyとは、GitHub,IFTTT,MackerelなどのWebサービスと連携することで、それらサービスからの通知をLINEで受信することが出来る便利なサービスです。
詳細は以下のサイトをご覧ください。https://notify-bot.line.me/ja/
本サービスとPythonを組み合わせることで、さまざまな情報をLINEに通知することが可能になります。
# PythonとLINE Notifyで通知を送るまでの手順
### 1. LINE Notifyへログイン
[LINE Notify](https://notify-bot.line.me/ja/)にアクセスし、右上のログインボタンからログインしてください。
![login.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1149857/d3237fca-193f-b9eb-e81a-0578cb1133fa.png)### 2. トークンの発行
自分の名前をクリックしマ
キュー滞留の監視メモ
“`pythonimport argparse
import json
import logging
import re
import socket
import sys
from pathlib import PathBASE_DIR = Path(__file__).resolve().parent.parent
LOG_DIR = BASE_DIR / ‘log’
DEF_DIR = BASE_DIR / ‘def’
TMP_DIR = BASE_DIR / ‘tmp’def setup_logging():
“””ロギングの設定を行う。”””
log_file_path = LOG_DIR / ‘pythonlog.log’
logger = logging.getLogger()
logger.setLevel(logging.INFO)
formatter = logging.Formatter(f’%(asctime)s {socket.gethostname()} [{Path(__file__).name}:%(lev
【Kaggle】自動車保険の2項分類コンペに挑戦
## 0. 目次
1. 今回の分析の概要
1. 実装
1. 考察・残された課題## 1. 今回の分析の概要
[前記事](https://qiita.com/yn887/items/8a0e7ab3bbd515daff27)にて、無事にAidemy データ分析講座を修了することができました。データ分析について、より理解を深めるべく、kaggleのコンペに挑戦しました。
#### 1-1. 開発環境
– Mac M2
– Jupyter notebook#### 1-2. 使用データ
kaggleの「Binary Classification of Insurance Cross Selling」というコンペに参加しました。#### 1-3. 目的
– kaggleのコンペに挑戦する
– 予測精度を上げるための様々な方法を模索する
以下から、全体の流れ・具体的なコードを説明します。## 2. 実装
#### Step1: 使用するライブラリのインポート
“` python
import pandas as pd
import numpy as
Terraformを使ったLambda関数のコンテナイメージ構築
# はじめに
AWS Lambdaは、サーバーレスでイベント駆動型のコンピューティングサービスです。従来のLambda関数ではzipファイルでコードをアップロードしていましたが、コンテナイメージを使用することで、より柔軟で強力な開発・デプロイが可能になります。
本記事では、Infrastructure as CodeツールであるTerraformを用いて、Lambda関数として実行するコンテナイメージを構築し、AWS環境へデプロイする手順を解説します。制作したレポジトリはこちらです。
https://github.com/sugiyama404/practice_lambda_docker
参考にしたサイト
https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/python-image.html#python-image-instructions
# 目的
Lambda関数をコンテナイメージで実行することにより、柔軟性とパフォーマンスを向上させることを目指します。
# インフラ構成
![aws.png](https:/
FastAPIのテストをしっかり書いてみる
# はじめに
株式会社YUZURIHAで2024年6月からインターンをさせていただいている大学生です。インターンを終えるにあたり、学んだことをアウトプットする機会として記事を作成させていただけることになったので、インターン中で最も苦労した部分である、テストについて自分なりのTipsをまとめてみました。
# 概要
FastAPIは非常に高性能で柔軟なフレームワークですが、そのテストの書き方には工夫が必要です。本記事では、非同期処理を含むFastAPIのテスト方法について、自分が実際に書いたコードを紹介したいと思います。その中で、pytestを使ったユニットテストとAPIテストの書き方、そしてテストを自動化するためのCIの設定について詳しく自分の得た知見を共有したいと思います。具体的には、以下のポイントに重点を置いています。1. 非同期テストの実践
FastAPIの非同期テストの書き方と、それに必要な設定を紹介します。2. pytestの基本と活用方法
pytestのfixtureやデコレータの使い方、parametrizeを使った効率的なテスト方法を紹介します。3. C
pygameでマインスイーパーを作った
## 背景
pygameでスペースインベーダー作りたい。
## PCスペック
| 項目 | 情報 |
| — | — |
| OS | macOS Sonoma 14.4.1 |
| ハードウェア | MacBook Pro 16inc 2023 |
| プロセッサ | Apple M2 pro |
| メモリ | 32GB |## ソースコード
“`py main.py
import pygame
import random
import sys# Pygameの初期化
pygame.init()# 定数の設定
WIDTH = 800
HEIGHT = 600
GRID_SIZE = 20
TILE_SIZE = 30
MINE_COUNT = 50# 色の定義
WHITE = (255, 255, 255)
BLACK = (0, 0, 0)
GREY = (192, 192, 192)
RED = (255, 0, 0)
GREEN = (0, 255, 0)
BLUE = (0, 0, 255)# フォントの設定
FONT = pygam
画像認識関係のサンプルをモジュールとして改造する
画像認識関係のサンプルを元に改造するときのよくあることをメモしました。
## はじめに
– 画像認識のサンプルコードは、モジュールとして実装することを目的としていません。
– 基本となる考えかたを示すことを目的とするからです。
– モジュールとして活用する際の不具合は、オリジナルの作者を責めないでください。## 画像認識・機械学習系のサンプルをモジュールとして再利用しようとするときに問題になること
### 元のオリジナルの作者の目的は、論文の根拠となる結果を出すことです
特定のデータセットに対して、目的の計算をことにする主力をおいています。
ファイル入力に対して、一連の処理結果を得られることのインタフェースを重視しています。
含まれないことがあること:
ライブラリとして利用するために必要になるAPI
画像データインタフェースのAPI## まず単純にgit clone した状況で動作させよう
– それが利用するに値するものなのかどうか、実際に動作させてみないとわからない。
– 既存の環境を壊さないようにDockerを使って動作させるのがいいだろう
#### 最初の課題
– pi
Poetryで管理しているプロジェクトの名前を変えたら、`poetry run mypy`を実行したときに”Command not found”というエラーが発生した
# 環境
* Python 3.12.4
* Poetry 1.8.3# はじめに
Poetryを使って、Pythonのアプリケーションを開発しています。
仮想環境はプロジェクト内に作成するように設定しています。“`
$ pwd
/home/yuji/tmp/awesome$ tree
.
├── README.md
├── awesome
│ └── __init__.py
├── poetry.lock
├── poetry.toml
├── pyproject.toml
└── tests
└── __init__.py2 directories, 6 files
$ ls .venv/
bin lib pyvenv.cfg
“`“`toml:pyproject.toml
[tool.poetry]
package-mode = false[tool.poetry.dependencies]
python = “^3.12”
mypy = “^1”[build-system]
requires = [“poetry-cor
ubuntu22.04を24.04に変更したら、`pip`のインストールに失敗した
# はじめに
以下は、VSCode Dev Containers用の`Docker files`です。`Ubuntu 22.04`をベースイメージにしています。
“`Dockerfile:Dockerfile.jammy
FROM ubuntu:22.04# Install prerequisites
RUN set -x \
&& export DEBIAN_FRONTEND=noninteractive \
&& apt-get update \
&& apt-get install -y –no-install-recommends \
gnupg2 \
software-properties-common \
language-pack-ja \
tzdata \
curl \
lsb-release \
&& apt-get -y clean \
&& rm -rf /var/lib/apt/lists/*# Set loc
python備忘録~DataFrameのindexについて~
先ほどpythonで開発をしている最中にDataFrameの時系列データの時間列をエポック秒に変換する際に、非常に苦労したので僕の試行錯誤の結果が似たような状況のどなたかの役に立てばと思い備忘録として書いていきたいと思います。
# 過程
現在FX関連のとあるツールを自作しているのですが、APIから取得したレートの情報の時系列DataFrameについて時間に関しても整数値で扱えた方が何かと都合がいいと思い、Datetimeをエポック秒に変換し始めました。
最初はindexの情報が書き換えられないことを知らず、
“`python
#tickは一定期間のOHLCの価格などが入っているDataFrame形式の多次元リスト
tick[“Datetime”] = pd.to_datetime(tick[“Datetime”]).apply(lambda x: x.timestamp())
“`この方法で直接indexを置き換えてやろうと思ったのですが、結果は失敗で以下のエラーが出てきました。
“`
KeyError: ‘Datetime’
“`
次に、indexの内
巨大なネットワークを単位を区切って分析する
# はじめに
巨大なネットワークを分析する際には、その全体を効率的に処理するためにネットワークを適切に区切ることが重要です。このプロセスは、特に大規模なグラフデータを扱う際に性能とスケーラビリティを向上させるために役立ちます。以下に、ネットワークを区切るいくつかのアプローチをまとめます。
## コミュニティ検出(Community Detection)
コミュニティ検出は、ネットワーク内の類似または密接に関連するノードのグループを識別する手法です。### コミュニティ検出の手法
| 名称 | 説明 | ライブラリ |
|——|——|————|
| ルーヴァン法 | 高速でモジュラリティを最適化する手法で、大規模なネットワークに適しています。 | [python-louvain](https://pypi.org/project/python-louvain/) |
| インフォマップ | ランダムウォーカーの情報理論を利用してノード間の情報フローを最適化し、コミュニティを検出します。 | [infomap](https://pypi.org/
Djangoでカスタムコマンドを作成する
# はじめに
こんにちは、Python初心者のkeitaMaxです。
今回はDjangoでカスタムコマンドを作成してみようと思います。
前回の記事はこちら。
https://qiita.com/keitaMax/items/31d76751bff1171d9827
# 作業するディレクトリ作成からブラウザに文字列を表示する
以下コマンドでbatchディレクトリを作成します。
“`
python3 manage.py startapp batch
“`これをすると`batch`ディレクトリが作成されます。
フォルダを以下のように修正、追加します。
“`py:app/urls.py
from django.contrib import admin
from django.urls import path, includeurlpatterns = [
path(‘admin/’, admin.site.urls),
path(“batch/”, include(“batch.urls”)),
]
“`“`py:batch/urls.p
ベータを計算しbokehでグラフを作成する
# β(ベータ)とは
β(ベータ)は、特定の証券またはポートフォリオが市場全体に対してどの程度のリスクを持っているかを示す指標です。
## β = 1の時
資産は市場全体と同じリスクを持ちます。市場が10%上昇すると、この資産も10%上昇することが期待されます。
## β > 1の時
資産は市場全体よりも高いリスクを持ちます。市場が10%上昇すると、この資産は10%以上上昇することが期待されます。逆に、市場が10%下落すると、この資産も10%以上下落することが予想されます。
## β < 1の時 資産は市場全体よりも低いリスクを持ちます。市場が10%上昇すると、この資産は10%未満上昇することが期待されます。市場が10%下落すると、この資産は10%未満下落することが予想されます。 ## β = 0の時 資産は市場全体の動きに対して無関係であることを示します。市場の動向にかかわらず、資産の価値は変動しません。 ## β < 0の時 資産は市場全体と逆の動きをします。市場が上昇すると資産は下落し、市場が下落すると資産は上昇することが期待されます。 ## ベータの計算
【Python】Excelのセル結合
参考URL:
https://pg-chain.com/python-excel_merge_cells
Pythonを使って、指定したフォルダ以下の重複ファイルをチェックする
duplicatesライブラリを使います
これは重複ファイルを、Pandas Dataframeの形で返します。https://pypi.org/project/duplicates/
# 使い方
引数に指定したフォルダ以下をスキャンするスクリプトを書いてみた。“`dupcheck.py
import duplicates as dup
import pandas as pd
import os,sysfolder_of_interest = sys.argv[1]
df = dup.list_all_duplicates(folder_of_interest, fastscan=True)
if df.empty :
exit()print(df)
“`これを、イラスト集CGフォルダに対して使ってみる。
“`cmd
> python dupcheck.py e:\illusts
file
Pythonではじめる因果推論と気を付けるべきバイアスについて
## はじめに
こんにちは!このブログでは、Pythonを使用して因果推論の基本的な手法を具体的な医療の例で解説し、データの可視化を通じて理解を深めます。また、因果推論において注意すべきバイアスについても説明します。
## 因果推論の基本
因果推論は、ある処置や介入が他の結果にどのように影響を与えるかを明らかにする方法です。単なる相関関係ではなく、因果関係を明示的に評価することが目的です。
### 因果推論の手法
1. **ランダム化実験(RCT)**:
– 最も強力な因果推論の手法。
– 被験者をランダムに処置群と対照群に分けることで、交絡因子の影響を排除します。2. **観察データからの因果推論**:
– RCTが困難な場合に使用されます。
– 因果推論のモデルを構築し、交絡因子を調整することで因果効果を推定します。## 交絡因子とは?
交絡因子(Confounding Variables)とは、処置(薬の服用など)と結果(回復など)の両方に影響を与える変数です。交絡因子の影響を考慮せずに因果関係を評価すると、誤った結論を導く可能性があり
【Kaggle】メルカリ価格提案コンペの最多得票数コードを解説
# 1. 本投稿の概要
### 1-1. 本Qiita投稿の目的
* データ分析・機械学習の学習を実ビジネスに落とし込む練習のため
* 様々なライブラリ・コードに触れるため### 1-2. 今回学んだこと3選
1. 探索的データ解析(EDA:Exploratory Data Analysis)の重要性
1. 機械学習を用いた、ビッグデータのトピックモデリング
1. コーティングする際のChatGPTの便利さ詳しくは最後のまとめに書きます。
### 1-3.kaggleコンペの概要
Kaggleの「メルカリの価格提案チャレンジ〜メルカリ販売者に出品価格を自動で提案できるかどうか〜」というテーマのコンペです。
丁寧に解説している記事を参考に引用しておきます。
https://engineering.mercari.com/blog/entry/2018-11-14-172509/
https://qiita.com/asparagasu/items/ba5a3e19296f3ec66fc8
ちなみに、メルカリにおいて「なぜ値段推定が重要なのか?」を解説しておくと
Pythonで〇×ゲームのAIを一から作成する その99 深さ優先アルゴリズムによるゲーム木の生成
# 目次と前回の記事
https://qiita.com/ysgeso/items/2381dd4e3283cbed49a0
https://qiita.com/ysgeso/items/10449c1d8e1465de1ed1
## これまでに作成したモジュール
以下のリンクから、これまでに作成したモジュールを見ることができます。
| リンク | 説明 |
|:–|:–|
| [marubatsu.py](https://github.com/ysgeso/marubatsu/blob/master/099/marubatsu.py) | Marubatsu、Marubatsu_GUI クラスの定義|
| [ai.py](https://github.com/ysgeso/marubatsu/blob/master/099/ai.py) | AI に関する関数 |
| [util.py](https://github.com/ysgeso/marubatsu/blob/master/099/util.py) | ユーティリティ関数の定義。現在は `gui_pl