- 1. [Python] Altairの凡例(legend)をプロットエリア内に表示させる
- 2. github webhook で slack通知を行う簡易アプリをgoogle cloud function(python)に実装する際のsecretsの認証周りメモ
- 3. Cloud RunとPython(Flask)で爆速WEBサイト構築
- 4. TCC関連のkernelパラメータを変更
- 5. リスト、タプル、辞書、集合の使い分け
- 6. [Python]変数や引数として扱うCallableオブジェクトに対する型アノテーションの書き方
- 7. pyqtgraphでヒートマップを作成する
- 8. Google Keepのアカウント間データコピーをPythonで
- 9. 特定の範囲をトリミングした後に1回だけFFT (Python)
- 10. Box-Cox変換を理解してみる
- 11. wordcloudで巡る文学作品の旅【Colab&MeCab&neologd】
- 12. flask_migrateでテーブル名を変更した場合
- 13. JenkinsAPI使ってPythonからちょこちょこと
- 14. JCLdicを使ってpythonで企業名抽出器をつくる
- 15. LaTeX,Pythonのtips in修論
- 16. VBAユーザがPython・Rを使ってみた:文字列操作(続)
- 17. Cutmix はテーブルデータに対しても有効か?
- 18. Range Requestsに対応したPythonの簡易HTTPサーバ
- 19. PDFのページを結合,すぐコピペシリーズ
- 20. [python]ライブラリramkanのインストールでエラーになる
[Python] Altairの凡例(legend)をプロットエリア内に表示させる
How To Place Legend Inside the Plot area in Altair
##この記事について
最近はpandas/dataframeと相性がいいAltairが気にいって使っています。
しかし、凡例の位置はmatplotlibだとプロット内に表示されるのに、Altairだと外になってしまい、位置の調節の仕方が分かりませんでした。英語でもなかなか資料が見つからなかったのですが、AltairがパースしているVega-Liteのドキュメントなどをみて解決しましたので、記事にします。非常に参考にさせていただいた、こちらのサイトよりIrisのデータのグラフにて説明したいと思います。
[Altairのすすめ!Pythonによるデータの可視化]
(https://qiita.com/dr666m1/items/b71bef31ba3a21868095)BEFORE デフォルトでは右側に出てしまいます
![スクリーンショット 2021-01-19 100349.png](https://qiita-image-store.s3.ap-northeast-1.am
github webhook で slack通知を行う簡易アプリをgoogle cloud function(python)に実装する際のsecretsの認証周りメモ
# 背景
githubには発生したイベントをhookにリクエストを送信する[webhook](https://docs.github.com/ja/github/extending-github/about-webhooks)という機能がある。例えば、github webhook + googlo cloud function + slack などを組み合わせると、独自のgithub -> slackの通知機能を実装することができる。github secretにはsecrets設定ができる。これを使うことでよりセキュアなwebhookアプリケーションが作れる。
[webhook のセキュリティ保護](https://docs.github.com/ja/developers/webhooks-and-events/securing-your-webhooks)
今回は、google cloud function で通知アプリを実装する際に、このセキュア実装をどうやるかをメモ。
# 実装
“`py
import hmac
import hashlibdef verify
Cloud RunとPython(Flask)で爆速WEBサイト構築
# Cloud RunとPython(Flask)で爆速WEBサイト構築
[#週末ハッカソン](https://twitter.com/hashtag/%E9%80%B1%E6%9C%AB%E3%83%8F%E3%83%83%E3%82%AB%E3%82%BD%E3%83%B3)用のWEBサイトを作成したので公開することにした
AWSやレンタルサーバーなど選択肢は沢山あるが今回はサーバーレスでほぼ無料で運用可能なCloud Runを使いことにした## Google Cloud SDKのインストール
[Google Cloud SDK](https://cloud.google.com/sdk/docs/install) よりダウンロード
ダウンロードディレクトリに移動しsh実行、基本yで進む
インストール後ターミナルを再起動“`
$ sh install.sh
“`バージョン確認
“`
$ gcloud version
Google Cloud SDK 321.0.0
bq 2.0.64
core 2020.12.11
gsutil 4.57
“`##
TCC関連のkernelパラメータを変更
今回は、「整数型で高方程式を解く=分散並列処理=」というタイトルの投稿を予定していました。しかし投稿用のsocket通信のプログラムを作成しているとき「予期せぬ出来事」があり、先に報告することにしました。
この「予期せぬ出来事」は、今回のタイトルにある「TCP関連のkernelパラメータ」に起因するものでした。最初は整数型の長大な桁数のdataを送受信できるプログラムということで、送信する数字のリストをどんどん大きくしていきました。初めはclient側送信量とserver側受信量はピッタリ一致していました。しかしある時点から、client側からの送信量に比べて、server側での受信量が少なくなる現象が出始めました。以下に経過を示します。Raspberry Pi 4Bのメモリー8GBの機種で、Raspberry Pi OS(2020-AUG-23, 64bitベータ版)に同梱のThonnyを使っています。
#予期せぬ出来事
tcpのsocket通信をするための、serverプログラムとclientプログラムを、以下に示しています。“`python:tcp-server.py
リスト、タプル、辞書、集合の使い分け
Udemyの講座、現役シリコンバレーエンジニアが教えるPython 3 入門 + 応用 +アメリカのシリコンバレー流コードスタイルのメモです。
# リスト
任意の型(整数、浮動小数点数、文字列など)のデータを格納できる。要素には順序があり、インデックスを用いて要素を指定できる。リストの要素は変更可能。他のプログラミング言語における「配列」的な使い方をする。## 使用例
タクシーのシートに人が乗れるかの判定“`
>>> seat = []
>>> min = 0
>>> max = 4
>>> min <= len(seat) < max True >>> seat.append(“person”)
>>> len(seat)
1
>>> seat.append(“person”)
>>> seat.append(“person”)
>>> seat.append(“person”)
>>> min <= len(seat) < max Fal
[Python]変数や引数として扱うCallableオブジェクトに対する型アノテーションの書き方
Pythonで関数やメソッドを変数や引数(Callableオブジェクト)として扱う必要が出て来る時があります。
そういった時の型アノテーション周りについて備忘録も兼ねて記事にしておきます。
# 使う環境
– Python 3.8.5
– VS Code
– VS Code拡張機能のPylance(型チェックや補完用)
– ※詳細は以前書いた[[Python]PylanceのVS Code拡張機能をさっそく使ってみた。](https://qiita.com/simonritchie/items/33ca57cdb5cb2a12ae16)などの記事をご確認ください。# まずは型アノテーションの無い状態
とある以下のような関数があり、引数に関数のオブジェクト(`func`)と任意の値(`x`)を受け付けるとします。
“`py
def any_function(func, x):
return func(x)
“`当たり前ですがこれだとVS Code上でマウスオーバーしてみても型などの情報がUnknownとなってしまいます。Pylance(Pyright)など
pyqtgraphでヒートマップを作成する
# はじめに
リアルタイムでヒートマップを作成する機会があり、matplotlibでは処理速度が不安だった為pyqtgraphを使用しました。しかしpyqtgraphは日本語の情報が少なく、ヒートマップに使うカラーバーもデフォルトでは無かった為色々調べた結果を記載します。# 環境
Mac OS
Python 3.8.1pipでインストールしたもの
colour 0.1.5
numpy 1.19.2
pgcolorbar 1.0.0
PyQt5 5.15.2
PyQt5-sip 12.8.1
pyqtgraph 0.11.0`pip install colour numpy pgcolorbar PyQt5 PyQt5-sip pyqtgraph`
# pgcolorbar
pyqtgraphでカラーバーを作成してくれるライブラリです。
pipでインストールした後下記コマンドでdemoが見れます。`pgcolorbar_demo`
# 詳細
リアルタイム描画は今回見送りし
Google Keepのアカウント間データコピーをPythonで
# Googleアカウント移行
Googleアカウントのデータを別のGoogleアカウントに移行するには各サービス単位で頑張って行う必要があります。
過去に以下の方法で移行しました。| データ | 移行方法 |
| —- | —- |
| メール | 移行しなかったがThunderbirdなどから新旧アカウントにIMAP接続すればできそう |
| ドライブ | ダウンロード&アップロード |
| カレンダー | エクスポート&インポート |
| YouTube | ブランドアカウントを利用し、新アカウントをユーザー追加し管理者とする |
| フォト | 共有機能を利用する |
| Keep | [HTML形式でダウンロード](https://support.google.com/keep/answer/10017039?hl=ja)したものを手動でコピペしてメモを作り直す |# Keepデータの移行をPythonで
今回またGoogleアカウントを移行することになり上記の手法で行うことにしたのですが、Keepデ
特定の範囲をトリミングした後に1回だけFFT (Python)
#はじめに
前回の記事
[音圧レベルFFT](https://qiita.com/Sierra_KNOX0996/items/634c9d32ef8660390b15)
の末尾に書いたように,ハンマで叩いた音は叩く力に依存して大きく聞こえたり小さく聞こえたりします.そのため,周波数分析する際も音圧レベルが変動すると想定されますので,力が入力された瞬間周辺のデータのみを解析することが望ましいです.#やること
・全データから,特定の力(任意値)が入力された瞬間周辺基準にトリミングし,音圧レベルFFTを行なう.#FFT条件
・解析対象は,ホワイトノイズ環境下で外壁タイルを1秒間に1回の頻度で10秒間加振した時の打音データ(前回と同じ)です.
・サンプリングレート fs:8192 Hz
・解析上限周波数:3200 Hz
・FFTブロックサイズ block_size:8192 点
・ライン数:3200 本
・オーバーラップ overlap:0.75
・周波数分解能 df:1.0 Hz
・1回のFFTにかかる時間:1.0 sec
・打音計測マイクのチャンネル本数:1 ch
・何 [N] の
Box-Cox変換を理解してみる
# 概要
### 背景
最近機会学習を始め、特徴量エンジニアリングを勉強している。
そのとき、Box-Cox変換を知ったのだか、この変換が何なのか、何をしているのか理解できなかったので、自分なりにできるだけ理解しやすいようにまとめてみた。本投稿では、Box-Cox変換が何なのか、どう変換されるのかについて扱う。
Box-Cox変換を行うために必要な、ライブラリのインストールなど環境準備は記載しないので、他の記事を参照いただきたい。### 環境
実行環境は次の通り。
““
$sw_vers
ProductName: Mac OS X
ProductVersion: 10.13.6
BuildVersion: 17G6030
““
““
$python3 –version
Python 3.7.3
““# Box-Cox変換とは
## 定義
Wikipedia( https://en.m.wikipedia.org/wiki/Power_transform )によるとBox-Cox変換は下のように定義される。
“`math
y^{(\lambd
wordcloudで巡る文学作品の旅【Colab&MeCab&neologd】
# はじめに
Google Colabでwordcloudやる方法まとめ:cloud:wordcloud(ワードクラウド)とは、文章を解析して頻出の単語ほど大きく表示するものです。
最近よく見る、こういうやつ:point_down:
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/189978/abb527d2-9aa2-1e8c-fb53-4cd574644d82.png)
ちなみに、これはとある文学作品のwordcloudです。
何の作品かわかりますでしょうか??# 環境
環境はGoogle Colaboratory、言語はPython。
形態素解析はMeCabで、辞書はneologdを使用。
別に、新語に強いneologd使う必要ないかもだけど、せっかくだし。なお、今回は[青空文庫](https://www.aozora.gr.jp/)の作品を対象にしました:book:
>青空文庫は、著作権が消滅した作品や著者が許諾した作品のテキストを公開しているインターネット上の電子図
flask_migrateでテーブル名を変更した場合
flask_migrateを利用して、pythonコード内でテーブル名の変更を行う場合は必ずdb migrate / db upgradeしようね、という話です。
例えば
“`
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(64), index=True)
description = db.Column(db.String(120), index=True)
def __repr__(self):
return ‘‘%self.username
“`
と、Flask_SQLAlchemyを利用して、テーブルを定義した後に、“`
class UserData(db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(64), ind
JenkinsAPI使ってPythonからちょこちょこと
まだ環境が固まっておらずちょっと書いてみたものです。
テストクラスはしかかり中です。# Jenkinsの情報をちょっと取得したい
要はJenkins画面を解放せずともChatOpsで情報をとれるようにしたいわけなのですが
まだ環境固まっておらず、とりあえず実験的にJenkinsAPIを叩いて
JOB情報取ってきたり、JOB起動できるようにしてみました。ChatOps提供あればJOB起動のコードは書かなくてもOKになるはずなのですけどね。
“`python
#!/opt/anaconda3/bin/python3
# -*- coding: utf-8 -*-”’RocketChat Jenkins情報取得
Jenkins情報をRocketChatのチャンネルに提供する
Jenkinsの設定によりCSRF対策が行われている
そのためauth情報だけでなくJenkins-Crumb情報が必要となる。1.adminのTOKEN情報
→ adminユーザコンソールからパーソナルアクセストークンを生成する。
都度生成なのでメモる
JCLdicを使ってpythonで企業名抽出器をつくる
# TL;DR
Japanese Company Lexiconを使って形態素解析(MeCab)ベースの企業名抽出器をpythonで作ります。
環境は以下を想定しています。“`
macOS Catalina
Homebrew 2.7.1
python 3.9
“`# 事前準備
## JCLdicのダウンロード
https://github.com/chakki-works/Japanese-Company-LexiconREADMEからJCL_mediumのMeCab Dicをダウンロードして解凍してください。
`jcl_medium_mecab.dic` が必要なファイルです。## MeCabインストール
mecab入ってない場合はインストールしてください。
今回はbrewでinstallします。
辞書にmecab-ipadicを使います。“`
brew install mecab
brew install mecab-ipadic
“`## MeCabのuserdict設定
MeCabのuserdict設定のためdicファイルを置くために、任意の場所
LaTeX,Pythonのtips in修論
筆者(物性物理系M2)が修論を書くのに使った小ネタをテンプレとしてメモしておきます.
# LaTeX
環境はpLaTeX,`\documentclass[a4paper,10pt]{jsarticle}`とします.## 図
“`tex:preamble
\usepackage[dviout]{graphicx}
\usepackage{here} %[H] オプションを使用する場合
“`図の挿入
“`tex
\begin{figure}[ht]
%オプション h:その場, t:ページ上端, b:ページ下端, p:専用ページを作成
% H:その場で強制出力
\centering
\includegraphics[keepaspectratio, width=0.8\linewidth]{fig1.png}
%オプション keepaspectratio:アス比を固定, width,height:サイズ指定
% 0.8\linewidthなど紙幅との比や 8cmなど単位付き長さでの指定
\caption{キャプション}
\label{fig:1} %相
VBAユーザがPython・Rを使ってみた:文字列操作(続)
# はじめに
機械学習の勉強を始めたVBAユーザです。
備忘録としてPython・Rの文法をVBAと比較しながらまとめていきたいと思います。**目次**
* [文字列操作](#文字列操作)
+ [文字列の結合](#文字列の結合)
+ [文字列の長さ](#文字列の長さ)
+ [文字列の取り出し](#文字列の取り出し)
+ [文字列の検索](#文字列の検索)
+ [文字列の置換](#文字列の置換)
+ [文字列の変換](#文字列の変換)
– [大文字と小文字の変換](#大文字と小文字の変換)
– [全角と半角の変換](#全角と半角の変換)
+ [文字列の反転](#文字列の反転)
+ [文字列の繰り返し](#文字列の繰り返し)
+ [スペース](#スペース)
– [スペースの文字列](#スペースの文字列)
– [前後の不要なスペースの削除](#前後の不要なスペースの削除)
+ [文字列ベクトルについて](#文字列ベクトルについて)
* [まとめ](#まとめ)
– [一覧](#一覧)
– [プロ
Cutmix はテーブルデータに対しても有効か?
## 初めに
通常,教師あり学習は,高精度を達成するため,十分な量のラベル付きデータを必要とします.しかし,人手による注釈は,非常に多くの時間と労力を要します.これを解決する方法の一つとして,人工的にデータをかさ増しする data augmentation があります.
しかし,data augmentation は,画像ありきに語られることがほとんどで,テーブルデータに適用できる手法は,そう多くありません.そこで,本記事は,テーブルデータに適用できる data augmentation を紹介し,実験を行い,それらの性能を検証します.
## Mixup
[mixup: Beyond Empirical Risk Minimization](https://arxiv.org/abs/1710.09412)
Mixup は,2017 年に提案された手法で,ICLR に採択されました.二つの入力を混ぜ合わせることで,新たな入力を生成します.
“`python
import random as rnfrom sklearn.utils import check_rando
Range Requestsに対応したPythonの簡易HTTPサーバ
以下のコマンドでPythonに同梱されている簡易的なHTTPサーバを起動することができます。
“`console
$ python -m http.server 8080
“`しかし、このHTTPサーバはRange Requestsに対応していません。動画の再生をローカルで試すには不都合でした。
– [Range Requests非対応サーバではChromeで動画のシークができない](https://suzuki-navi.hatenablog.com/entry/2021/01/16/201529)
似たことを指摘している人はほかにもいました。
– [Safariで動画を表示する際、サーバーのHTTP Range Request対応が必須になっている – Qiita](https://qiita.com/gecko655/items/110373a6c88177d23126)
– [Pythonのhttp.serverはRange Requestに対応してなかった – Qiita (iOS Safariで動画が再生できない)](https://qiita.com/in
PDFのページを結合,すぐコピペシリーズ
# PDFファイルの結合
PDFの結合をたまに使うので、すぐに使える状態で自分用に。
PyPDF2のpipインストールが必要。
以上。“`merge_pdf.py
import PyPDF2# 別々のpdfファイルを結合します
def merge_pdf(pdf_files):
merger = PyPDF2.PdfFileMerger()
for pdf in pdf_files:
merger.append(pdf)merger.write(“merge.pdf”)
merger.close()if __name__ == “__main__”:
pdf_files = [“a.pdf”,”b.pdf”]
merge_pdf(pdf_files)
“`
[python]ライブラリramkanのインストールでエラーになる
[ramkan](https://pypi.org/project/romkan/)はローマ字/仮名変換用のライブラリ。
インストールする際にエラーが起きたので忘備録。## エラー内容
ramkanのインストール
“`
$ pip3 install romkan
“`するとこういうエラーが起きる。
“`
Collecting romkan==0.2.1
Downloading romkan-0.2.1.tar.gz (10 kB)
ERROR: Command errored out with exit status 1:
command: /home/scaruadmin/venv/bin/python3 -c ‘import sys, setuptools, tokenize; sys.argv[0] = ‘”‘”‘/tmp/pip-install-8y_m14tz/romkan_f9a5712add8043608044b16dab0fc01c/setup.py'”‘”‘; __file__='”‘”‘/tmp/pip-install-8