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

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

Pythonのpickleモジュール完全ガイド:基礎から応用まで20章で学ぶオブジェクトシリアライゼーション

## はじめに

Pythonのpickleモジュールは、Pythonオブジェクトをシリアライズ(直列化)して保存したり、後で復元したりするための便利なツールです。pickleを使うと、複雑なデータ構造やオブジェクトを簡単にファイルに保存し、後で元の状態に戻すことができます。この記事では、pickleの基本から応用まで、20の章に分けて詳しく解説します。

## 1. pickleモジュールの基本

pickleモジュールは、Pythonの標準ライブラリに含まれています。使用するには、まずインポートする必要があります。

“`python
import pickle
“`

pickleの主な機能は、オブジェクトをバイト列に変換する「シリアライズ」と、バイト列からオブジェクトを復元する「デシリアライズ」です。これにより、複雑なデータ構造をファイルに保存したり、ネットワーク経由で送信したりすることが可能になります。

pickleは様々なPythonオブジェクトを扱えますが、クラスやインスタンス、関数など、一部のオブジェクトには制限があります。セキュリティ上の理由から、信頼できないソ

元記事を表示

【OWASP ZAP】認証設定 (2) ログインスクリプトの作り方。Dockerでのスクリプト利用方法

# はじめに
OWASP ZAPを使用し、ログインの必要なサイトに対して診断を実施してきました。
その際に公式ドキュメントを見ても、どのように設定したらいいのか、実際の挙動がどうなるのか、わかりづらい点が多くありました。
本投稿では実際にやってみてわかった部分を記事にまとめてみようと思います。
今回はZAPの認証設定「Script-Based Authentication」で使用するスクリプトの作成方法や利用方法等について書きます。

次回以降、その他のスクリプトの利用方法や、「Auto-Detect Authentication」やAutomation Framework、クロールしにくいサイトに対するSpider, Ajax Spider等を工夫して行う方法もまとめていきたいと考えています。

認証の共通設定項目やフォーム認証、ベーシック認証の設定方法については前回の記事を見てください。
[【OWASP ZAP】認証設定 (1) Form認証、ベーシック認証のわかりづらいところ](https://qiita.com/Shcb8Qyoj021/items/8da1a7663b77c7

元記事を表示

一橋大入試「1000以下の素数は250個以下であることを示せ」をプログラミングで証明してみる

# はじめに

プログラミングをしている中で、「あれ大学入試ってプログラミングで解ける問題もあるのでは?」と思ったのがきっかけでした。
プログラミングで解けそうだと思った問題の1つに、2021年に一橋大学で出題された「**1000以下の素数は250個以下であることを示せ**」について、シンプルかつ良問といった内容で、様々なところから声が上がり有名になった問題がありました。
今回はその問題について、プログラミングで証明してみようと思います。
下記がこの問題について紹介されている記事になります。

▼問題紹介記事

【2021年】一橋大学の数学過去問「整数問題」|1000以下の素数の個数は?

# 実行環境

実行環境は下記の通りです。

|項目|内容|
|:-:|:-:|
|使用言語|Python3|
|実行環境|[paiza.io](https://paiza.io/ja/projects/new)|

今回は、ブラウザ上で簡易的に実行し、特に実行環境のツール選定はしていません。

# ソースコード

下記が作成したソースコードになります。

`

元記事を表示

paizaラーニング問題集「最安値を達成するには2」を解いてみた

https://paiza.jp/works/mondai/dp_primer/dp_primer_apples_step1

▼感想:

りんごn個をセット単独購入する場合の最安値と、
りんごn個をセット組合せ購入する場合の最安値を計算し、
両者を比較して安いほうを最終的な最安値とします。

セット単独購入
 - りんご2個a円セットのみ購入
 - りんご5個b円セットのみ購入

セット組合せ購入
 - りんご2個a円セットとりんご5個b円セットを組合せて購入

▼コード:
“`py
########## 処理0(準備) インプット,リスト定義など ###########

import math

n,a,b = map(int,input().split())

dp = [0]*(1000+1)

########## 処理1 漸化式の定義、計算、出力 ##########

dp[0] = 0
dp[1] = 0

# apx_cost: セット単独購入、セット組合せ購入の金額のうち最安値になりうる候補の金額を格納するリスト
apx_cost = []

for i in

元記事を表示

paizaラーニング問題集「最安値を達成するには1」を解いてみた

https://paiza.jp/works/mondai/dp_primer/dp_primer_apples_step0

▼感想:

本問を基礎として、次以降の問題を解くことができればと思います。

▼コード:
“`py
########## 処理0(準備) インプット,リスト定義など ###########

n,a,b = map(int,input().split())

dp = [0]*(1000+1)

########## 処理1 漸化式の定義、計算、出力 ##########

dp[0] = 0
dp[1] = a

for i in range(2,n+1):
dp[i] = min(dp[i-1]+a,dp[i-2]+b)

print(dp[n])
“`

元記事を表示

【macOS】asdfとPoetryでPythonを実行したい

# はじめに
Python をローカルで実行したいけれど、Anaconda は全員が使えるわけではない…ということでasdf とPoetry でPython を実行する環境を構築したいです。
※ asdf とは、Poetry とは、に関しては触れていません。構築手順のみです。

備忘録として記事にアウトプットします。

# 環境
OS : macOS
パッケージマネージャー : Homebrew

# Python実行までの手順
+ [asdf のインストール](#asdfのインストール)
+ [asdf でPython をインストール](#asdfでPythonをインストール)
+ [asdfでPoetryをインストール](#asdfでPoetryをインストール)
+ [Poetryでプロジェクトを初期化](#Poetryでプロジェクトを初期化)

# asdf のインストール
## 1. 公式のasdf のダウンロード
以下を実行して、公式のasdf をダウンロードする
“`:ターミナル
git clone https://github.com/asdf-vm/asdf.git

元記事を表示

【Rust】Pythonライブラリを超簡単に作れるツールを作った

# はじめに

最近になってRustを勉強し始めて、何か作ってみようということで`pyinit`を開発しました。この記事では開発の背景や手こずった点を紹介していこうと思います。

https://github.com/t3tra-dev/pyinit

ツール自体のインストール方法や使い方についてはGitHubリポジトリの[README.ja.md](https://github.com/t3tra-dev/pyinit/blob/main/README.ja.md)を参照してください。

# 開発背景

Pythonのライブラリ開発において、プロジェクトの初期セットアップには多くの手順が伴います。`README.md`や`setup.py`、`__init__.py`、ライセンスファイルなど、プロジェクトごとにこれらのファイルを毎回作成するのは煩わしいです。

「このセットアップを自動化できないか?」という発想から、プロジェクトのテンプレートを自動生成できるCLIツール `pyinit` を開発することにしました。これにより、Pythonライブラリの開発がより迅速に、そして効率的に行

元記事を表示

FastAPIでのキャッシュ実装の試み:`lru_cache`の活用

## はじめに
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2648069/4e36b32c-cf4e-5551-2bfd-0ba62fa79bfd.png)
APIのパフォーマンスは、ユーザーエクスペリエンスに直結します。この記事では、Python標準ライブラリの`functools.lru_cache`を活用して、FastAPIアプリケーションにシンプルかつ効果的なキャッシュ機能を追加する方法を紹介します。

## FastAPIでのキャッシュに関する注意事項

– 本記事では、Python標準ライブラリの `functools.lru_cache` を使用したシンプルなキャッシュ方法を紹介しています。
– FastAPI自体には、より高度なキャッシュ機能を提供するサードパーティ製ライブラリが存在します(例: fastapi-cache2)。この記事を作成するまえにわかっていませんでした。
– 今後の記事で、fastapi-cache2の詳細な解説を行う予定です。

## lru_

元記事を表示

PythonでFITSファイルを効率的にフィルタリングする方法(不等号条件にも対応)

# はじめに

FITSファイルは天文学で広く使われるデータフォーマットであり、観測データを管理・解析するために非常に便利です。Pythonでは、`astropy`ライブラリを使って簡単にFITSファイルを読み書きし、データのフィルタリングも可能です。今回は、**不等号条件(`>=`, `<`, `<=`, `>`)にも対応したフィルタリング方法**を紹介します。

初心者でも分かりやすいように、擬似データを使ってFITSファイルを生成し、そのデータに対して条件付きフィルタを適用する具体例を見ていきます。

本記事の実行例は下記の google Colab にあげています。

https://colab.research.google.com/drive/1Sz9lOYNXY7Zi0ZROJlUTXktvM2wM4DGv?usp=sharing

# FITSファイルを用いた例

## 1. 擬似データの作成とFITSファイルの生成

まず、擬似的なデータセットを作成し、それをFITSファイルに保存します。`astropy.io.fits`を使うことで、簡単にFITSファイル

元記事を表示

読書記録 「VTuberサプーが教える! Python 初心者のコード/プロのコード」

## 本の概要

「動けばいいや」の「初心者のコード」と、保守性などの将来まで考えられた「プロのコード」について、簡単な例を示しながら解説を行っている本である。

## 感想

第三章では一般的な良いコード、例えばネストを減らすにはファストリターンを利用しようとか、長い関数は分割しようとか、そういった基礎の部分を教えていて、
第四章では頻出のPythonの標準ライブラリなどの解説をしていた。
そういった章で言っていることがまともで、初心者にも無理なく進められる本だと感じた。

個人的にはPycharmを前提にしているのも良い。初心者がVSCodeで環境構築をするのは厳しいと思っている。

## 同じような本の比較

この手の本と同じような主題の本だと、まず思い浮かぶのはこの本だと思う。
[Good Code, Bad Code ~持続可能な開発のためのソフトウェアエンジニア的思考](https://www.amazon.co.jp/Good-Code-Bad-%EF%BD%9E%E6%8C%81%E7%B6%9A%E5%8F%AF%E8%83%BD%E3%81%AA%E9%96%8B%

元記事を表示

【Python】unstructuredを使って、 PDFファイル内の非構造データを抽出する

# はじめに
RAGの仕組みを利用して、文書内のテキストに特化した情報を取得する操作って非常に便利ですよね。
一方で、PDFファイルに限らず、テキスト以外の画像やテーブルが含まれているファイルはたくさんあると思います。
こういった画像やテーブルといった非構造データは、文書内のテキストとしてはノイズになることがあります。
それを解決するべく、`unstructured`と呼ばれるライブラリを使って、非構造データを抽出してみます。これができると、マルチモーダルRAGの幅が結構広がると思っています。

※基本的には、ipynbの拡張子でnotebookを使って作業していたので、notebookベースで以降のスクリプトは実行しています。

## 準備
以下のライブラリをインストールします。
“`
$ pip install unstructured[all-docs]
“`
たったこれだけ。

## 素直に実装してみる
langchainのgithub上にあった[Semi_structured_and_multi_modal_RAG.ipynb](https://g

元記事を表示

Pythonの日本語形態素解析ライブラリ 

## はじめに
なぞなぞLINE botを作る過程で、回答の正誤判定を行う際に、必要になったので、調べたことを備忘録として残しておこうと思います。
例えば、「アイスクリーム」が答えだとしたら、「アイス」と回答したら、正解だと判定させたいという風に、同音異義語や、ひらがな、漢字、カタカナ表記の違いを許容する実装方法を調べた結果です。

## 形態素解析とは
> 形態素解析(morphological analysis)とは、検索エンジンなどにも用いられている自然言語処理(NLP)の手法の一つです。
ある文章・フレーズを「意味を持つ最小限の単位」に分解して、文章やフレーズの内容を判断するために用いられます。
※形態素とは、言語上で意味をもつ最小の単位を表す用語です。
Pythonでは、MeCabやJanomeを活用することで形態素解析を行うことが出来ます。

引用サイト:https://aiacademy.jp/media/?p=3009

python環境で利用できる日本語形態素解析ライブラリを比較されている記事もありました。
メカブ?ジャノメ?なんと、スダチもある🟢

引用サイト:ht

元記事を表示

【ブロガー向け】MovableType形式の.txtファイルをBlogger用XMLに変換するPythonスクリプト

# はじめに
はてなブログからエクスポートされる記事は、MovableType形式のテキストファイルとしてダウンロードされますが、GoogleのBloggerにインポートする際にはXML形式が必要です。このブログ記事では、MovableType形式の.txtファイルをBlogger用のXML形式に変換するためのPythonスクリプトを紹介します。

**注意**: 本スクリプトは、MovableType形式のファイルをBlogger用XMLに変換することを目的としていますが、MovableType形式やBloggerの仕様変更、特定のエクスポートファイルの形式によっては正常に動作しない場合があります。万が一のエラーや問題についてはご了承ください。

# スクリプトの概要
このスクリプトは、MovableType形式の.txtファイルを読み込み、記事を解析し、Bloggerに適した形式に変換します。最終的にXMLファイルとして出力され、これをBloggerにインポートすることで簡単に記事を移行できます。

# 作成したコード
“`python
import re
from dateti

元記事を表示

motoを使用したDynamoDBのトランザクション処理でThe “SET” section can only be used once in an update expressionが発生した時の対処

以下のような、オペレーションがUpdateのDynamoDB書き込み処理があるとします。

“`python:sample.py
import boto3
from boto3.dynamodb.types import TypeSerializer

client = boto3.client(“dynamodb”)
serializer = TypeSerializer()

options = {
“TransactItems”: [
{
“Update”: {
“TableName”: “test-table”,
“Key”: {“pk”: serializer.serialize(“test”)},
“UpdateExpression”: “SET test = :test”,
“ExpressionAttributeValues”: {“:test”: serializer.serialize(“x

元記事を表示

Qiita APIを使って記事を表示するWebアプリケーションを作ろう【Python & Flask & Bootstrap】

# はじめに
この記事では、Qiita APIを使ってPythonで簡単なWebアプリケーションを作成し、Qiitaの記事を取得して表示する方法を紹介します。デザインにはBootstrapを使用して、モバイル対応の見た目も考慮しています。

## 目次
1. Qiita APIの準備
2. 必要なライブラリのインストール
3. Flaskアプリケーションの作成
4. Qiita APIから記事を取得
5. Bootstrapを使ったデザイン
6. 最終的なディレクトリ構成
7. 実行方法

## 画面イメージ
![スクリーンショット 2024-09-18 17.28.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/75802/7603427e-324b-0206-6f7b-4d6456cc1646.png)

## 1. Qiita APIの準備

まず、Qiita APIを使うために、Qiitaからアクセストークンを取得する必要があります。

### アクセストークンの取得方法

1.

元記事を表示

【ロジスティック回帰分析】機械学習特訓 ver.4(まとめ)

【特訓 ver.4】 ロジスティック回帰スタート!!
※この記事ではロジスティック回帰分析についてまとめます

## ▼学習の流れ
まずはロジスティック回帰分析の基本を押さえ、具体的な問題を通して理解を深める。

■使用するデータ
握力測定に関するデータ
(実際の握力測定なしに、身長の値を用いて学生の握力分類を行う)

※データセット:後日

■ ロジスティック回帰分析について学習する
大まかな流れ)
① データ読み込みや前処理、分割
 - 質的変数は用いることができない

② モデルの設定と訓練
 - 「ロジスティック回帰分析」で実施する

③ モデルの精度の確認
 - 精度について、以下6項目で確認していく

分類における「学習モデルの性能評価」について確認していく!
(1) 混同行列(confusion matrix)
(2) 正解率(accuracy)
(3) 適合率(precision)
(4) 再現率(recall)
(5) F1スコア(F1-score)

AITRIOSのEdgeApplicationで採用されているFlatbuffersで遊んでみた

こんにちは。
ソニーセミコンダクタソリューションズの細井です。

今回はAITRIOSのエッジとクラウドを繋ぐインタフェースとして機能している[FlatBuffers](https://github.com/google/flatbuffers)について遊んでみましたので解説させていただきます。

**この記事は2024/8/7時点でDeveloper Siteに公開されているDeveloper Edition v1.8.0の情報を元に書いています。**

# FlatBuffersとは
Google製の2014年に公開されたバイナリシリアライズフォーマットです。
2014年に公開されてますが、意外と今年も更新は続けられてます。

下記が公式ドキュメントに記載されているFlatBuffersの概要です。

> – **Access to serialized data without parsing/unpacking** – What sets FlatBuffers apart is that it represents hierarchical data in a flat bi

PythonでExcel XLS形式とXLSX形式を変換する

日常業務では、さまざまなニーズやソフトウェアの互換性に合わせて、異なるフォーマットのExcelファイルを処理したり変換したりする必要がよくあります。Excelファイルの一般的なフォーマットはXLS(Excel 97-2003)とXLSX(Excel 2007以上)の2つです。この記事では、Pythonを使ってXLS形式とXLSX形式を変換する方法を紹介します。

* [PythonでXLSXをXLSに変換する](#pythonでxlsxをxlsに変換する)
* [PythonでXLSをXLSXに変換する](#pythonでxlsをxlsxに変換する)

## Python ライブラリ – インストール
必要なPythonライブラリはSpire.XLS for Pythonです。このPythonライブラリは、Excelドキュメントの作成、読み込み、編集、変換など、プログラムによる操作を幅広くサポートします。
このリンクからパッケージをダウンロードしてローカルパスからインストールするか、以下のpipコマンドを使って直接インストールすることができます:
`pip install Spir

ファイナンシャル・プランニング技能検定試験問題で LLM を Fine-tuning してみた / OpenAI Fine-tuning API 編

Web 上で公開されているファイナンシャル・プランニング技能検定(FP 技能検定)の過去問題を用いて、LLM を Fine-tuning した際の効果を検証しました。

今回は OpenAI が公開している Fine-tuning API を用いて、GPT-3.5-turbo および GPT-4o-mini の Fine-tuning を行った過程を紹介します。
また、OpenAI Evals および llm-jp-eval を用いた Fine-tuning 前後でのタスク性能の検証についても紹介します。

## タスク設計

今回は、定量的な評価のしやすさから、多肢選択問題のみによって構成されている 3 級および 2 級の FP 技能検定の学科試験を解くこととしました。
以下に学科試験問題の例を示します。

### 3 級 FP 技能検定 学科試験

3 級の FP 技能検定学科試験では、2 つの大問が設定されています。

大問1では、与えられた文章が適切か・不適切かを回答する正誤(二肢択一)問題が 30 問出題されます。

“`text
【第1問】 次の各文章((1)~(30))

【Atcoder解法検討】ABC133 A~E Python

## A – T or T
#### 問題ページ : [A – T or T](https://atcoder.jp/contests/abc133/tasks/abc133_a)
### 考察
$N \times A$と$B$の小さいほうを出力。
$if$文でも良いですが$min$関数もすっきりします。
### コード
“`python
N, A, B = map(int, input().split())
print(min(N*A,B))
“`

## B – Good Distance
#### 問題ページ : [B – Good Distance](https://atcoder.jp/contests/abc133/tasks/abc133_b)
### 考察
$N,D \leq 10$なので全数計算で十分間に合います。
数$n$が平方数であるかは$int(\sqrt{n})$もしくは小数誤差も懸念して$int(\sqrt{n})+1$の自乗が$n$になるかで判定可能です。
### コード
“`python
N, D = map(int, input().split(