Python関連のことを調べてみた2023年10月09日

Python関連のことを調べてみた2023年10月09日
目次

ARC166回答メモ

0.はじめに
 最近レートが徐々に上がってきたので調子に乗って参戦したところ
 1問も解けずレートも32ダウン・・・。
 1か月積み上げたレートが戻りました・・。

 解説を見ながら解くと、A、Bともなんとか解けたので
 めげずにチャレンジしていきたいと思いました。

1.A – Replace C or Swap AB
 初見で、以下の場合分けで行ける!と実装するも
 サンプルすら通らず・・・。
  xの値 yの値 結果(同じ場合はOKとして)
  AorB  C   ”No”
  A    B  xの後ろの値がBorCで、yの後ろの値がAならok
  B    A  xの前の値がAorCで、yの前の値がBならok

 一回操作した箇所を繰り返し操作すればいろいろ何とかなるんだな
 と気づき仕切りなおし。

 Cで区切ったエリアごとの判断でよいと気づき
 エリア内のXとYのAB個数が同じで、
 X側とY側の値が異なる部分の先頭がAならOKと
 雑に実装したところ、サンプルは通りましたが
 WA13RE6と今一でした。

 試験後解説と正解した人の解答を見たりして考慮しなおしたところ

元記事を表示

SQLAlchemy2.0によるDB操作方法

# はじめに
実務でFastAPIを使用しており、データベース操作にSQLAlchemyを使用しています。
知識の整理をする意味でも、初期の設定とDB操作についてまとめようと思いました。
SQLAlchemyについてよくわからないという初学者の方に対して参考になれば幸いです:bow_tone2:

## SQLAlchemyとは
SQLAlchemyとは、Python向けのSQLツールキットで、ORM(Object-Relational Mapper)ライブラリの一つです。SQLAlchemyを使用するとPythonのプログラムからデータベースとのやりとりを容易に行うことができます。
以下、SQLAlchemyの公式ドキュメントです。

https://www.sqlalchemy.org/

### ORM(Object-Relational Mapping)とは
ORMはオブジェクト指向プログラミング言語(今回の場合はPython)とリレーショナルデータベース(MySQLなど)との間のデータをマッピングします。
ORMを使用することにより、データベース操作を行う際SQLクエリを直

元記事を表示

福島県の気温データをクラスタリング分析すると、天気予報の3地方に分類できるか検証してみた

## 目的
福島県の天気予報は3地方(浜通り、中通り、会津地方)に分けて提供される。
気温データをクラスタリング分析することで、うまくこの3地方に分類できるのかを検証する。

福島県は、「県内は南北方向に延びる山脈・山地によって、地形・気候・交通・歴史などの面に違いが顕れており、3地域に分けられている。」[Wikipedia](https://ja.wikipedia.org/wiki/福島県 “Wikipedia 福島県”)より引用
クラスタリング分析は、「教師なしデータ分類手法、つまり与えられたデータを外的基準なしに自動的に分類する手法。また、そのアルゴリズム。」同じく[Wikipedia](https://ja.wikipedia.org/wiki/データ・クラスタリング “Wikipedia データ・クラスタリング”)より引用

## 気温データをクラスタリング分析
まず、気象庁が公開している[2022年月毎の平均気温(福島県)](https://www.data.jma.go.jp/stats/etrn/view/monthly_h1.php?prec_no=36&blo

元記事を表示

Qt6 でハマった件

# はじめに
 PyQt6 を使っていて、少しハマったことがあったのでメモを残しておく。

 概要は以下。

– ResizeToContents を設定している QHeaderView を使った QTableView で、アイテム数の少ないモデルに切り替えた際、_Out of range_ を起こす。

 もしかしたら私の使い方がおかしいのかもしれない……。

# 確認環境
OS: Windows 11 Home (22H2)
Shell: Git Bash (git version 2.41.0.windows.3)
Python: 3.10.6
PyQt: 6.5.2

# 確認用コード
 少し長いかもしれない。(約120行)

“`python:test.py
# -*- coding: utf-8 -*-
import sys
from PyQt6 import QtCore, QtGui, QtWidgets

class _Model(QtCore.QAbstractTableModel):
def __init__(self, items, headers

元記事を表示

ローカライゼーションの力

PyMuPDFドキュメントの日本語化が不可欠な理由

![jp-blog.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3573216/ca7b3659-1043-adcc-ddcb-cdde1ceb2a83.png)

今日のグローバル化した世界では、企業は常に視野を広げ、新しい市場に手を伸ばし、多様なオーディエンスとつながっています。このような拡大に伴い、特に技術領域では効果的なコミュニケーションが必要となります。より多くの読者にリーチし、ユーザーエクスペリエンスを向上させるための価値ある戦略の1つが、技術文書のローカライズです。このブログでは、PyMuPDFで日本語版の技術文書が利用できるようになるまでの7つのポイントをご説明します。

その前に、私たちが日本語化の必要性を感じた主な理由ですが、以下のようなPyMuPDFのブログ記事が日本のサイトに掲載されることが増えていることに気づいたからです:

https://kojichu.photoructi

元記事を表示

【FPS向上】Pythonでメインディスプレイ↔拡張モードに切り替えるスクリプト

# コードを書いたきっかけ
マルチディスプレイを使っているとValorantやApexのFPSが下がったためワンクリックでシングルモニター↔マルチモニターを切り替えれるようにしたかった。

## 準備するもの
・Python(Path通し済)
・Screeninfoライブラリ

### Screeninfoライブラリをインストール
“`
pip install screeninfo
“`
ディスプレイ情報を取得するためのライブラリです。

### ソースコード

“`Python:DisPlaySwitch.py
import subprocess
from screeninfo import get_monitors

# ディスプレイモードを判定する関数
def get_display_mode():
try:
monitors = get_monitors()

# モニターが1つしかない場合は “PC screen only” と判定
if len(monitors) == 1:
return

元記事を表示

リンク切れのレコードを判別して削除する[Python, Access]

## 背景
アホが書いた記事なのに下記の記事のviewが10000超えてて驚愕しました。
非常に励みになります。

https://qiita.com/walfiesfan/items/85a95605a0fb9792f6a6

たくさんの人にみてもらってるのでうれしくなり、もう少しちゃんとしたいと思い、ファイル名やパスが変わってリンク切れになった場合の対処も考えました。

## おさらい
Accessで、こんなテーブルのPath列にPowerpointファイルのファイルパスが入っています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3471244/463aa801-5011-3dfd-ef2c-836562674de7.png)

## 方針
・リンク先のファイルがあるか確認
・なかったら消す
の処理を行うpyodbcを使ったコード

## コード
“`python
import os
import pyodbc

#データベース接続
conn_str= (
r’DR

元記事を表示

Pythonのscikit-learnによる分類まとめ3

前回の続きです。

https://qiita.com/wanana12/items/023fe49374fd023a0b21

Pythonのscikit-learnによる分類をまとめました。
今回は、アンサンブル学習(勾配ブースティング、ランダムフォレスト、バギング、投票、スタッキング、アダブースト)を用いた分類を行います。

# 勾配ブースティング
GradientBoostingClassifier
https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.GradientBoostingClassifier.html
“`Python
from sklearn.datasets import load_iris
from sklearn.ensemble import GradientBoostingClassifier # GradientBoostingClassifierのインポート
X, y = load_iris(return_X_y=True)
model = GradientBoost

元記事を表示

Pythonでdict型(辞書型)のデータをインデント付きの見やすいJSONに変換してprintする

Pythonの改修をしている時に「渡ってきてるdictの要素なんだろうな」と思ってとりあえずprintしたら複雑な階層構造のdictがダーッと1行で出力されて非常に困ってしまったので、見やすく表示する方法を備忘として残しておく。

# 環境
“`
$ python –version
Python 3.12.0
“`

# やり方(実行例)

Pythonを対話モードで起動して以下を実行すれば良い。
“`python
import json

# JSONに変換して出力したいdictをここに定義
target_dict = {‘food’: {‘fruits’: {‘red_fruits’: [‘apple’, ‘strawberry’, ‘cherry’], ‘yellow_fruits’: [‘banana’, ‘pineapple’, ‘lemon’], ‘green_fruits’: [‘kiwi’, ‘grape’, ‘green apple’]}, ‘vegetables’: {‘leafy_greens’: [‘spinach’, ‘lettuce’, ‘kale’

元記事を表示

ABC323をPythonで解いてみたよ。(A~F問題)

[AtCoder Beginners Contest 323 (ABC323)](https://atcoder.jp/contests/abc323) をPythonで解きました。
見やすいコードを書く練習も兼ねてます。

TwitterとPayPayリンクをまとめたリトリンを下に貼ってあります。
Twitterのフォローお待ちしてます!(DMでなにか一言いただけるとたすかります…!)
この記事が役に立ったなと思ったら、PayPayのご支援もよろしくお願いします┏○ペコッ

https://lit.link/mer6177999

# A – Weak Beats

## 問題ページ
https://atcoder.jp/contests/abc323/tasks/abc323_a

## 考察
文字列 $S$ の $2$ 番目、 $4$ 番目、 $6$ 番目、 $\cdots$ がすべて $0$ ならば答えはYesです。
逆に言えば、どれか1つでも $0$ ではなく $1$ になっていれば答えはNoです。この考え方で解いてみます。
Pythonでは $S$ の $2$ 番目

元記事を表示

Pythonのscikit-learnによる分類まとめ2

前回の続きです。

https://qiita.com/wanana12/items/fd0a1558cbf13158aed1

Pythonのscikit-learnによる分類をまとめました。
今回は、ガウス過程、単純ベイズ、決定木を用いた分類を行います。

# ガウス過程
GaussianProcessClassifier
https://scikit-learn.org/stable/modules/generated/sklearn.gaussian_process.GaussianProcessClassifier.html
“`Python
from sklearn.datasets import load_iris
from sklearn.gaussian_process import GaussianProcessClassifier # GaussianProcessClassifierのインポート
X, y = load_iris(return_X_y=True)
model = GaussianProcessClassifier().fit(X, y)
mod

元記事を表示

Next.js(最新version)でChatGPTのCloneアプリを作成してみた。(Gitで確認できます)

# ChatGPTをゼロから作ってみた
#### 作成したアプリの画像
![スクリーンショット 2023-10-09 0.59.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1130166/61ee88b1-3419-c3f3-1285-19e1cc0c8e99.png)
下記でアプリを実際に動かせるのでよかったら確認してみてください。
[ChatGPT-Clone-AppのURL](https://chat-gpt-clone-app-psi.vercel.app/)

プロジェクトはGitで管理してますので、クローンして使ってみてください。
[chat-gpt-clone-appのGithubリポジトリのURL](https://github.com/kouhei-github/chat-gpt-clone-app.git)

## 自己紹介
お久しぶりの投稿です。本業と個人の仕事で忙しく1年振りの投稿になります。
株式会社DYMのエンジニアをしております、永松です。
普段はインフラはAWS

元記事を表示

ChatGPT で Python プログラミング ケーススタディ:Cox比例ハザードモデル

「ChatGPT で Python プログラミング ケーススタディ」、今回のテーマは、Cox比例ハザードモデルでお送りします。ChatGPTとの雑談をお楽しみください。

### **user**:

Cox比例ハザードモデルを理解するためのPythonコードを書いてください。その際に、コード中に日本語での説明をできるだけ詳しく書いてください。

### **assistant**:

Cox比例ハザードボデル(Cox proportional hazards model)は、サバイバル分析や生存時間解析でよく使われる統計モデルの一つです。

ここでは、Cox比例ハザードモデルを計算するPythonのコードを `lifelines` ライブラリを使って書くことにします。

まずは、必要なライブラリをインストールします。

“`python
!pip install lifelines
“`

次に、サンプルデータを使ってCox proportional hazards modelを適用します。

“`python
import pandas as pd
from lif

元記事を表示

【Python】ディシジョンテーブルを作成し、Excelに出力するコード

今回は、どれだけのケースを想定してテストを行うかを一覧化したいときに使用される決定表(Decision Table)をPythonで作成するといったものです。
個人的には、以前作成したコードのリニューアルといった意味合いが強いです。

コード内でインストールが必要なものは `openpyxl` のみですので、インストールされていない方は

“`python:こちらを実行
pip install openpyxl
“`

を実行してインストールしてください。それ以外はPythonの標準モジュールを使用しているので別途インストールは不要です。

この記事を作成するにあたり参考にしたのは以下の通り:

* [Python でリストをフラット化する方法](https://www.delftstack.com/ja/howto/python/how-to-flatten-a-list-in-python/)
* [Pythonのdequeでキュー、スタック、デック(両端キュー)を扱う](https://note.nkmk.me/python-collections-deque/)
* [Ho

元記事を表示

競馬のレース掲示板でテキストマイニング

# はじめに
最近は競馬のデータ分析をいろいろ試しています。その中で[netkeiba](https://www.netkeiba.com/)さんにある掲示板のデータを分析したら面白い知見が得られるんじゃないかと考えたのでやってみた。

# 用意したもの
– Python
– Selenium
– BeautifulSoup
– MeCab
– NEologd
– KHCoder

# データスクレイピング(クローリング)
netkeibaさんの掲示板サイトは動的サイトですのでSeleniumで操作してHTMLを持ってきます。
今回は明日(10/9)に開催される京都大賞典の掲示板を取得してきます。

“`python
from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.options import Options
import time
imp

元記事を表示

React+DjangoRESTFramworkでSPAのToDoアプリをつくる

### 背景
以前からDjangoにおけるWebアプリケーション作成において、ReactやFlutterなどのフロントエンドのフレームワークとの結合を考えております。
今回は、手始めにフロントエンドにReactを、バックエンドはDjango REST Frameworkを利用したRESTful APIで行なうことを目的にToDoアプリの作成をしながら学習した記録です。

先人たちの知恵をお借りするなどして解決できたことを、この場をお借りして感謝するとともに、大変恐縮ですが**自分のメモ**として、こちらへまとめておきます。

### はじめに
ReactやPython、Djangoなどの技術仕様も日に日に変化し、最新バージョンも上がっているため、できる限り新しい情報で学習したくたくさんのサイトや技術ブログを参照しました。
やはり、自分自身のやりたいことと合致する技術や環境での記事はなかなか見つからないものの、そこは応用も効かせながら進める必要があることを改めて痛感しました。

:::note info
今回使用する環境等のバージョン

Windows 11 Pro 22H2
Pytho

元記事を表示

【個人開発】Pythonライブラリを開発からリリースまでしてみた感想と備忘録

## 概要
久しぶりにPythonライブラリを開発、リリースしたのでその感想と備忘録を残していきます。

## お前だれ?
ブラジルでデータサイエンティスト/機械学習エンジニアやってます。この記事を書き始めてわかったけど、思ってた以上に日本語長文の書き方忘れてて焦ってます。ところどころ変な日本語にご勘弁。
プライベートで開発してたサービスが一段落したので練習がてらPythonライブラリを開発、リリースまでしてみたので、その感想と備忘録を残していきます。

## 何作ったの?
今回作ったのはデータ管理のためのライブラリ。練習用とはいえ、想定ユーザーはデータサイエンティスト。
データサイエンティストがタスクやプロジェクトで複数箇所からデータを取ってきて、クリーニング、バリデーション、タスクのためのデータセット作成を行うときにそれらのデータを手軽に管理できるライブラリを作ってみました。

インストールは
“`bash
pip install dcraft
“`

リポジトリは以下
https://github.com/marubontan/dcraft

## 使い方

元記事を表示

Pythonで〇×ゲームのAIを一から作成する その17 モジュールのインポートと docstring

# 目次と前回の記事

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

https://qiita.com/ysgeso/items/b0732427b90a1ec27243

# 実装の進捗状況と前回までのおさらい

## 〇×ゲームの仕様と進捗状況

1. `正方形で区切られた 3 x 3 の 2 次元のゲーム盤上でゲームを行う`
2. `ゲーム開始時には、ゲーム盤の全てのマスは空になっている`
3. `2 人のプレイヤーが遊ぶゲームであり、一人は 〇 を、もう一人は × のマークを受け持つ`
4. __2 人のプレイヤーは、交互に空いている好きなマスに自分のマークを 1 つ置く__
5. 先手は 〇 のプレイヤーである
6. プレイヤーがマークを置いた結果、縦、横、斜めのいずれかの一直線の 3 マスに同じマークが並んだ場合、そのマークのプレイヤーの勝利とし、ゲームが終了する
7. すべてのマスが埋まった時にゲームの決着がついていない場合は引き分けとする

仕様の進捗状況は、以下のように表記します。

* 実装が完了した部分

元記事を表示

ミノ駆動本の3章を読んだので、PythonでMoneyクラスを書いた

# はじめに
https://gihyo.jp/book/2022/978-4-297-12783-1

ミノ駆動本の第三章内でMoneyクラスを例に「値オブジェクト」「完全コンストラクタ」について説明されていました。
本書はJavaで書かれていたので、Pythonでも同じことを書いてみようと思い、記事を書くことにしました。

※例では通貨の概念がありましたが、簡単にするために通貨は省略しています。

# 本の内容を何も考えずにPythonで書く
以下のコードが本の内容をPythonに書き直したものになります。

“`python:money.py
class Money:
def __init__(self, amount: int) -> None:
if amount < 0: raise ValueError('金額が0以上ではありません。') self._amount: Final[int] = amount @property def amount(self) -> int

元記事を表示

Pythonでクリップボードをリンク付き(HTML形式)加工する。

# はじめに
 クリップボード操作をするPythonライブラリは“`pyperclip“`が有名だが、このライブラリは文字ベースでしか扱えず、リンク付きのHTML形式で扱うことができない。この記事では“`win32clipboard“`を使ってHTML形式のクリップボードを扱う方法をまとめる。シチュエーションはSharepoint等のURLコピーしたクリップボードデータを、リンク付きのHTMLデータとして加工することを想定する。Windows限定であることは注意。

# 目次
+ [クリップボードのHTML形式ってどういうフォーマット?](#クリップボードのhtml形式ってどういうフォーマット)
+ [win32clipboard を使う。](#win32clipboardを使う)
+ [コピーしたURLリンクを加工する例。](#コピーしたurlリンクを加工する例)
 
## クリップボードのHTML形式ってどういうフォーマット?
 URLコピーしたデータを、Excel、PowerPointやTeams等に貼り付けると文字リンク付きのデータになる。この文字リンク付きのクリップボ

元記事を表示

OTHERカテゴリの最新記事