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

Python関連のことを調べてみた2021年08月26日
目次

Pythonによるファイナンス 8章 金融時系列データ

内容

csvファイルに入っている株価の時系列データを分析していく。

①時間の経過に伴う変化

時間変化率を計算する。

②リサンプリング

日次間隔の時系列データを、週次単位にリサンプリングする。

③ローリング統計

移動平均法により一定区間ごとの最大値、最小値、平均値を計算し可視化する。

④相関分析

二つの時系列データの相関関係を分析する。
まず対数収益率を計算し可視化。そして二つの時系列データの対数収益率を用いて散布図を作成。

元記事を表示

FastAPIにおけるPydanticを使ったバリデーションのまとめ

# 概要
[FastAPI](https://fastapi.tiangolo.com/)では[Pydantic](https://pydantic-docs.helpmanual.io/)というライブラリを利用してモデルスキーマとバリデーションを宣言的に実装できるようになっている。
ここではその具体的な方法を記述する。

確認したバージョンは以下の通り。
* FastAPI: 0.68.1
* Pydantic: 1.8.2

# 使い方
## モデルの記述と型チェック
### モデルの定義
“`python
from pydantic import BaseModel

class Hoge(BaseModel):
id: int
name: str
“`
のように書けば`Hoge`モデルが作成される。
`Hoge`モデルは整数(`int`)の`id`が必ず存在し、文字列(`str`)の`name`が必ず存在する。この条件を満たさない場合、バリデーションエラーとなる。

### 型
型はPythonの型ヒント(type hints)を使って記述する。

一般的な

元記事を表示

【100 numpy exercises】でnumpy力を鍛える!(41〜50問目)

こんにちは!

前回はnumpy力を鍛えるために31~40問をやっていきました。

前回の記事はこちら

https://qiita.com/fav/items/e80a522c4c8099eee338

それでは前回に引き続き100 numpy exercisesを使ってnumpyの学習をしていきたいと思います!

今回は41~50問をやっていきます。

###41. How to sum a small array faster than np.sum? (★★☆)
#####41. 小さな配列の合計をnp.sumよりも速く行うには?

“`ruby:100_numpy_exercises.ipynb(41)
Z = np.arange(10)
np.add.reduce(Z)
“`

基本的には***np.add.reduce***と***np.sum***は同じようです。ただ2つのパフォーマンス的には異なる部分があって、比較的小さい配列サイズの場合***np.add.reduce***は約2倍高速です。理由を簡単に言うと、引数がnumpy配列の場合、***np.sum***

元記事を表示

音声認識AIを活用したレシピの紹介

# はじめに

Axrossを運営している藤原です。

**[Axross](https://axross-recipe.com/recipes)** とは、エンジニアの”教育”と”実務”のギャップに着目し、「学んだが活用できない人を減らしたい」という想いのもと、ソフトバンクの社内起業制度にて立ち上げたサービスです。
現役エンジニアによる実践ノウハウを”レシピ”として教材化し、実際にプログラミングで実装を追体験しながら学ぶことができます。AI/機械学習をテーマにした、様々な業務領域やビジネスの課題解決に応用できる実践的な学習教材を170以上揃えています。(2021年8月時点)
Axross:https://axross-recipe.com
公式Twitter:https://twitter.com/Axross_SBiv
![Axrossアイキャッチ.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/620853/9f500e0e-a759-20e2-bb8b-480bbcfaaf9b.png)
今回は、

元記事を表示

MAX30102で心拍数と血中酸素濃度を測定する – Arduino編 –

## 概要
* 新型コロナの影響でヘルスケア関連のデバイスの需要が高まっている。
* maxim integrated社から出ているMAX3010xシリーズの最新版を試してみた。
* まず開発キット(MAXREFDES117)を入手し、動作を確かめてみる。
* 前回はRaspberry Piで動作を確認した。今回は単体のデバイスとできないか試してみる。
* まず心拍数を取得しOLEDに表示をしてみる

![197210409_4224273017628834_3526034240888359343_n.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/701445/356f8199-f3d6-6412-b708-be0d37959cbb.jpeg)

![スクリーンショット 2021-08-26 9.02.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/701445/4159d13e-7dc1-62f3-c5c7-0

元記事を表示

Python 3.8: 代入式(:=)を使って、フィボナッチ数列の lambda 式を作る

フィボナッチ**数列**は単純な手続きで作れるけど、プログラムにすると以外と面倒臭い。

“`python:Python
def fibonacci_table(n):
r = []
a, b = 0, 1
for _ in range(n):
r.append(a)
a, b = b, a + b
return r
“`

これを Python 3.8 から使用可能な代入式 `:=` を使って lambda 式で作ってみる。

“`python:Python3.8
fibonacci_table = lambda n, f1=0, f2=1, f3=1: ([0, 1] + [(f3 := f1 + f2, f1 := f2, f2 := f3)[0] for _ in range(n – 2)])[:n]
“`

もっと単純になるかと思ったけど、横に長くなっただけだった。
(行末の [:n] は、n が 0 または 1 のためにあります)

“`python:実行結果
>>> fibonacci_table(

元記事を表示

Pythonで麻雀を作る#1

#目的
コンピューター同士もしくは人対コンピューターで対戦できる麻雀のコードを作成し、オブジェクト指向のプログラミングに対する理解を深める。
また、麻雀を深く理解することで麻雀の実力を向上させる。

#環境
Windows 10
Python 3.8.8
mahjong 1.1.11*

*麻雀の点数計算や向聴数計算を行うライブラリ
https://pypi.org/project/mahjong/

#やったこと
麻雀の対戦を行うシステムの根幹部分を構築した(ロン、副露、連荘、ノーテン罰符などは未実装)。
また、打牌の選択に関して簡易的だがツモ切りするだけではなく和了に近づくような切り方をするようなアルゴリズムを実装した。
具体的には手牌中の14牌それぞれに対してその牌を切った際の向聴数を求め、向聴数が最も小さくなるよう打牌するようにした。
点数計算に関してはmahjongライブラリに丸投げした。

#実装
以下のソースコードを実装した。

“`python

import random
from mahjong.shanten import Shanten
from mahjon

元記事を表示

砂漠中の最短距離のオアシスを見つける問題

**<アルゴリズム問題シリーズ(Python)>**

#1.はじめに
同一ファイル内で入力から出力を実施する方法としてはhttps://qiita.com/ajim/items/4d350710ba70056f5f6f を参考にしました。

“`py
import sys
import io

_INPUT = “””\
5 4
1
3
4
5
“””
sys.stdin = io.StringIO(_INPUT)
“`
・`sys`モジュールはインタプリタで使用・管理している変数や、インタプリタの動作に深く関連する関数を定義しています。`sys.stdin`はインタプリタが使用する、それぞれ標準入力、標準出力、および標準エラー出力の ファイルオブジェクト であり、stdin は (input() の呼び出しも含む) すべての対話型入力に使われます。https://docs.python.org/ja/3/library/sys.html
・io モジュールは様々な種類の I/O を扱う Python の主要な機能を提供しています。StringIO オブジェクトはインメモリーの

元記事を表示

東京都の国のステージ判断のための指標のPDFからCSV作成

https://www.fukushihoken.metro.tokyo.lg.jp/iryo/kansen/corona_portal/info/kunishihyou.html

![kuni0824.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/36151/87d00b63-d838-43d6-e19a-a3e598f1446d.jpeg)

表部分の固定みたいなので表の位置を指定して抽出

“`python
import datetime
import pathlib
import re
from urllib.parse import urljoin

import pandas as pd
import pdfplumber
import requests
from bs4 import BeautifulSoup

headers = {
“User-Agent”: “Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11

元記事を表示

【pandas】Dataframeで正規表現で置換

## DataFrameで正規表現を利用して文字列置換をしたい

replaceメソッドを使えば可能でした。ドキュメントは[ここ](https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.replace.html)

以下のサンプルコードはnameカラムの先頭の「あいう」という文字列を「aiu」に置き換えるだけのかんたんな例です。

“`python:regex_replace.py
import pandas as pd
import re

df = pd.DataFrame(
data={
‘name’: [‘あいうえお’, ‘かきくけこ’, ‘サシスセソ’],
‘kind’: [‘ひらがな’, ‘ひらがな’, ‘カタカナ’]
}
)
df[“name”] = df[“name”].replace(re.compile(r”^あいう”), ‘aiu’, regex=True)
print(df)
“`

## 結果
“`
name kind
0 a

元記事を表示

mayaがエラー・ワーニングを吐く時の対処 2 ~みつからないplug-in~

mayaがerrorを吐いて鬱陶しい時
メッシュデータをimportしただけでこんなエラーを吐く時

RuntimeError: file line 1: Plug-in, “maxwell”, was not found on MAYA_PLUG_IN_PATH. #

プラグインが見つかりませんエラー。

これには2通りあって、
1, 必要なプラグインが読み込めず、シーンの構築に失敗している場合

Errors have occurred while reading this scene that may result in data loss

と出たり、ダイアログがドゥンと出てきてシーンの構築に失敗していることを教えてくれる。
この際、プラグインによって管理されているノードがあった場合は**unkownノード**としてとりあえず作成される。
データとして欠損が起きてしまっているので、プラグインを読めるようにmayaの環境を整理する必要がある。

2, 特に必要ないけど読めと言われているプラグインが読み込めていない。シーンの

元記事を表示

Officeファイルを下位ディレクトリまで一括PDF変換

# 更新履歴

– 2021/08/25 新規作成

# はじめに

Officeファイルの資料はタブ管理ができるブラウザで見たいので、私はいつもPDFエクスポートしていました。
しかし、先日、上司から業務で使う資料のディレクトリパスを渡されて見てみると…

なんと使う資料の総数 **524 !!!!**

資料すべてに目を通すわけではないですが、それでもかなりの数の資料を常時開いておかなければスムーズに業務を行えません。
そこで、Pythonを使って指定したディレクトリおよび下位ディレクトリ内のOfficeファイルを一括でPDFに変換するプログラムを作成しました。私はなんとか乗り切ることができましたが、こういった需要は私以外にも少なからずあるのかなと考えて記事にしました。

# 仕様

### 動作環境
– OS : Windows 10 Pro
– Anaconda : conda 4.9.2
– Office 2016

`comtypes`モジュールがWindowsのみ対応しているため注意が必要です。

### 機能

– 変換元のディレクトリ構造を変換先ディレクトリに生

元記事を表示

メッシュ作成ソフトウェア Gmsh を Google Colaboratory で使う

有限要素法におけるメッシュ作成ソフトウェアである。
**Gmsh**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/142847/30cebb8b-e99a-ea2e-0c9b-5b1cd0abcac5.png)
を **Google Colaboratory** で使う方法をメモとして残します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/142847/0624d475-f262-df91-08cf-6bc6a656985e.png)

## はじめに
今回は、Gmsh の チュートリアル
https://gitlab.onelab.info/gmsh/gmsh/-/blob/master/tutorial/python/t1.py
を **Google Colaboratory**(以下 colab) で実行できることをゴールとします。

ソースはここに置いておきます。
https

元記事を表示

[Python]Gmail APIを利用した受信メール一覧取得方法 メモ

* Gmail APIを利用して、自身のGmailアカウントに届いたメールを一覧取得する方法についてメモする。

## 事前準備

* ライブラリインストール

“`shell
pip install –upgrade google-api-python-client google-auth-httplib2 google-auth-oauthlib
“`

* Google認証情報取得
* [こちら](https://developers.google.com/workspace/guides/create-credentials)を参考にクライアントID/シークレットを取得する。

## プロジェクト構成

“`
gmail — gmail_test.py
|_ creds — credentials.json
| |_ token.json
|_ mails
“`

* 取得したGoogle認証情報を`credentials.json`として、上記の場所に保存する。
* `token.json`はコード実行時に生成されるた

元記事を表示

[Python]Seleniumを用いたログイン処理の自動化方法 備忘録

* Seleniumを用いたWebページのログイン処理の自動化方法についてメモする。
* 個人用メモ※何件も類似事例あり。

## 事前準備

* chromedriver取得
* コードと同一階層に`chromedriver`を配置する。`chromedriver`の取得方法は[こちら](https://qiita.com/KWS_0901/items/7191b5f5d129aba6315c)を参照のこと。

## 構成

“`
root_dir — login.py
|_ chromedriver.exe
|_ conf/setting.conf
“`

## コード

* `conf/setting.conf`

* 設定ファイル。接続先のページ情報(URL,画面要素)とログイン情報を記述する。

“`conf
[PAGE_INFO]
URL= TARGET_URL
ELEM_ID_FORM_USERNAME=USERNAME_ID
ELEM_ID_FORM_PASSWORD=PASSWORD_ID
ELEM_I

元記事を表示

pythonで永続セグメント木実装

# はじめに
世の中には、過去の状態にアクセスしたいという需要が存在します。それを高速に実現する一つが永続データ構造です。

# 参考記事
https://qiita.com/tomato1997/items/da9a7a73f2301aa48896

https://37zigen.com/persistent-segment-tree/

https://qiita.com/hotman78/items/9c643feae1de087e6fc5

# 永続配列について
### ①永続配列の使い道
永続セグメント木を考える前に永続配列について紹介します。
![qiita_p1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864771/8691b668-b768-3035-255c-b3e832f64e4a.png)
というようにデータを構築したうえで
→Ver.0の4番目を知りたい!

元記事を表示

OS system command Run … / Ruby case / Python case / golang case / Nim case

## Ruby

“`ruby:oscommand.rb
current = “test”
system(“ls”)
system(“mkdir” ,”./#{current}”)
#system(“rm” , “-r”, “./#{current}”)
“`

“`terminal
> ruby oscommand.ruby
“`

## Python
“`python:oscommand.py
import ‘os’

os.system(“ls”)
os.system(“mkdir ./test”)
#os.system(“rm -r ./test”)
“`

“`terminal
> python oscommand.py
“`

## golang

“`golang:oscommand.go
package main

import (
“log”
“os/exec”
)

func main(){
title := “test”
cmd := exec.Command(“zip”,”-4″, title + “.zip”

元記事を表示

mayaがエラー・ワーニングを吐く時の対処 1 ~存在しないUVset~

mayaがwarningを吐いて鬱陶しい時

メッシュデータをimportしただけでこんなワーニングを吐く時

Warning: The mesh object|objectShape contains invalid or unused components. These can be cleaned up using the Mesh Cleanup dialog. #

場合にもよるけれども、指示通りにcleanup実行してもwarnigが出続ける場合がある。
そのケースの1つとして、**不正なUVsetの存在**(勝手に命名)があげられる。

**不正なUVset**とは
UVsetNameは定義されていない(None)だが、UV座標情報がアトリビュートに残ってしまっているUVset

UVsetEditorからはもちろん見えないので、確認するにはnodeEditorかスクリプトで処理する必要がある。

まずUVsetNameを確認

import maya.cmds as cmds
uvSet_index = cmds.getAttr(node

元記事を表示

yfinanceとDataFrameに新規の行を追加するときのメモ

Pythonを使ってyahoo financeからscrapingしたデータをもとにグラフを描くコード

“`python
import pandas as pd
import matplotlib.pyplot as plt
import yfinance
import mplfinance as mf
import warnings

n225 = yfinance.download(‘^N225′,datetime.date(2021,3,1),end =datetime.date(2021,3,31),interval=’1d’,auto_adjust=True)
chart = mf.plot(n225,style=’yahoo’,type=’candle’,title=’N225′,savefig=’N225.png’)
pd.set_option(‘display.max_rows’, 50)
print(n225)
“`

“`txt:実行結果
[*********************100%***********************] 1 of 1 c

元記事を表示

matplotlibのxticksが見切れてしまう時の対処法

matplotlibでグラフをpdf形式で保存しようとした時に、xticksが縦に長いと見切れてしまうことがあります。
![test.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/700770/8d81c701-f195-fad1-c04b-d77891069ac7.png)
そういう時は、savefigにおいてbbox_inchesを指定してあげると良いです。
画像の左下が(0,0)となり、(20,20)が右上に対応します。なので、xticksのラベルを見切れないように表示するには左下を(0,-5)のようにしてあげるとラベルまで余裕を持って表示されます。

“`
from matplotlib.transforms import Bbox as BB
plt.savefig(image_name+’.pdf’,bbox_inches=BB([[0,-5],[20,15]]))
“`
![test1.png](https://qiita-image-store.s3.ap-northeast-1.

元記事を表示

OTHERカテゴリの最新記事