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

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

Gitにプッシュしたら、サーバー側で自動プルされるようにした

# サーバーへのデプロイ
### 現状
GithubへPush -> サーバー側でPull -> 自動リコンパイル

の流れで開発中のアプリケーションを実行していましたが、毎回毎回サーバーに繋いで`Pull`するのはめんどくさいです。

### 目標
GithubへPush -> サーバー側で自動Pull -> 自動リコンパイル
の流れにし、手動の作業はGithubへの`Push`だけにしたいと思います。

# 使うもの
### Github
プロキシサーバーの443に向けてGithubからWebhookを送信するように設定し、プロキシサーバーからデプロイサーバーに向けてリバースプロキシでWebhookを転送します。

## プロキシサーバー
### Nginx
いつものごとく、Githubから`https://webhook.example.com`に飛んでくるWebhookを`http://192.168.1.x:5000`にプロキシします。

### デプロイサーバー
### Flask
Nginxから飛んできた`Webhook`を読み、`subprocess`を使って`git

元記事を表示

Gemini pro visionで画像読み込もうとしてエラーTypeError: Could not create `Blob`, expected `Blob`, `dict` or an `Image` type(`PIL.Image.Image` or `IPython.display.Image`).

## 問題

Gemini Pro Visionで画像を読み込もうとしたら
下記エラーが表示された
“`
TypeError: Could not create `Blob`, expected `Blob`, `dict` or an `Image` type(`PIL.Image.Image` or `IPython.display.Image`).
“`

## 解決方法

“`
from IPython.display import Image
img = Image(image_path)
“`

## 原因というかもともとのコード

“`
img = PIL.Image.open(image_path)
img
“`

## メモ

PILで画像を読み込んでいた
PILというかpillowというかよくわかってない顔

IPython.display を利用するとうまく読み込めた

元記事を表示

J-GLOBALの検索結果をダウンロードしたBibTeXファイルをPhythonでcsvファイルに変換

J-GlobalはJSTが運営する日本の科学技術に関する文献、特許、研究者などの情報検索サービスです。
[J-Global](https://jglobal.jst.go.jp/)
日本の研究開発動向を調査・分析するために、J-Globalでの検索を使い始めました。
J-Globalは検索検索をBibTeXファイルでダウンロードすることができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/481830/b2567992-86de-9496-803f-2f0985f2c5f5.png)

今回は、データサイエンスで扱い易いcsvファイルへ変換して保存するコードをPythonで作成しました。

## Pythonのプログラミング環境
Google Colaboratory

## Install
bibtex ファイルを解析する python ライブラリのBibtexParserをinstallします。
[BibtexParser](https://bibtexparser.rea

元記事を表示

pandas rolling関数で「groupby」と「頻度コード日付指定」を併用する

# はじめに

時系列データで特徴量を作成する際、移動平均など特定の期間の幅でデータを扱うことが多いです。
rolling関数を使うと簡潔な記述ができ、処理速度も速いです。

基本的な使い方は割愛します。
[pandasで窓関数を適用するrollingを使って移動平均などを算出 | note.nkmk.me](https://note.nkmk.me/python-pandas-rolling/)

# 「Groupby」と「頻度コード日付指定」を併用する場合

グループ毎かつ日付列を基準にrolling関数を用いて集計を行う場合、注意すべきことが多いです。

## 例:各グループごとに10日間の移動平均を算出し列追加

– データ

“`
Group Date Measure
0 A 2023-01-07 21:25:23 53
1 A 2023-02-01 13:16:21 51
2 A 2023-04-20 12:12:29 44
3 A 2023-08-

元記事を表示

Pythonにおけるオブジェクト指向プログラミングの基本

# オブジェクト指向プログラミング(OOP)とPython

オブジェクト指向プログラミング(OOP)は、Pythonを含む多くのプログラミング言語で重要な概念です。この記事では、Pythonでのオブジェクト指向プログラミングの基本的な概念、その主要な要素、および具体的なコード例を通じて、その実用的な側面を勉強していきます。これにより、プログラマーとしての効率的なコーディングスキルと理解を深めることができたら幸いです。
またこの記事では理解しやすいように車で例えて説明もしていこうと思います。

## 目次
1. [Pythonにおけるオブジェクト](#1-pythonにおけるオブジェクト)
2. [オブジェクト指向プログラミングの要素](#2-オブジェクト指向プログラミングの要素)
2.1 [クラスとインスタンス](#21-クラスとインスタンス)
2.2 [属性とメソッド](#22-属性とメソッド)
2.3 [コンストラクタ](#23-コンストラクタ)
3. [オブジェクト指向の特徴](#3-オブジェクト指向の特徴)
3.1 [継承とポリモーフィズム](#31-

元記事を表示

Homebrewのpyenvでinstallできない問題

## はじめに
### 想定読者
Pythonの仮想環境を作ろうとしてMacの`pyenv install x.x.x`でインストールしようとしたけどうまくいかない人

– PC
– MacBook Air (M1, 2020)
– OS
– MacOS Sonoma 14.2.1

## 状況
Djangoでアプリを作ろうと思って、pyenv + venvで仮想環境で環境構築をしようとして、
“`:zsh
$ pyenv install 3.11.3
“`
とすると、
“`:出力結果
python-build: use openssl@1.1 from homebrew
python-build: use readline from homebrew
Downloading Python-3.11.3.tar.xz…
-> https://www.python.org/ftp/python/3.11.3/Python-3.11.3.tar.xz
“`
という感じで固まってしまっていました。
もともとpyenvは依存パッケージが多いらしく、`brew`で以下のパッケージ

元記事を表示

TKinterで複数の日時が選択可能なカレンダーを作る

## 0. 初めに
みなさん、TKinterしてますか?
僕はしてます
TKinterとはPythonの標準ライブラリで簡単にGUIアプリを作成することができます
細かいチュートリアルなどはこちらが分かりやすかったので参考にさせていただきました
https://qiita.com/nnahito/items/ad1428a30738b3d93762

## 1. なぜ作ったか
これはある日僕が仕事での業務アプリを作っている時のこと、カレンダーのポップアップが出てきて日付を複数選択するUIを作る必要が出てきました
色々調べた結果、TKinterにはカレンダーを表示するライブラリがありました。
しかし、そちらを使おうとするとどうしても複数選択にバインドすることができない。
ないなら自分で作れ。エンジニアとしての本能が僕を駆り立てて今回作成にあたりました。

## 2. 実装

“` Python
import tkinter as tk
import datetime
import calendar
from datetime import datetime, timedelta

de

元記事を表示

【Python】__init__に書いたimport文でunused警告を出さないようにする

## 事象
ディレクトリをパッケージ化するとき、`__init__.py`に書いた`import`文
“`python:__init__.py
from LibraryRoot.PackageDirectory.Modulename import some_function
“`
とだけ書くと、
“`
imported but unused
“`
警告が出てくる。(ライブラリとして書いているので`unused`として当然)

主に`Pyflake`系統の静的解析で見られる。

## 解決
`import`したオブジェクト名を`__all__`に代入する

“`diff_python:__init__.py
from LibraryRoot.PackageDirectory.Modulename import some_function

+ __all__ = [
+ “some_function”
+ ]
“`

`__all__`の正体についてはこちらを参照: [Pythonの特殊変数__all__について現役エンジニアが解説【初心者向け】](https://m

元記事を表示

[WIP]決算短信の内容の変化をChatGPTを使って見つけてみる【Python / LangChain / VectorstoreIndexCreator】

まだ途中で、未完成です。

# 背景
決算短信PDFの内容の変化を計算したい。

# やること
1. 二つの決算短信のpdfを渡したら、決算短信間の類似度を計算し、その変化を評価してみる。

# 方法
1. 環境構築
2. まずは一回「LangChain」というライブラリを使ってみる
3. 過去の決算短信と比較し、決算短信間の類似度を計算してみる

# 実装

## 1. 環境構築

まずはPythonでの開発を始める前に、必要なライブラリをインストールする。
今回は、LangChainとOpenAIのライブラリ、そしてOpenAIのAPIキーが必要。
環境構築はPoetryとasdfで行った。Poetryとasdfでの環境構築の方法は別の記事にメモしてある。

https://qiita.com/TIshow/items/71c1200392202902f4b4

– LangChainのインストール:`poetry add langchain`でインストール。
– OpenAIのインストール:`poetry add openai`でインストール。
– Indexesを実行するため

元記事を表示

ループメニュー1を解いていく3

https://paiza.jp/works/mondai/loop_problems/loop_problems__seq_multi

### Python
“`py
N = int(input())
A = [int(i) for i in input().split()]
for i in A:
print(i * 2)
“`
### PHP
for文で、要素数−1しているのは
0から数えるので、
0,1,2,3,4で要素5個だけど、−1して4までにする必要があるからですね
Pythonと違うので注意したいところです
まあこの部分は$N-1 でもよいのですが

“`php

“`

https://paiza.jp/works/mondai/loop_problem

元記事を表示

ChatGPTとPythonで学ぶ ViT:画像分類編

おはこんばんちわ。今日も引き続きChatGPT先生をお迎えして、「ChatGPTとPythonで学ぶ ViT:画像分類編」というテーマで雑談したいと思います。それではChatGPT先生、よろしくお願いします。

### **assistant**:

はじめまして、ChatGPTです。早速ですが、ViTについて少し詳しくお話ししましょう。

ViT(Vision Transformer)はGoogle Researchが発表した新たな画像分類手法で、一般的なCNN(Convolutional Neural Network)の代わりにTransformerという自然言語処理で広く使われるアーキテクチャを利用しています。

ViTでは、画像を固定サイズのパッチに分割し、各パッチを1Dベクトルに変換して入力とします。さらに、位置情報をエンコードした位置エンベディングを追加します。それらをまとめてTransformerの入力とし、最終的なクラス予測は、Transformerの出力のうち特定の一つ(通常は最初のトークン)をMLPに通したもので行います。

ViTは大量のデータと計算

元記事を表示

Pythonを使用してExcelの一列に書かれたデータを複数列に分割するGUIアプリを作成

# 何の役に立つのか?
まず一列に書かれたデータがあるとします。
| 1 |
|:-:|
|データ1|
|データ2|
|データ3|
|データ4|
|データ5|
|データ6|

これを以下のように3列にしたいという時

| 1 | 2 | 3 |
|:-:|:-:|:-:|
|データ1|データ2|データ3|
|データ4|データ5|データ6|

手動でやっていては時間の無駄です。
この例では6行のデータを複数列に直すだけなので手動でも簡単にできますが、
100行とか1000行とかのデータを複数列に直そうとするとものすごく時間がかかります。
この問題をPythonでGUIアプリで解決します。

# 使用方法
私が作成したコードを紹介して、その使い方を説明します。
最後にコードの説明をします。
## 環境
・Python 3.x
・Tkinter(Python標準ライブラリの一部)
・Pyperclip(インストールが必要: pip install pyperclip)

## コード全体
以下が作成したコード全体です。
コピペして保存してみてください。

“`python:split_ex

元記事を表示

Pythonで「関数を呼び出すときに引数を使って値を渡す」の動作を確認してみた

# 概要

Pythonで「関数を呼び出すときに引数を使って値を渡す」の動作を確認してみました。
以下のページを参考にしました。

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

# 実装
以下のファイルを作成しました。
“`sample.py
def myfunc(str1, num1):
print(“Name: ” + str1 + “, Old: ” + str(num1))

myfunc(“Yamada”, 28)
myfunc(“Suzuki”, 32)

def myfunc(mylist):
print(“Name: ” + mylist[0] + “, Old: ” + str(mylist[1]))

myfunc([“Yamada”, 28])
myfunc([“Suzuki”, 34])

def myfunc(num1, num2):
return num1 + num2

myfunc(10, 20)
“`

以下のコマンドを実行しました。
“`
$ python3

元記事を表示

plotly_3d

“`python
import streamlit as st
import pandas as pd
from pathlib import Path

import plotly.graph_objects as go
import plotly.express as px

def main():

st.header(‘Powerd by Plotly’)

# データ取得処理
df1 = pd.read_excel(‘positions.xlsx’)

# 3D散布図を作成
fig = px.scatter_3d(df1,
x=’X’, y=’Y’, z=’Z’,
title=’3D Point Cloud’,
color=’category’
)

fig2 = px.scatter_3d(df1, x=’X’, y=’Y

元記事を表示

Azure Functionsで関数が表示されない。

# 起きた問題
PythonでAzure Functionsを利用していてAzure Portal上で関数が表示されなくなった。

# 対処方法
import osやimport requestを関数内に移動した。
import loggingとimport azure.functions as funcと並列にimport osやimport requestを書くとazure portal上から関数がなくなる。

## 対処前
“`functuon_app.py
import azure.functions as func
import logging
import os
from urllib import request
from urllib import parse
import json

app = func.FunctionApp(http_auth_level=func.AuthLevel.ANONYMOUS)

@app.route(route=”http_trigger”)
def http_trigger(req: func.HttpRequest) -> f

元記事を表示

今更だけどPythonの覚書

# はじめに
仕事で大量のCSVファイルから集計してほしいという依頼が来ました。
データを解析するためにPythonを使ってみました。
※今までなら、ExcelVBAでやってたんですが、せっかくなので新しい学びもほしいなと思った次第。

# CSVファイルを操作する
## 読み込み方

“`Python
filename = ‘target.csv’
with open(filename, encoding=’utf8′, newline=”) as f:
csvreader = csv.reader(f)
for row in csvreader:
print(row)
“`

こんな感じで取り込んだデータがrowに格納されるのでそれを利用すればOK

## フィールドサイズが大きいCSVファイルを取り込む
標準の’csv’モジュールでは、131072(約128KB)がデフォルトの上限です。
以下のようにすることで制約によるエラーを回避することができます。

“`Python
import csv

OVER_SIZE_LIMIT = 200_

元記事を表示

ウオッ?! Django REST FrameworkとAWS SNSでアルティメットにクールなSMS送信を実現!!!🐰

## 概要
Django REST FrameworkとAWS SNSを利用してSMSテキストを送信する実装を説明します!

## 使用技術
“`pyproject.toml
python = “^3.11.2”
Django = “^4.2.7”
djangorestframework = “^3.14.0”
boto3 = “^1.28.84”
injector = “^0.21.0”
pydantic = “^1.10.7”
gunicorn = “^21.2.0”
“`

## 説明する前の前提
コードの細部の説明はあまりしません
また、インポートもとのコードが不要な場合は明記していません
ご了承ください🙇

## AWS SNSとは
以下、公式サイトに説明は任せる

https://aws.amazon.com/jp/sns/

## まずはコードの確認

“`sms_view.py
from rest_framework import status
from rest_framework.decorators import action
from rest_fra

元記事を表示

Tesseract、Vision API、Document AIでのOCR比較

## 概要
カスタムGPTやその他のLLMにテキストデータを読み込ませる機会が増えそうなので、画像データのテキスト化の選択肢を検討します。

## 利用する環境
– Google Colab
– Google Drive
– ChatGPT4(コード生成)

※ここで紹介するPythonコードはすべてChatGPT-4が出力したものです。私は指示や確認のみを行い、コードは書いていません。

### Googleドライブのマウント
今回は画像ファイルやテキストファイルをGoogleドライブに格納するので、事前にマウントしておきます。

“`python
from google.colab import drive
drive.mount(‘/content/drive’)
“`

## 使用する画像

画像は何でもよかったのですが手元にふるさと納税の案内があったので、これをスキャンしてPNG形式で使用しています。

![image1 2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147689/

元記事を表示

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

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

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

https://lit.link/mer6177999

# A – Long Loong

## 問題
レベル $X$ の **龍文字列** を、 $1$ 個の `L`, $X$ 個の `o`, $1$ 個の `n`, $1$ 個の`g` をこの順に並べた長さ $X+3$ の文字列とします。
レベル $N$ の龍文字列を出力してください。

https://atcoder.jp/contests/abc336/tasks/abc336_a

## 考察
$2$ つの文字列をくっつけた新しい文字列を取得した

元記事を表示

Python公式とAnaconda、Jupter Notebookの関係/違いについて

# 概要

Pythonの学び始めや使い始めの場面で「Pythonで開発するための環境導入手順」として目にするだろう「Python公式、Anaconda、Jupter Notebook」の3キーワードの関係と、それぞれの違い、を解説します。

# TL;DR (TooLong: Didn’t Read)

Python公式のインストーラーで得られるものは、Python実行環境と標準ライブラリを含むセットです。インストール後に利用者の目的に応じて、追加でIDEやパッケージ管理ツール、3rdパーティション製ライブラリの導入を行って、目的に合った開発環境に作り上げていく場面に適します。

Anacondaとは、データサイエンスと科学技術計算での利用向けにライブラリやIDEその他を揃えてセットにしたディストリビューション、のことです。

Jupyter NotebookはIDEの1つであり、単一ファイル内でPythonコードや説明、実行結果まで含めて統合的に扱える形式を特徴とします。Pythonの実行環境を内包し、スタンドアロンでも利用可能ならブラウザーベースのIDEです。

# 想定読

元記事を表示

OTHERカテゴリの最新記事