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

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

React から利用する API のロギングでロケーション情報を格納する

## はじめに
API ログを取っていますか、便利に使えていますか?

ログにもいろいろありますが、本記事では Backend API での、アクセスごとのリクエスト・レスポンスのログについて焦点を当てます。このログを使うと、それぞれのエンドポイントがどれぐらい使われているのか、レスポンス速度はどうなのか、エラーレートは問題ないかなどを確認することができますね。

今回は、実際にサービスを運用している中で欲しくなって追加した、特に React などを利用した SPA(Single Page Application) の場合に有効な、ロケーション情報の取得について共有します!

## ロケーション情報の取得
SPA では、それぞれのページで必要な API を叩くことになるため、ページと API は一対一に対応しません。
こんな場合に、ブラウザの URL である、ロケーション情報を API のリクエストの中身に含めて、API ログ情報に付与しておくととても便利なデータになります。

具体的には、以下の3項目です。

| パラメータ | 説明 |
| — | — |
| locati

元記事を表示

FullCalendar.jsを使ってカレンダーFlaskアプリを作る

FullCalendar.jsを使って簡単にカレンダーFlaskアプリを作る方法をまとめました。

#### 最終形態
![2021101802.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192434/a3b1d27b-9155-b555-4792-f42fcd9f41f7.png)

### Flaskのセットアップ
##### 1. **app.py**を作成
“`python/app.py
from flask import Flask, render_template

app = Flask(__name__)

@app.route(‘/’)
def home():
return render_template(‘index.html’)

if __name__ == ‘__main__’:
app.run(host=’0.0.0.0′, port=80)
“`

##### 2. **templates**フォルダーを作成し、フォルダー内に**index.

元記事を表示

有限要素法の弾塑性解析をPythonで実装する(1次元トラス要素)

# 概要
有限要素法の弾塑性解析をPythonで実装してみます。
ただ、最初から多次元の弾塑性を考えるのは難しいので、まずは1次元で実装してみます。
本来は大変形解析になるので、有限ひずみ理論を使う必要がありますが、今回は簡単のため微小ひずみ理論に基づいた陰解法で実装します。
また、材料の特性は下記のように線形硬化で表せる前提です。

また、この記事では下記の例題を解いてみます。

![例題.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/762468/c503b9f4-c67e-e388-a99c-d4adeda684a4.png)

# 弾塑性解析の処理の流れ
弾塑性解析では、増分解法を用いた解析が行われます。
増分解法では荷重もしくは強

元記事を表示

交差するはしご問題(Crossed Ladders Problem)の整数解

### 交差するはしご問題 (Crossed ladders problem)
Wikipediaの英語版にある[Crossed ladders problem](https://en.wikipedia.org/wiki/Crossed_ladders_problem)ですが日本語訳がないので日本ではあまり馴染みのないかもしれません。幅がwで壁で挟まれた道路に長さがaとbのはしごをかけたときhを求めよという問題です。

### この問題の整数解

[Wolfram MathWorldにも同様の記事](https://mathworld.wolfram.com/CrossedLaddersProblem.html)がありますがここにとても**興味深い記述**があります。変数の書き方が違いますが、要はすべての辺が整数になっている

元記事を表示

VSCode + Markdownでお手軽電子出版

# 概要

Qiita 読者の中にどれくらい電子書籍の発行に興味がある方がいるのか未知数ですが、制作環境がかなり巡り会えた感があったので投稿します。
基本はMarkdownだけで ePub 形式という電子書籍が発行できてしまいます。
※ePub の電子書籍を読むには、[calibre](https://calibre-ebook.com/download) や [Kindle Previewer](https://kdp.amazon.co.jp/ja_JP/help/topic/G202131170) などのePub 形式に対応したビューアが必要です。

成果物としては、以下のような電子書籍ファイルが生成されます。バイナリ(というかZIP)なのでダウンロードした上で、calibre 等で開いてみてください。
https://github.com/shd101wyy/ebook-example/blob/master/ALICE.epub

# 準備するもの
– [VSCode (Visual Studio Code)](https://code.visualstudio.com/do

元記事を表示

MATLABでPythonの仮想環境を使用する方法(Ubuntu20.04)

# 目次
[1. 実行環境](#1-実行環境)
[2. 試したこと](#2-試したこと)
[3. 対策手順](#3-対策手順)

#はじめに
 本記事は,自分がUbuntu20.04でMATLABからPythonを呼び出すとき,仮想環境で処理させるために少々時間を費やしたので,備忘録として作成しました。
 この記事のメインは3項目の対策手順ですが,2項目の試したことを行った場合に成功する可能性もあります。

#1. 実行環境
・Ubuntu20.04
・MATLAB R2021b
・Python3.8

#2. 試したこと
 まず,MATLAB R2021aで導入された`pyenv`というPythonインタープリターの既定環境の詳細を取り出す関数を実行します。この関数の構文は以下の通りです。
“`pyenv(‘Version’,’executable’)“`
 そのため,具体的なコードは以下のようになります。
“`pyenv(‘Version’,’~/anaconda3/envs/仮想環境名/bin/python’)“`
 このコードを実行すると,Pythonのバージョンや,ラ

元記事を表示

メロンを自動栽培していたら、水を補給するタイミングがつかめないので水位監視装置をつくる

[前回の記事(毎日の水やりが面倒なので、メロンを自動栽培した件)](https://qiita.com/spadr/items/a7f3a8d2c594cefc4cba)では、M5StickCとWatering Unit, Django REST frameworkを使って、水やり機を作りました。
このおかげで、少ない水やりで楽にメロンを育てることができました。
ところが、あまり楽をしすぎるのも良くないようで、特に栽培の後期でバケツに水を入れ忘れることが多くなってしまいました。

そこで今回はM5StackのTOF Unitを使って水位監視装置をつくります。
そんなところで、今回も「やる夫と学ぶ〇〇」のスタイルで、異世界転生モノ気味に記事を書いていきます。
![mizuyari.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/348993/5f3f8e71-6e7b-a46b-e84e-8587b14e80e7.jpeg)
![mizu.jpg](https://qiita-image-store.s3.

元記事を表示

Matplotlibで対象者数と平均を1つのグラフに表示(x軸が連続値の場合)[Python]

学術系のデータ分析をPythonで行いました。

**データを視覚化するのに便利な関数**を作成したので共有します。

:::note warn
投稿内容は個人の見解であり、所属する組織の公式見解ではありません。
:::

## 記事の対象者
今回の記事は、次の悩みを持つ人を対象に執筆しています。

– データ分析をPythonで実施したい
– 連続変数と被説明変数の関係性を可視化したい

## この記事を読むうえで、必要な知識

– Pythonによるデータ分析の基礎知識を習得している
– Matplotlibの基礎知識を習得している

## ざっくりとした要件定義
###作成したもの
create_graph関数
(関数名は、改善の余地があるかもしれません。)

###Input
1. x軸の変数(連続変数)の列名
2. y軸の変数の列名
3. 対象となるDataFrame
4. x値を四捨五入で切り捨てする桁数 etc

###Output
一定範囲内のx値ごとの、対象者数とy値の平均をグラフとして出力

plt_graph

元記事を表示

Bokehでヒートマップ

# Figure.rectとFigure.image

bokeh公式の[Gallery](https://docs.bokeh.org/en/2.4.1/docs/gallery.html)には`rect`を使ったヒートマップの[例](https://docs.bokeh.org/en/2.4.1/docs/gallery/unemployment.html)が載っているが、`image`を使った[例](https://docs.bokeh.org/en/2.4.1/docs/gallery/image.html)でもヒートマップを作成できる。東京都が公開している新型コロナの陽性者データを使い、年代別のヒートマップを2つのやり方で作ってみる。

# バージョン情報

– python 3.8.8
– bokeh 2.3.0
– jupyterlab 2.2.6

# 使用データ

東京都の[都内の最新感染動向](https://stopcovid19.metro.tokyo.lg.jp/)で公開している新型コロナの[陽性者のデータ](https://catalog.data.me

元記事を表示

PythonでMAD作成支援ツールを作った話(音声認識)

#免責事項
この記事には素人が書いたガバコードが含まれています。このコードを実行したことにより発生した損害に対して、作者は一切の責任を負いかねます。

##動機
MADが作りたい->でも細切れの音声をいちいち開いて確認するのめんどい->かと言って全部のファイルに名前つけるのも面倒臭い

###動作確認した環境
Windows10
Python3.9.1

##事前準備
* Pythonのインストール
* Speech Recognizerとpyaudioをpipで落としておく
pyaudioの導入に失敗した人は[この記事](https://qiita.com/sugi-juku/items/c92f8f170a6b455e15f2)に解決策が載ってました
* Audacityのインストール(日本語化を推奨)

##下ごしらえ
Audacityにスライスしてない生の音声をD&Dとかで投げる![D&Dで放り込む](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/770613/3c6e843a-69d8-9b73-58c

元記事を表示

トポロジカルソートに関して

## 参考文献

– 秋葉拓哉,岩田陽一,北川宜稔,『プログラミングコンテストチャレンジブック』,株式会社 マイナビ出版(2012)
– [AtCoder Beginner Contest 223 Problem D](https://atcoder.jp/contests/abc223/tasks/abc223_d)
– [Nyann様の 提出 #26618152](https://atcoder.jp/contests/abc223/submissions/26618152)

# 1. 初めに
[AtCoder ABC 223 D問題](https://atcoder.jp/contests/abc223/tasks/abc223_d) にてトポロジカルソートに関する問題が出たそうです。

解説を読む以前に,
『トポロジカルソートってなんだっけ…?』と思った私はそれに関してまとめてみることにします。

# 2. トポロジカル順序とは

有向非巡回グラフ(Directed Acyclic Graph)において,
$i,j\in\[N],v_i,v_j\in V$

元記事を表示

AtCoder Beginner Contest 223 参戦記

# AtCoder Beginner Contest 223 参戦記

## [ABC223A – Exact Price](https://atcoder.jp/contests/abc223/tasks/abc223_a)

2分半で突破. 0円だけ特別であることを意識して書くだけ.

“`python
X = int(input())

if X == 0:
print(‘No’)
elif X % 100 == 0:
print(‘Yes’)
else:
print(‘No’)
“`

## [ABC223B – String Shifting](https://atcoder.jp/contests/abc223/tasks/abc223_b)

6分で突破. 全部実際に生成すればいいですね.

“`python
S = input()

a = {S}
for i in range(1, len(S)):
a.add(S[i:] + S[:i])
a.add(S[:-i] + S[-i:])
a = sorted(a)
prin

元記事を表示

YOLOv5で特定の物体のみ検出し、写真をくり抜く方法

#開発環境
・GoogleColaboratory
#まずYOLOv5って?
YOLOv5を用いればPython上で物体検出を行うことが出来ます。
下準備として以下のコマンドを実行します。

“`
!git clone https://github.com/ultralytics/yolov5
%cd yolov5
!pip install -r requirements.txt
“`

この状態で例えば以下の画像(sample.png)の物体検出をしたいなら
![sample.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1925070/93897c35-678f-a97f-1925-6f42e92e5a5e.jpeg)

“`
!python detect.py –source /content/sample.jpg(←ここは画像のパスを入力)
“`
と実行すると

“`
Downloading https://ultralytics.com/assets/Arial.ttf t

元記事を表示

コンテナを使ってFlaskアプリをGCPにデプロイし、CI/CDパイプラインの構築もする

この記事では、シンプルなFlaskアプリを使用し、DockerでコンテナライズしGoogle Cloud Platform上(Cloud Build、 Cloud Container Registry、Cloud Runを使用)にデプロイする方法をまとめています。GCPのCloud Buildを使用したCI/CDパイプラインの構築も一緒にまとめています。

### シンプルなFlaskアプリの作成
##### 1. *app.py*を作成
“`python:app.py
from flask import Flask, Response, jsonify, render_template, logging, request
app = Flask(__name__)

@app.route(‘/’)
def home():
return render_template(‘index.html’)

if __name__ == ‘__main__’:
app.run(host=’0.0.0.0′, port=80)
“`

##### 2. *templates*フ

元記事を表示

PythonでFFTとそのピーク検出をする方法

#概要
Pythonを用いて時系列データのFFTを行い,そのピーク検出をする方法をまとめておく。

#データ準備
解析例とする時系列データを作成する。3つの正弦波とノイズを組み合わせたデータを次のように作成した。

“`python
import numpy as np
import matplotlib.pyplot as plt

# parameters
dt=6 #data duration
fsamp=10000 #sampling rate
f=[28, 60, 213, 355] # sin frequency
y=[0.6, 1.3, 0.3, 0.5] # sin amplitude
pi=np.pi

# data creation
# gauusian noise sigma=1
n=dt*fsamp+1 #data size![time_series.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2184372/45ed0137-bbff-fa65-3130-89ffecf07

元記事を表示

CSVファイルをJSONファイルに変換する ~ pythonの場合 ~

– CSVファイルをJSONファイルに変換する
– 出力ファイル名とインデントの数(半角スペースの数)をパラメータで設定したい

### コード
こちらのサイトのものを改造させていただきました
https://hktech.hatenablog.com/entry/2018/09/10/235725

“` python
import json
import csv
import click
import os

@click.command()
@click.argument(‘in_file’)
@click.option(‘–out_file’, ‘-o’, default=”, help=’Output JSON file’)
@click.option(‘–indent’, ‘-i’, default=0, help=’JSON indent’)
def main(in_file, out_file, indent):

# CSV ファイルの読み込み
json_list = []
with open(in_file, ‘r’) as f:

元記事を表示

AtCoder ABC223 挑戦!(Python)

ABC223、コンテスト5回目の挑戦です。
なんとかC問題まで完答できた。
前回はさぼりです。プロ野球が熱戦のため、阪神の優勝条件をpythonで計算してました。

“`ruby:ABC223A
#100円×1-10までありうる。
X=int(input())

X_list=[i*100 for i in range(1, 11)]
# print(X_list)

#X_listの中にXが存在するかを判定する。
if X in X_list:
print(‘Yes’)
else:
print(‘No’)
“`
ありうるXのリストを準備して、それが一致するかを判定。
リスト内包表記が無理せず使えるようになってきた。

“`ruby:ABC223B
S=input()
S_list=[]
for i in S:
S_list.append(i)
#循環する文字列をどこで切るか
#ありうる文字列をすべて列挙したうえで、並び替える必要がある。
#ありうる文字列の数は、len(S)個。
S_i=”
S_list_set=[]#シフトでありうる文字列を格納
f

元記事を表示

Streamlitを使って数理最適化のGUIを実装する

# はじめに
今回は誰でも簡単に使えると評判のStreamlitを使って単純な数理最適化問題のGUIを作成してみたいと思います。
製造業等、ITの専門家やSEが社内にほとんどいない業種でデータサイエンスを担う部署を作って人材を集めたとしても、ユーザーにちょっと使ってもらうためのプロトタイピングで頓挫することがあると思いますが(私はありました)、そういった非IT、SEの方々でも簡単に作れるプロトタイピングの参考になれば幸いです。

# Streamlitを使うまでの準備
Streamlit公式サイトの[こちら](https://docs.streamlit.io/library/get-started/installation)の手順に従って実施します。
最初何も考えずにAnaconda環境でpip install streamlitで試してみましたが、ライブラリがうまく読み込めない沼にハマってしましましたので、新しくStreamlit用の環境を作って対応することにしました。
※以下はMacOS環境で実行しています。

“`Bash:pipenvのインストール
# 準備その1
sudo

元記事を表示

PythonでDBからデータを可変に取得する

# Jupyter Notebook上(Python)からDBのデータを可変的にデータを取得する

## DBから複数条件を変更しながらデータを取得したい
– テラバイトを超えるようなビッグデータを時系列(月次、日次)で分割してダウンロードしたい
– マスターデータに合致する対象の顧客データだけを抽出したい
– 条件が異なるデータ抽出を自動で(一括して)実行したい

Pythonでデータベースにアクセスしデータを抽出するライブラリにはpsycopg2、pydb、presto-python-clientなどがあります。
【参考】
https://qiita.com/ko-da-k/items/aa26f986a09b3b629e2a
https://qiita.com/yolo_kiyoshi/items/0c3c7f7cc5794d1afaec

どのライブラリも「**数字**」や「**文字列**」といった変数を指定することができますが“` WHERE order_code LIKE IN (‘aaa%’, ‘bbb%’, ‘ccc%’) “`のように「**タプル()**」を上手

元記事を表示

Pythonでポアソン分布と戯れる

#はじめに
統計分布と戯れたシリーズ第三段ということでポアソン分布をお届けする。

# ポアソン分布
– 書き方 Po(λ)
– 確率関数 $$ P(X=x) = \frac{λ^x}{x!}exp(-λ) $$
– 期待値 λ
– 分散 λ

#確率関数を書いてみよう
“`python
def my_poisson(x, l):
ret = (np.float_power(l, x) * np.exp(-l) / math.factorial(x))
return ret
“`

自前で定義した関数をそのまま使うケースは少ないだろうが、powerではなくfloat_powerを使わないと、xが大きくなった時に計算がおかしくなる。

#確率関数を描画してみよう

定義した確率関数を使って、$Po(5)$ に従うポアソン分布を描画してみる。

“`python
# X~Po(5)
xs = []
ys = []
for x in range(20+1):
xs.append(x)
ys.append(my_poisson(x, 5))

fig =

元記事を表示

OTHERカテゴリの最新記事