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

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

django_datatables_viewで1ページ100件超えが表示できない不具合の対処法

Djangoでdatatablesのサーバー連携を使用できるdjango_datatables_viewで、1ページあたり100件を超えるレコードがすべて表示できない不具合の対処法を紹介します。とてもわかりにくい不具合になっており、目視だと気が付かない可能性があります。

※ これは2021/03/28に個人ブログで公開した記事を移植したものです。

## django_datatables_view について

django_datatables_viewとは、datatablesのサーバー連携を使用できるDjangoのクラスベースビューです。
datatablesとは絞り込み・ソートなど多機能なテーブルをかんたんに実装できるjQueryプラグインです。

Djangoの管理画面よりもカスタマイズ豊富な上に、ほとんどプログラムを書くことなく、(デザイン, フロントエンド, バックエンドも)何も考えずにデータベース内容を一覧に表示できます。

![django-datatables-viewを使用しているテーブルのスクリーンショット](https://qiita-image-st

元記事を表示

Alexaとのマンネリ生活にサヨナラを Pythonで始めるAlexaスキル開発

# HelloAlexa!(読み飛ばしOK)
2022年のブラックフライデー、私はAlexaEchoShow5(以下、Alexa)をSwitchBotとともに購入し、生活が激変した。

タッチパネルに触れずとも、声だけで電気を点けたり、テレビのチャンネルを変更できる。これは私にとって大変目新しく非常に刺激的な体験だった。当初、声で端末を操作するなんて恥ずかしいと考えていたが、今では家電を声で操作する便利さにすっかり慣れ、「Alexaなくして我が生活なし」といった感じになっている。ところが所詮私も人間、慣れるとどんどんマンネリ化していき「最近、うちのAlexaは電気を点けたり消したりすることに終始していて、何か物足りないな」と感じるようになった。さて、この物足りなさを解消するにはどうすればよいのか?

解消のカギを握るのが今回紹介するAlexaスキルだろう。以前から「Alexaスキルの開発ができるとAlexaを使っていろいろできるようになるぞ(ざっくり)」と小耳にはさんでいたので、その存在自体は知っていた。しかし、ほとんどPythonしか触らないひよっこ日曜エンジニアの私には、何から手を

元記事を表示

pythonにおけるクラスインスタンスのコピー

pythonにおけるクラスインスタンスのコピーについて、copyモジュールのcopyとdeepcopyの違いを確認したので、そのまとめと実験の結果です。

# 結論
pythonのコピーモジュールの`copy.copy`と`copy.deepcopy`について、それぞれ以下の動作をします
## copy.copy
– 新たなインスタンスが生成される
– 各インスタンス変数(self.xxx)は、コピー元のインスタンス変数それぞれにcopy.copyを行った値を持つ
– つまり、イミュータブルなオブジェクトであれば値のコピー、ミュータブルなオブジェクトであればコピー元のインスタンスのインスタンス変数への参照を持つクラスインスタンスが生成される

## copy.deepcopy
– 新たなインスタンスが生成される
– 各インスタンス変数は、コピー元のインスタンス変数それぞれにcopy.deepcopyを行った値を持つ
– つまり各インスタンス変数は、イミュータブル/ミュータブルに関わらず、コピー元のインスタンスと同じ値を持った新たなオブジェクトとなる

# 実験
## 実験内容
以下のコ

元記事を表示

postqueue-pをcsvにする方法

“`
import csv
from datetime import datetime, timedelta
import sys

def convert_to_datetime(arrival_time_str):
“””指定された日時文字列をdatetimeオブジェクトに変換する”””
current_year = datetime.now().year
full_date_str = f”{current_year} {arrival_time_str}”
arrival_datetime = datetime.strptime(full_date_str, ‘%Y %a %b %d %H:%M:%S’)
if arrival_datetime > datetime.now():
full_date_str = f”{current_year – 1} {arrival_time_str}”
arrival_datetime = datetime.strptime(full_date_str, ‘%Y %

元記事を表示

APIをテストツール「Postman」を使ったDjangoとのCRUD機能実装(実装編)

## 概要

今回は新しい画面機能を作成し、「Postman」と並行してフロント / バック間のデータ挙動の可視化と構成の実装について書いていきます。

### 実装機能

今回実装していくのは、ちょっとしたコツや記事を[ナレッジベース](https://www.stock-app.info/media/knowledge-database/)風にまとめる「Tips」というコンテンツです。

– Django REST Framework(DRF)を使ったAPI連携、CRUD機能
– 外部キーを参照したCRUD機能
– パラメータの利用
– パラメータを参照したReact routerでのルーティング

| 項番 | 記事 |
| :— | :— |
| 1 | [React + Django + CORSを使ったフロントエンド / バックエンドのデータ連携](https://qiita.com/xinome/items/8319a7f85424bd6e62de) |
| 2 | [Django 管理画面のカスタマイズ](https://qiita.com/

元記事を表示

【勉強メモ】Rasa (1)

# Rasa

## 環境構築
“`batch
pip install rasa
pip install ginza ja-ginza
“`

“`batch
mkdir Rasa
cd Rasa
rasa init –no-prompt
“`

## 日本語設定
“`yaml:config.yml
recipe: default.v1

assistant_id: placeholder_default

language: ja

pipeline:
– name: SpacyNLP
model: ‘ja_ginza’
– name: SpacyTokenizer
– name: SpacyFeaturizer
– name: SpacyEntityExtractor
– name: RegexFeaturizer
– name: LexicalSyntacticFeaturizer
– name: CountVectorsFeaturizer
– name: CountVectorsFeaturizer
analyze

元記事を表示

J-Quants APIを使って上場銘柄一覧を取得する

## 概要

個人的に株の分析を行うにあたり、J-Quants APIを使って上場銘柄一覧を取得した際の手順となります。

## 環境

– mac OS: 13.5.2
– Python: 3.12.1

## J-Quants APIとは

株価や財務などの金融データをヒストリカルで簡単に取得できる、個人投資家向けのAPIデータ配信サービスです。
JPX総研により提供されています。

https://jpx-jquants.com/

## 注意点

J-Quants APIサービス利用規約を事前に確認しました。
利用する際に注意すべきと感じたのは下記の2点です。

– 登録ユーザーの私的使用のみ利用できる事
– 商用もしくは学術目的での利用は禁止である事

https://jpx-jquants.com/termsofservice

## 上場銘柄一覧を取得するまでの手順

### アカウント作成

トップページから【アカウントを作成する】より、手順にしたがいアカウントを作成します。

プランを選ぶように表示されるので、任意のプランを選びます。
今回はFreeプランを選択しまし

元記事を表示

【機械学習】AUCとGini係数の関係を理解する【評価指標】

# はじめに
二値分類の評価指標について
「**AUCとGini係数ってどんな関係だっけ?**」
と毎回忘れては調べているので、いい加減覚える意味で体系的にまとめてみる。

この記事では
– AUCとは何か?
– Gini係数とは何か
– 両者はどんな関係があるか?

を理解することを目的とする。

# 最初に結論
AUCとGini係数の間には

“`math
Gini=2AUC−1
“`
の関係がある。
AUCは0.5から1の範囲を取るため、Gini係数は0から1までの範囲を取る。
どちらも値が大きいほど分類性能が良いことを表す。
最終的にこの式を理解することを目的としよう。

# AUCを理解しよう

AUC (Area Under the Curve)は**二値分類**における有名な**評価指標**の一つであり、文字通り、「**ROC曲線下の面積**」を表す。

## ROC曲線とは?
ROC (Receiver Operating Charastaristic Curve)は受信者操作特性と呼ばれるカーブを表す。

以下の図にあるようなカーブがROC曲線だ。(図はすべて

元記事を表示

LOD2建築物モデル自動生成ツールの環境構築時に発生したエラー

## はじめに

国土交通省が開発を進めるPLATEAUの「LOD2建築モデル自動生成ツール」の環境構築時にはまったポイントについての備忘録です。使用するツールについては以下を参考にしてください。

## 参考サイト

https://github.com/Project-PLATEAU/Auto-Create-bldg-lod2-tool

https://www.mlit.go.jp/plateau/file/libraries/doc/plateau_tech_doc_0056_ver01.pdf

https://github.com/Project-PLATEAU/Auto-Create-bldg-lod2-tool/blob/main/docs/USER_MANUAL.md

## 仮想環境構築
venvで作成した仮想環境は移動・コピーしたりすることが出来ません。ディレクトリ名が完全に一緒だったら使用できるかもしれません。.pyファイルを実行しようとすると,以下のように実行することが出来ません。

“`markdown:コマンドプロンプト
.pyのあるディレクトリ名> p

元記事を表示

Pandasの分析前のデータ確認

## はじめに
Pandasの分析前のデータ確認に関しての備忘録です。
初心者です😅
もし間違いがあれば、ご指摘いただけると助かります🙇

## 🦁**結論**🦁
Pandasを使ったデータ分析をする前に行うべきこと
「データの概要確認」
「カラム名の確認(取得)」
「データ型の確認(取得)」

この操作を理解する必要がある。

:::note info
押さえておくべき点
* Pandasでの分析する前に正しいデータなのかを確認することは重要。
:::
***

:::note alert
注意点
* .describe()では基本は整数値の列の情報を取得できる。
* .describe()文字列の情報はinclude=’all’を加える必要がある。
:::

***

## **Pandas 分析前の関数一覧**

## **.head()**
データフレームの最初の数行を表示させる。
デフォルトは5行。
“`py
print(df.head(2)) # 最初の2行を表示
“`
***

元記事を表示

pythonでJSONを扱う方法

# 目的
 python初心者です。
 webAPIで取得したJSON形式データをpythonで取り扱いたいと思いました。

JSONとは、{}などを用いた記法であり、そのままでは`文字列`型であることから、
`dict`型などpythonオブジェクトに変換して取り扱う必要があります。

エンコードとデコードの意味もよくわかっていなかったので調査しました。

https://docs.python.org/ja/3/library/json.html

# JSONライブラリ
 最初にimportします。

“`python
import json
“`

# エンコード方法(pythonオブジェクトをJSON形式に変換)
 pythonオブジェクトをJSON形式に変換するするために`.dumps`メソッドを使用します。

 変換されたJSON形式のデータ型は`str`型です。

 よく似た名前のメソッドに`dump`がありますが、これはデータをJSON形式にエンコードしてファイル保存するメソッドですので、間違えないようします。

元記事を表示

VS-Codeでデバッグ開始が機能しない

# 【環境】
OS: Windows11 Pro(23H2)
Python 3.12.2 64bit
Visual Studio Code 1.86.2
Python Debugger V2024.0.0

# 【症状】
* VS-Codeでデバッグ開始が機能しない
* デバッグ無しで実行は機能する

# 【対処方法】
Pythonのバージョンをダウングレードする
Python 3.12.2 64bit ⇒ Python 3.10.7 64bit

元記事を表示

2つの素数の和で表される数(ゴールドバッハの予想を仮定して)

### 【例題 1】 N以下の正の整数で2つの素数の和で表される数の個数を求めよ

まず例として$N=20$のとき素数の数を数えると8個あります。

“`python
import sympy as sp
N = 20
primes = list(sp.primerange(N+1))
print(len(primes), primes)
# 8 [2, 3, 5, 7, 11, 13, 17, 19]
“`

この中から重複を許して2個足し合わせてできる数を求めます。

“`python
from itertools import combinations_with_replacement as combr
pp = set([sum(ps) for ps in combr(primes,2) if sum(ps) <= N ]) print(f"p2 = {pp}") #p2 = {4, 5, 6, 7, 8, 9, 10, 12, 13, 14, 15, 16, 18, 19, 20} ``` これだけだと分かりづらいので奇数と偶数に分けます。 ```python

元記事を表示

ABC342回答メモ

# 0.はじめに
 3連休中日なので、うっかり忘れないよう気をつけながら参加。
A問題が150点と歯ごたえのある問題から始まりましたが
Cも350点と若干難しめ。
それでも自分的最低ラインのD問題までは解けたので
まぁ満足でした。時間は結構ギリギリでしたが。
 レートは微増の979と最高値更新。そろそろ緑コーダを名乗っても
よさそうかなと思いました。

# 1.A – Yay!
  意外と面倒な問題。
いろいろやり方はありそうではありますが
なんとなく思いついた以下で対応。
【実装】
 ・辞書を用意
 ・文字列を頭から見ていく
  -辞書にない場合はキーに文字、値に位置を登録
  -辞書にある場合は、値を-1に変更
 ・辞書の値の最大値を出力して終了

 https://atcoder.jp/contests/abc342/submissions/50565226

# 2.B – Which is ahead?
 求められることを素直に実装すればよさそうな問題。
素直に実装してAC
【実装】
 ・辞書を用意
・辞書を用意

元記事を表示

StableDiffusionでLoraを使う(コードから使う)

# 1行でテイストが変わる

Stable Diffusion はテキストから画像を生成してくれる AI ですが、
**Lora** は元のモデルにつけたしであるテイストを加えることができるものです。

たとえばこれは

“`
a machine learning boy
“`

というテキストから Stable Diffusion で生成した画像ですが、

![boy_snow (9).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/235259/a2d42f52-7a34-3f47-57a8-2aa9b3255ecc.png)

水彩画を学習した Lora を Stable Diffusion にロードして同じテキストで生成すると、

![boy_snow (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/235259/e702b78e-7a35-97f9-09a1-9c7226126d59.png)

こうい

元記事を表示

ReactとFlaskの組み合わせにおけるCORSの重要性と設定方法

## はじめに

近年、フロントエンドとバックエンドの分離が一般的な開発パターンとなっています。このような構成では、Reactのようなフロントエンドフレームワークを使ってUIを構築し、Flaskのような軽量なバックエンドフレームワークをAPIサーバーとして使用することがよくあります。しかし、このようなアーキテクチャを採用する際、Cross-Origin Resource Sharing(CORS)に関する理解と適切な設定が大切で、本記事がその備忘録です。
## CORSとは?

CORSは、ウェブページが異なるオリジン(ドメイン、プロトコル、ポート)のリソースにアクセスすることをブラウザが許可するようにするセキュリティ機能です。デフォルトでは、ブラウザは同一オリジンポリシーを強制し、異なるオリジン間のリソース共有を制限します。しかし、実際のアプリケーションでは、フロントエンドとバックエンドが異なるオリジンに存在することがよくあります。このとき、CORSポリシーの設定が必要となります。

## FlaskにおけるCORS設定

FlaskでAPIを構築し、Reactアプリケーションから

元記事を表示

react + backend(flask)のviteを使った環境構築備忘録

## 前提
以下の環境を想定しています。
“`
npm -v : 9.8.0
node -v : v20.4.0
python3 –version : 3.12.2
create-vite@5.2.1
“`
## 手順
2024年現在最新の`vite`を使ったコマンドは以下の通り

①まずルートのディレクトリを作る
②その下に`backend`フォルダを作る
③ルートに戻って以下のコマンドを実行し、`frontend`フォルダを作る
“`
npm create vite@latest frontend — –template react
“`
④`fronend`に`cd`し、`npm install`する。

## 大切なこと

– `frontend`と`backend`を完全に切り離して開発できること。
– `frontend`と`backend`の通信はhttpを通してだが、`SOP`(`Same-Origin Policy`)が引っかかるので`CORS` を設定しないといけないこと。(`flask`だったら`flask-cors`
– backendの言語はな

元記事を表示

Windows環境でMeCabとNEologDを使用してPythonで形態素解析を行う方法(環境構築)

# 構築環境の前提
本テーマの前提環境
・Windows
・Python3.11.6

他の方の記事を参考にしましたが自分のパソコンの環境では上手くいかなかったので、自分が上手くいった方法を記事に残しておくことにしました。

# 1.MeCabのダウンロード
MeCabのインストール方法は以下のサイトに参照してください。

https://www.kkaneko.jp/ai/win/mecabinst.html

環境変数のPATHに以下のコードを追加することを忘れなく。
PATHを通さないとMeCabは動作しません。
サイト通りに作業しPATHを通しても上手くいかない場合は、コマンドプロンプト(cmd)を再起動してください。
“`
C:\Program Files (x86)\Mecab\bin
“`

# 2.PythonとMeCabを連携する
python上でMeCabを動作させるために、その2つを連携する必要があります。
連携させるためにcmdに以下のコマンドを入力してください。

“`
pip install mecab-python3
“`
インストールできたら、P

元記事を表示

ABC342のA~F問題をPythonで解説(復習)

## はじめに
### 関係するリンク(参考文献など)
– [今回のコンテスト](https://atcoder.jp/contests/abc342)
– [D問題のサポート](https://qiita.com/snow67675476/items/e87ddb9285e27ea555f8)
– [F問題の公式解説](https://atcoder.jp/contests/abc342/editorial/9345)
### 筆者について
– [Atcoderアカウント](https://atcoder.jp/users/mattsunkun)
– [今回の成績(oooooxx)](https://atcoder.jp/users/mattsunkun/history/share/abc342)
– [解説で示したA問題の提出](https://atcoder.jp/contests/abc342/submissions/50619821)
– [解説で示したB問題の提出](https://atcoder.jp/contests/abc342/submissions/5061992

元記事を表示

ABC342をPythonで(A~E)

HUAWEI Programming Contest 2024(AtCoder Beginner Contest 342)の解答等のまとめ

https://atcoder.jp/contests/abc342

# A問題
1文字なのが何か求めて、そのインデックスを出力
“`python:A
s = input()
t = sorted(list(s))
diff = t[-1] if t[0] == t[1] else t[0]

print(s.index(diff) + 1)
“`
# B問題
全探索しても間に合うので、$a$と$b$のインデックスを毎回調べて答えればよい
“`python:B
n = int(input())
p = list(map(int, input().split()))

for _ in range(int(input())):
a, b = map(int, input().split())
print(a if p.index(a) < p.index(b) else b) ``` # C問題 $S$を毎回変更していては間

元記事を表示

OTHERカテゴリの最新記事