- 1. 内容
- 1.1. ①時間の経過に伴う変化
- 1.2. ②リサンプリング
- 1.3. ③ローリング統計
- 1.4. ④相関分析
- 1.4.1. FastAPIにおけるPydanticを使ったバリデーションのまとめ
- 1.4.2. 【100 numpy exercises】でnumpy力を鍛える!(41〜50問目)
- 1.4.3. 音声認識AIを活用したレシピの紹介
- 1.4.4. MAX30102で心拍数と血中酸素濃度を測定する – Arduino編 –
- 1.4.5. Python 3.8: 代入式(:=)を使って、フィボナッチ数列の lambda 式を作る
- 1.4.6. Pythonで麻雀を作る#1
- 1.4.7. 砂漠中の最短距離のオアシスを見つける問題
- 1.4.8. 東京都の国のステージ判断のための指標のPDFからCSV作成
- 1.4.9. 【pandas】Dataframeで正規表現で置換
- 1.4.10. mayaがエラー・ワーニングを吐く時の対処 2 ~みつからないplug-in~
- 1.4.11. Officeファイルを下位ディレクトリまで一括PDF変換
- 1.4.12. メッシュ作成ソフトウェア Gmsh を Google Colaboratory で使う
- 1.4.13. [Python]Gmail APIを利用した受信メール一覧取得方法 メモ
- 1.4.14. [Python]Seleniumを用いたログイン処理の自動化方法 備忘録
- 1.4.15. pythonで永続セグメント木実装
- 1.4.16. OS system command Run … / Ruby case / Python case / golang case / Nim case
- 1.4.17. mayaがエラー・ワーニングを吐く時の対処 1 ~存在しないUVset~
- 1.4.18. yfinanceとDataFrameに新規の行を追加するときのメモ
- 1.4.19. matplotlibのxticksが見切れてしまう時の対処法
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 BaseModelclass 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 urljoinimport pandas as pd
import pdfplumber
import requests
from bs4 import BeautifulSoupheaders = {
“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 redf = 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/da9a7a73f2301aa48896https://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 mainimport (
“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座標情報がアトリビュートに残ってしまっているUVsetUVsetEditorからはもちろん見えないので、確認するには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 warningsn225 = 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.