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

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

レシートを読み込んで家計管理をする記録 ~序章 OCRに関して~

レシートを読み込んでその日の支出額や店ごとの商品価格の比較を実施したい。

ので、ChatGPTのお力を借りつつ開発してみることにした。
なお、コストは0円で抑えたい。

まずはOCRに関して代表的なものをいくつか調査。
##### Google Vision API
・Googleが提供するクラウドベースのサービス。高精度で多言語に対応し、レシートやドキュメントのテキスト認識に強い。
・クラウドサービスなのでインターネット接続が必要。使用量に応じた課金があるが、精度は非常に高い。
・0~1000リクエスト/月は無料で、それ以上のリクエスト数だと料金発生する。
・確か昔APIキーは取得していたはずだが、ちょっと触っただけで使ってない。。

##### Tesseract
・オープンソースで無料利用可能。多言語に対応していて、カスタマイズや拡張が可能。
・精度は他と比べると劣る場合がある。
・オフラインでの使用やコスト面で優れている。

##### MMOCR
・MMLabの一環として開発されているオープンソースのプロジェクト。
・テキスト検出、認識、理解のための包括的なツールキット。

元記事を表示

PythonコードでWord文書に目次を挿入する方法

効率的な文書の整理とナビゲーションは、長いWord文書にとって重要です。Word文書に目次(TOC)を組み込むことは、文書の読みやすさとアクセシビリティを向上させるための強力な方法の一つであり、読者が特定のセクションを迅速に見つけて関連コンテンツにジャンプできるようにします。Pythonの機能を活用することで、文書が進化するにつれて自動的に更新される目次を簡単に生成することができます。この記事では、**PythonプログラムでWord文書に目次を挿入**するための手順とコード例を提供し、簡単にプロフェッショナルな見た目の文書を作成する方法を説明します。

– **[Word文書にデフォルトの書式で目次を挿入する方法](#word文書にデフォルトの書式で目次を挿入する方法)**
– **[Word文書にカスタマイズされた書式で目次を挿入する方法](#word文書にカスタマイズされた書式で目次を挿入する方法)**

この記事で使用する方法には、[Spire.Doc for Python](https://www.e-iceblue.com/Introduce/doc-for-python.

元記事を表示

Databricks における COPY INTO 利用時のテクニック集

## 概要

`COPY INTO` は、Databricks においてテーブルにデータを簡易的に取り込むための SQL コマンドです。Auto Loader 機能と比較されることが多く、以下のようなメリットとデメリットがあります。

– **メリット**
1. 単一の SQL で実行できることから SQL 開発者にとって使いやすい。
2. Auto Loader で必要とされるチェックポイントの設定が不要。
3. ファイルの再取り込みが容易。

– **デメリット**
1. `columnNameOfCorruptRecord` 機能が利用できないこと。
2. 単一の SQL 文として実行する必要があり、関数化した際の SQL 文字列を生成するプログラムが複雑となる。
3. PySpark で実装した監査列の付与などの関数を利用できない。

データエンジニアリングを実施する際には、`columnNameOfCorruptRecord` 機能が利用できないことが致命的であることから、なるべく Auto Loader を利用することをおすす

元記事を表示

DALL-E3の結果画像をJSON圧縮画像文字列データに変換する方法

この記事では、DALL-E3から提供されるBase64 JSON形式の画像結果を、Webページの表示やストレージに適した圧縮画像文字列に変換する効率的な方法について説明します。このプロセスは、アプリケーションの帯域幅とストレージ要件を犠牲にすることなく最小限に抑えたい開発者にとって特に有用です。以下に説明する方法では、Python Imaging Library(PIL)、またはPillowとしても知られるライブラリを使用してこの圧縮を実現します。

# 前提条件
開始する前に、システムにPythonがインストールされていること、およびPillowライブラリがpipパッケージマネージャーを使用してインストールされていることを確認してください:
“`bash
pip install Pillow
“`

# ステップバイステップガイド

## 1. Base64 JSON画像データのデコード
最初のステップは、DALL·E 3から受け取ったBase64エンコードされたJSONデータをbase64.b64decode()関数を使用してデコードすることです。
“`python
impo

元記事を表示

ChatGPTとPythonで学ぶ 順序回帰モデル

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

### **assistant**:

おはようございます、そしてこんばんわ。私はChatGPT、いつも皆さまのニーズに合わせて学習をサポートします。順序回帰モデル、非常に興味深いテーマですね。では早速、非常に単純化したバージョンから順序回帰モデルについて説明していきましょう。

順序回帰(ordinal regression)、または順位回帰は、順序尺度を持つ従属変数(応答変数)を予測するための統計手法の一つです。例えば、「全く満足しない」、「あまり満足していない」、「中程度に満足している」、「かなり満足している」、「完全に満足している」のような順序的な感じ方や評価を予測する際に役立つモデルです。

では以降、Pythonで具体的な順序回帰モデルの実装を見ていきましょう。なお、ここではscikit-learnとmordという2つのライブラリを使います。まずはライブラ

元記事を表示

chatGPTにpythonで駐車場シミュレーターを作らせる

今回はchatGPTを使用してpythonで駐車場シミュレーターを作らせましたので紹介します。
# コード
作成させたコードです。途中にコメントも入れてもらいました。
“`python:シミュレーター.py
import tkinter as tk
from tkinter import messagebox, simpledialog
from tkinter import ttk
import time

class ParkingSpot:
def __init__(self, spot_number):
# 駐車スポットの初期化
self.spot_number = spot_number
self.occupied = False
self.parked_time = 0
self.vehicle_number = “”

def is_occupied(self):
# スポットが占有されているかどうかを返す
return self.occup

元記事を表示

【時短術】私がこれから使うショートカット①(Mac + VSCode)

## はじめに
現状、案件に対して多くの時間の消費が必要。
項目としては
コードを調べる時間
設計する時間
設計によって詰まってしまう時間
コード入力する時間
コードによるエラーで詰まってしまう時間

ここの入力に対しての時間を削るために私の知識が浅い部分である「エディタによるショートカット」を全く知らない。
この部分を補填して、作業時間の全体を向上させることが目的です。

## 🦁**結論**🦁
時間短縮に繋がりそうなショートカットはいくつもあった。
これをこれから使って、入力(修正、選択など)のスピードを上げて、クライアントの方に喜ばれるように技術を、身につける🦁

## **ショートカット一覧**

## **複数選択**
「cmd + d」

単語選択(「double click 」 or 「opt + click」)して 「cmd + d」
→からの特定の同じ単語をスキップ(大文字のものなどをスキップしたい)
***

## **複数選択からのスキップ**
「cmd + D」→「

元記事を表示

pandas を用いて JSON Lines 形式で S3 に保存する

最近はじめて AWS Lambda を触り、 Python ライブラリの pandas を用いてデータ処理しました。 JSON データの読み書きや S3 への保存・取得といった基本的なことについて、その方法を書き残しておきます。

本記事で扱う内容は以下のとおりです。

– pandas で JSON Lines 形式のデータを読み書きする
– データを S3 に保存、 S3 から取得する
– S3 から一部のデータのみを取得する

## サンプルデータ
本記事では以下の JSON を扱います。7つのレコードを持つ配列です。

“`json
[{“number”:”JY01″,”code”:”TYO”,”name”:{“ja”:”東京”,”en”:”Tokyo”}},
{“number”:”JY05″,”code”:”UEN”,”name”:{“ja”:”上野”,”en”:”Ueno”}},
{“number”:”JY13″,”code”:”IKB”,”name”:{“ja”:”池袋”,”en”:”Ikebukuro”}},
{“number”:”JY17″,”code”:”S

元記事を表示

Python だけで作る Webアプリケーション(フロントエンド編)ー設計方針

お疲れ様です。

前週に投稿した下記の記事について、多くの方に「いいね」、「ストック」していただきました。

皆さん、本当にありがとうございます。

https://qiita.com/kins/items/e53411d25673734d4f7b

今日は「Python だけで作る Web アプリケーション(フロントエンド編)の設計方針」について部分いたします。

本章ではこれまでの章の内容を踏まえて、設計方針を紹介します。

設計方針は
「積極的に TypeHint を活用すること」
「責務を明確に分け、適切な粒度でオブジェクトを分割すること」
「バックエンドの存在を前提にすること」の 3 つです。

# TypeHint を活用する

TypeHint とは以下のように変数や戻り値の型をヒントとして記述することです。

“`python
def add(a: int, b: int) -> int:
return a + b
“`

これはあくまでヒントなので実行時にその型を強制するわけではありません。つまり実行時に`add(“1”, “2”)`と書いても、文字列結合

元記事を表示

磁場中での電荷の運動

# はじめに
磁場中での電荷の運動は一般的に円運動もしくはらせん運動になることが知られている。円運動になる理由は、ローレンツ力が向心力としてはたらくためである。一方、古典力学において初期条件さえ与えられれば、加速度$a$から速度$v$と変位$x$は求められる。そこで今回は、微小変化する区間では加速度一定の等加速度運動をすると仮定して、運動方程式を立てて、そこから速度と位置を導出することによって、磁場中の電荷がらせん運動をすることを観察することを目的とする。
# 向心力
向心力としてのローレンツ力は磁束密度$\textbf{B}$と速度$\textbf{v}$が与えられていた場合、以下のように表すことができる。

“`math
\textbf{F}=q\textbf{v}\times\textbf{B}
“`
これが、向心力となるので、初速度$v$、半径$r$とすると

“`math
m \frac{v^2}{r}=qvB
“`

“`math
r=\frac{mv}{qB}
“`

と表すことができる。

# 速度と変位
微小区間($t=t$から$t=t+\Delta t$

元記事を表示

l型のナイキスト軌跡をscipyで書いてみた

# scipyによるナイキスト軌跡の書き方
パッケージのインポート
“`python
import numpy as np
from scipy import signal
import matplotlib.pyplot as plt
“`
開ループ関数
$L(s) = \frac{30}{(s + 1)(s + 2)(s + 3)}$
のナイキスト軌跡
“`python
s = signal.ZerosPolesGain([], [-1, -2, -3], 30)
w, H = signal.freqresp(s)
print(type(H))
plt.plot(H.real, H.imag, “b”)
plt.plot(H.real, -H.imag, “r”)
plt.grid()
“`
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2712306/9dba470d-db28-e407-1a83-772bb6d8e003.png)

ナイキスト軌跡から閉ループ系は安定であ

元記事を表示

Pythonで高速に素数判定、素因数分解を行う方法

Pythonで高速に素数判定、素因数分解を行う方法を紹介します。

## まえがき
現在高専に通っている16歳です!
学習の成果の書き出しや知識の共有をしたいと思っています。
よろしくお願いします!

## 目的
AtCoderなどの競技プログラミングやその他の実装の時に素数判定、素因数分解をする場面があると思いますが、そんな時に高速な素数判定、素因数分解を行うコードをわざわざ書きたくないのでここに書いておくことにしました。

## 素数判定
nが合成数のとき、√n以下で割り切れることを用いました。

~~~python:prime.py
from math import sqrt

def is_prime(n):
if not isinstance(n, int):
return False
elif n < 2: return False for i in range(2, int(sqrt(n))+1): if n % i == 0: return False return

元記事を表示

【tesseract OCR メモ3】 PDFからテキストを抽出して自動でファイル名を付け、整理するPythonスクリプト

# python tesseract OCR するメモ3

今回は、左下の文字を読んで、それをファイル名にして、各ページごとに分割する

以下PDFで実施

* 横浜市のPDF・18区おすすめスポット

この左下を読む

![](https://pbs.twimg.com/media/GHgcorjbMAAzajH?format=jpg\&name=small)

今回の結果

![](https://pbs.twimg.com/media/GHgc6iZboAAsMoA?format=png\&name=900×900)

おしい。

やり方は以下。

***

### PDFからテキストを抽出して自動でファイル名を付け、整理するPythonスクリプト

#### 目的と背景

日々の業務や研究でPDFファイルを扱う際、特定の情報を基にファイルを自動整理したい場面があります。特に、PDFの特定領域にあ

元記事を表示

データフレームを得て VIF を計算する関数

ChatGPT 3.5 に「VIF を計算する関数を書いて」とお願いすると,すぐに書いてくれるけど,for を使ったり,statsmodels 使ったりして,冗長だなあ。結果だって,別にデータフレームで返してくれなくてよい。

“`python
import pandas as pd
import numpy as np
from statsmodels.stats.outliers_influence import variance_inflation_factor
from statsmodels.tools.tools import add_constant

def calculate_vif(data):
data_with_const = add_constant(data)
vif_values = np.zeros(data_with_const.shape[1])
for i in range(data_with_const.shape[1]):
vif_values[i] = variance_inflation_fact

元記事を表示

Pythonで「引数にデフォルト値を設定する」の動作を確認してみた

# 概要

Pythonで「引数にデフォルト値を設定する」の動作を確認してみました。以下のページを参考にしました。

https://www.javadrive.jp/python/userfunc/index5.html

# 実装

以下のファイルを作成しました。
“`sample.py
def myfunc(num1 = 10, str1 = “未入力”, str2 = “不明”):
print(“年齢は” + str(num1) + “です。”, end=”)
print(“名前は” + str1 + “です。”, end=”)
print(“住所は” + str2 + “です。”)

myfunc(28, “Suzuki”, “Tokyo”)
myfunc(25, “Yamada”)
myfunc(30)
myfunc()

def myfunc(str1, list1 = None):
if list1 is None:
list1 = [“a”]
list1.append(str1)
return li

元記事を表示

[Python] Django+Gunicorn+NginxのDockerCompose環境

# はじめに
Djangoのローカル開発環境の簡易テンプレートを作成しました。
目的は、Pythonフレームワークに触ってみたいのと、Djangoの開発環境を知りたかったためです。

あくまで開発環境なので、Djangoのビルトインサーバーであるrunserverで事足りるかもしれませんが、実環境に寄せる目的でnginxとgunicornも用意することにしました。

https://docs.djangoproject.com/ja/5.0/ref/django-admin/#django-admin-runserver

以下は、Djangoのrunserver機能に関する記述です。
>このサーバーを実稼働環境で使用しないでください。セキュリティ監査やパフォーマンス テストは受けていません。(そして、それが今後も続くでしょう。私たちは Web サーバーではなく Web フレームワークを作成する仕事をしているので、運用環境を処理できるようにこのサーバーを改善することは Django の範囲外です。)

# 前提環境

https://qiita.com/perilla/items/ef

元記事を表示

lambda関数の基本概念と利用シーン

## はじめに
こちらはlambda関数に関しての備忘録。

## 🦁**結論**🦁
lambda関数は、小規模な匿名関数を一行で定義するための構文。

lambda 引数 : 処理 (引数)
“`py
lambda x: x + 1
“`

:::note info
押さえておくべき点
* 短い処理に使うことでコードの可読性が向上。
* ちょっとした処理を加えたい時に使われる関数。
* 引数は複数指定可能。
:::
***

:::note warn
利用シーン
* 他の関数の引数として直接記述する場合に有用
* sorted()やlist.sort()のkey引数にlambda関数を使うことがある。
* フィルタリングで使われるfilter()関数の引数として、特定の条件に基づいてリストから要素を選択するために使用されます。
* データ変換などで使われるmap()関数の引数として使用し、リストの全ての要素に対して変換を適用します。
* GUIやWebアプリケーション開発において、簡単なイベントハンドラーを定義するのに利用される。
:::
**

元記事を表示

Python3ではじめるシステムトレード:採択・棄却法による乱数生成

採択・棄却法が今一歩よくわからないので、いろいろ試してみました。メモとして残します。

ー乱数生成採択棄却法ー
1600

採択・棄却法とは, 任意の確率密度関数 $f(x)$ からサンプルを生成するために、提案分布と呼ばれる別のより扱いやすい確率密度関数$g(x)$を用いる方法である。この方法では、$g(x)$ から得られたサンプルが、目標分布$f(x)$ にどの程度適合しているかを評価し、適切なサンプルのみを採択して、$f(x)$ のサンプルとする。

$g(x)$と一様乱数$u$を利用して$f(x)$を密度にもつ確率変数$X$の乱数が生成
できる.

1.$g(x)$から乱数$x$と$U(0,1)$から一様乱数$u$をとる.

2.$r=l(x)/(Mg(x))$として$u\le r$ならば$x$を出力し,そうでないならば1.に戻る.

$g(x)$から$x$を生成し、それとは独立に一様乱数$u$を生成して、$f(x)$を密度にもつ確率変数$X$を生成する。その過程で用いられる$l(x)$は$f(x)$と$l(x)/c=f(x)$の関係にあり、$c$は正規化定数だが、$l(x

元記事を表示

Houdini Pythonの各種メンバー表

HoudiniのPythonでどんなメンバーやメソッドがあるのか毎回dirで調べてたので
もういっそ表にしてしまおう。
なんならQiitaでどこでも見れる様にしておこう、だがあくまで一覧。
気になるメンバーなりメソッドなり見つけたらそいつでググるべし。
[OBJ](#OBJ)、[SOP](#SOP)、[ジオメトリ](#ジオメトリのメンバー)、[TOP](#TOP)、[work_item](#ワークアイテムのメンバー)、[graph](#グラフのメンバー)
何か間違っていましたらご指摘下さい。(↑半分くらいページ内リンクが飛びません・・・)

## OBJ
PythonSOPでOBJのノードのメンバーを下記のコードで調べた。

“`ノードのメンバー
node = hou.node(‘/obj/geo1’)
for i in dir(node):
print(i)
“`

| | | | | |
|:-|:-|:-|:-|:-|
| \_OpNode__creationTime | clearUserDataDict | hide | moveParmTranslateInto

元記事を表示

フーリエ解析と過渡現象

# はじめに
連続かつ周期性のある関数は、三角関数の無限級数の和によって表現することが知られている。これをフーリエ解析という。今回はこれを応用して、方形波の電圧をRC直列回路やRL直列回路に印加した場合の電流の過渡応答についてフーリエ解析を用いて調査することを目的とする。具体的には、Pythonを用いて、方形波電圧を三角関数で表される交流に分割して、それぞれの場合について個々の電流を求めて、最終的にそれを重ね合わせの理によって合成する。
# 方形波
方形波電圧は、三角関数の無限和で表すことができる。ただし、プログラムでは無限和を適切に表現することが難しいので、有限和で表し近似する。

方形波を表現するプログラムとして以下のようなプログラムを書いた。

“` python forie_rec.py
from scipy import signal#方形波を作るのに使用
import numpy as np
import matplotlib.pyplot as plt
import japanize_matplotlib
import math
V=1

n= int(input(“和

元記事を表示

OTHERカテゴリの最新記事