- 1. python matplotlibを用いた複数の表描出に関する疑問
- 2. ゼロから始めるLeetCode Day71 「1496. Path Crossing」
- 3. Selenium x GeckoDriverでダウンロードができなかったのを解決した関数
- 4. 弱参照を使う
- 5. DynamoDB Streamを用いて、日付のパラメータを与えながらLambdaを繰り返し呼び出す
- 6. ノイズ処理でnp.fft.fftにデータがうまく渡せません。教えてください。
- 7. Pythonのf-stringsについてしっかり調べてみた
- 8. 【備忘】Google Colaboratoryでカスタムモジュールをインポート
- 9. K-Shape法を用いて心電図データをクラスタリングしてみた
- 10. Pythonで文字列の”一部分”反転方法と気をつけること
- 11. ゼロから始めるLeetCode Day70 「295. Find Median from Data Stream」
- 12. 製薬企業研究者がPythonのユニットテストについてまとめてみた
- 13. 2値分類問題を解くAutoMLを自作した(その2)-学習と予測-
- 14. 2値分類問題を解くAutoMLを自作した(その1)-特徴量選択まで-
- 15. Pythonスクリプトの実行
- 16. AtCoder beginner Contest 172
- 17. 【2020年度版】税金と手取りの計算を全部Pythonにやらせてみる
- 18. Pythonでログ解析したい
- 19. tracemallocの出力をフィルタする
- 20. Python3 エンジニア認定基礎試験 受験記
python matplotlibを用いた複数の表描出に関する疑問
pythonでのmatplotlibを用いたグラフ表記について調べている中で、以下のエラーが発生しました。pandasのdataframeから、複数の表を同時に作成しようとしたところ、表が重なってしまいうまく描画できませんでした。
環境:Python 3.8.2, matplotlib 3.2.1
“`
fig,axes = plt.subplots(nrows=14,ncols=3)
for column in df.columns:
i=0
try:
axes[i].plot(df[column],df[‘Y’],alpha=0.3)
i = i+1
except:
pass
“`
「表が重なっている」という理由から、nrows=3,nrows=1に変更したところ、表がうまく描出できました。複数の表(例えば、14行*3列)を一度に描出する方法はあるのでしょうか。駆け出しで拙い質問で申し訳ございません。
原因または解決法をご存知の方はコメントいただけますと幸いです。
ゼロから始めるLeetCode Day71 「1496. Path Crossing」
# 概要
海外ではエンジニアの面接においてコーディングテストというものが行われるらしく、多くの場合、特定の関数やクラスをお題に沿って実装するという物がメインである。
どうやら多くのエンジニアはその対策としてLeetCodeなるサイトで対策を行うようだ。
早い話が本場でも行われているようなコーディングテストに耐えうるようなアルゴリズム力を鍛えるサイトであり、海外のテックカンパニーでのキャリアを積みたい方にとっては避けては通れない道である。
と、仰々しく書いてみましたが、私は今のところそういった面接を受ける予定はありません。
ただ、ITエンジニアとして人並みのアルゴリズム力くらいは持っておいた方がいいだろうということで不定期に問題を解いてその時に考えたやり方をメモ的に書いていこうかと思います。
[Leetcode](https://leetcode.com/)
Python3で解いています。
[ゼロから始めるLeetCode 目次](https://qiita.com/KueharX/items/6ee2502c3b620c795b70)
前回
[ゼロから始めるLeetC
Selenium x GeckoDriverでダウンロードができなかったのを解決した関数
# Chromeが使えないPCが存在した
今回のはこれが原因でFirefox利用になりました。
https://forest.watch.impress.co.jp/docs/news/1226294.html# ダウンロード処理の際にダイアログが出てきてしまって詰まった
ざっくりと調べたところ、`result.set_preference(“browser.helperApps.neverAsk.saveToDisk”, mimetypes)`
でしっかりとMIMEタイプを指定できれば良いようです。今回ダウンロードしたいファイルはtxtなので、`text/plain`でいいと思ったのですがそれではうまくいかない….# MIMEタイプを調べる方法
解決にはこのページが役に立ちました。
https://stackoverflow.com/questions/39519518/python-selenium-firefox-neverask-savetodisk-when-downloading-from-blob-url
実際は上記のサイトとは微妙に異なっていました。
バージ
弱参照を使う
Pythonでなんらかのクラスのコレクションのようなものを作るとき、親になっているオブジェクトの参照を持っておきたい ということはあると思います。
そんなとき、他の言語などだとときどき、`owner`という変数を作って親オブジェクトの参照を持っておく などと言うことがあるのですが、そのまま実装すると循環参照となり、取得したメモリが意図したタイミングで解放されなくなることがあります。
“`py:循環参照が起こりうるコード
class ParentClass:
def __init__(self):
self.child = []class ChildClass:
def __init__(self, owner):
self._owner = ownerp = ParentClass()
p.child.append(ChildClass(p))
# …
“`こんなときのために、オブジェクトを参照する際に参照カウンタを増やさない、**弱参照(weakrefモジュール)**というものがあります。
* [weakref \-\-\- 弱参照
DynamoDB Streamを用いて、日付のパラメータを与えながらLambdaを繰り返し呼び出す
## はじめに
パラメータを変えながらLambdaを繰り返し実行したくてDynamoDB Streamを使いました。参考までにと思い投稿してみました。この記事ではAWS LambdaからDynamoDBに日付などの数字を書き込んだのち、DynamoDB Streamを用いて同じLambda関数を呼び出し、書き込んだ日付について処理を行う実装をします。
ランタイムはPython3.8を選択しています。
Lambdaの設定で「ハンドラ」は「lambda_function.lambda_handler」であるものとし、
LambdaのロールにはDynamoDBFullAccess権限が付与されています。### この方法を使ってよかったこと
自分の場合はS3でyyyymmddフォルダに入ったファイルを処理する必要に迫られましたが、
Lambdaの性質上+自分の技能上の都合で、「どのファイルを処理するか/したか」をどこかに持たないと再実行は実装できませんでした。が、大量のファイル名をリクエストに手書きする訳にもいかず・・・そんな悩みをここに書いてある方法で解決することが出来ました。
ノイズ処理でnp.fft.fftにデータがうまく渡せません。教えてください。
プログラム初心者です。
windows10,python 3.8,IDLEで作っています。脳波のノイズ処理プログラムをいろいろ組み合わせながら作成したのですが、
np.fft.fftでデータがうまく渡せていないようです。
111行目では、読み込んだ―データをfloatの配列で読み込めています。
プログラムが動作しているか確認の為に、60行から73行目まで
元の波形とそのFFT、IFFTとカット後の波形を表示するプログラムを入れております。
そのグラフをみると、元データはきちんとプロットされているのですが、FFTを見ると、
元データと同じような表示になっているためFFTがうまく動いていないように見えます。
どこを触ったら修正できるのか見当がつかなくなったので、投稿させていただきました。
参考としたプログラムは以下のサイトのものです。
https://qiita.com/ajiron/items/ca630de8b6e3ed28ad1e
https://qiita.com/spicy_HotChicken/items/83c329c4eb0ea9401fe5“`
# – codi
Pythonのf-stringsについてしっかり調べてみた
Pythonの文字列関係の制御を調べていて、f-strings(f文字列)が結構奥が深く知らないことも多かったので、別途Qiita記事にまとめておきます。
# そもそもf-stringsってなに?
Pythonで文字列の前に`f`という文字を付与し、且つ`{}`の括弧を使うことで文字列中に変数を展開したりコードを実行したりできる機能です。
以下のようなコードになります。
“`py
name = ‘タマ’
txt = f’猫の名前は{name}です。’
print(txt)
“`“`
猫の名前はタマです。
“`# 主な参考サイト
f-stringsについて詳しく説明がされている[PEP 498 — Literal String Interpolation](https://www.python.org/dev/peps/pep-0498/)を主に参考にします。
# 記事上で使う環境
– Windows10
– Python 3.8.0
– Jupyter(実行にはVS CodeのPython拡張機能を利用)# f-stringsを使うと何が嬉しいのか?
【備忘】Google Colaboratoryでカスタムモジュールをインポート
## 手順
**1. Google Driveをマウント**“`python
from google.colab import drive
drive.mount(‘/content/drive’)
“`**2. sys.pathl.append()でパスを通してインポート**
例として次のようなファイル構成だったとします。
– My Drive
– colab Notebooks
– module
– utils.py
– my_modules.py※:「MY Drive」がGoogle Driveのルートディレクトリ
このファイル構成でカスタムモジュールをimportするには次のように`sys.path.append()`でモジュールの親ディレクトリまでのパスをシステムに伝える必要があります。
“`python
import sys
ROOT_PATH = ‘drive/My Drive/ colab Notebooks/module/’
sys.path.append(ROOT_PA
K-Shape法を用いて心電図データをクラスタリングしてみた
# 本記事サマリ
– K-Shape法を用いて時系列データをクラスタリングしてみる# データセット
– 今回はカリフォルニア大学リバーサイド校の時系列データコレクション(UCR Time Series Classification Archive)を使います– 心電図(ECG)は心疾患検出を促進するものとして知られています
– 使用する**ECGFiveDays_TRAIN.tsv**の中身は以下の通りです
“`python:DataFrame
df = pd.read_table(“ECGFiveDays_TRAIN.tsv”,header=None)
df.head(10)
“`![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/577151/e92cecd3-489c-4f95-ee10-d51564f2242a.png)
データサマリはこちら
“`python:Summary
import numpy as
Pythonで文字列の”一部分”反転方法と気をつけること
#はじめに
pythonで文字列を反転するときにスライスで[::-1]をよく使いますが、
普通のスライスは“`[left:right+1:step]“` で**left
ゼロから始めるLeetCode Day70 「295. Find Median from Data Stream」
# 概要
海外ではエンジニアの面接においてコーディングテストというものが行われるらしく、多くの場合、特定の関数やクラスをお題に沿って実装するという物がメインである。
どうやら多くのエンジニアはその対策としてLeetCodeなるサイトで対策を行うようだ。
早い話が本場でも行われているようなコーディングテストに耐えうるようなアルゴリズム力を鍛えるサイトであり、海外のテックカンパニーでのキャリアを積みたい方にとっては避けては通れない道である。
と、仰々しく書いてみましたが、私は今のところそういった面接を受ける予定はありません。
ただ、ITエンジニアとして人並みのアルゴリズム力くらいは持っておいた方がいいだろうということで不定期に問題を解いてその時に考えたやり方をメモ的に書いていこうかと思います。
[Leetcode](https://leetcode.com/)
Python3で解いています。
[ゼロから始めるLeetCode 目次](https://qiita.com/KueharX/items/6ee2502c3b620c795b70)
前回
[ゼロから始めるLeetC
製薬企業研究者がPythonのユニットテストについてまとめてみた
# はじめに
ここでは、`unittest`を用いたPythonのテストについて解説していきます。
# テストの基本
テストは、対処となる関数に対応させるように、以下のように書きます。
“`python
import unittestdef average(num1, num2):
return (num1 + num2) / 2class AverageTests(unittest.TestCase):
def test_average(self):
actual = average(1, 2)
expected = 1.5
self.assertEqual(actual, expected)
“``average`という関数に対して、`AverageTests`というclassが用意され、このクラス内のメソッドとして、`test_average`が書かれています。
このように、テスト用の関数は`test_テスト対象の関数名`とすることが多いです。# `assert`メソッド
2値分類問題を解くAutoMLを自作した(その2)-学習と予測-
その1の記事に引き続き、[自作のAutomated Machine Learning(AutoML)プログラム][1]の解説を書きます。
[1]:https://github.com/bright1998/AutoML_Binary_Classification/blob/master/AML_binary-classification.py##【データの分割】
“`
# モデル用データの分割
X_train_eval, X_test, y_train_eval, y_test = train_test_split(X_fin_m, y_m, train_size=0.8, test_size=0.2, random_state=1)
X_train, X_eval, y_train, y_eval = train_test_split(X_train_eval, y_train_eval, train_size=0.8, test_size=0.2, random_state=1)
“`
学習用、検証用、テスト用のデータに分割しています。今回はテスト用とし
2値分類問題を解くAutoMLを自作した(その1)-特徴量選択まで-
2値分類(Binary Classification)を解くための自作のAutomated Machine Learning(AutoML)プログラムを[Github][1]にアップしたので、その解説を書きます。機械学習を勉強しながら作成したプログラムなので、至らない点があるかもしれません。要改善点を指摘して頂けると嬉しいです。
[1]:https://github.com/bright1998/AutoML_Binary_Classification/blob/master/AML_binary-classification.py##【経緯】
昨年JDLAのE資格を受験しました。受験資格を得るためには認定講座を修了する必要があります。私が受講した機械学習講座の最終課題で作成したのが、上記のプログラムです。最近、業務で非常に役に立ったので、備忘録を兼ねて解説を残しておこうと思い立ちました。それにしても、思いもよらないところでE資格受験が仕事に好影響を与えたということで、嬉しい誤算です。さて、ここからが本題の解説です。##【パラメータ】
AutoMLの中身に行く前に、実行時に
Pythonスクリプトの実行
#目次
[1. シバン行](#1-シバン行)
[2. WindowsでPythonスクリプトを実行する](#2-windowsでpythonスクリプトを実行する)
[3. MacやLinuxでPythonスクリプトを実行する](#3-macやlinuxでpythonスクリプトを実行する)##1. シバン行
このスクリプトを実行するのはPythonであることをコンピュータに伝える働きをする。
**※シバン行がなくてもIDLEからスクリプトを実行することは可能だが、コマンドラインから実行するにはシバン行が必要**“`Windows.ver
#! python3
“`“`Mac.ver
#! /usr/bin/env python3
“`“`Linux.ver
#! /usr/bin/python3
“`##2. WindowsでPythonスクリプトを実行する
Windowsでは、Pythonのインタプリタは、
– C:\\Python36\python.exe
– %HOMEPATH%\AppData\Local\Programs\Python\
AtCoder beginner Contest 172
##[A – Calc](https://atcoder.jp/contests/abc172/tasks/abc172_a)
“`Python:PYthon
A = int(input())
print(A+A**2+A**3)
“`##[B – Minor Change](https://atcoder.jp/contests/abc172/tasks/abc172_b)
“`Python:PYthon
S = input()
T = input()c=0
for i in range(len(S)):
if S[i] != T[i]:
c+=1print(c)
“`##[C – Tsundoku](https://atcoder.jp/contests/abc172/tasks/abc172_c)
– 一番最初に考えるのが、貪欲法のAとBの一番上の本の読書時間を比較し小さい方を計測していく。
しかし、
4 3 200
80 1 1 1
70 70 70
みたいな入力だとWAになります。– 累積和を使用します。
– し
【2020年度版】税金と手取りの計算を全部Pythonにやらせてみる
## 概要
税金の計算って難しいですよね。
社会人になると毎年なんとなく税金やら保険料やらが引かれてますが、僕は税金について全然詳しくないのでなにがなんやらという状態です。
さらに聞いた話だと今年から控除やら所得税やらのルールが変わるみたいです。
「**退屈なことは全部Pythonにやらせよう**」とう格言(?)があるので、今回は勉強を兼ねて`Python`で税金計算用のクラスを作ってみようと思います。
ゼロからいろいろ調べながら書いたので知ってる人にとっては当たり前の説明が多いかもしれません。## Github
`Github`に税金計算用のクラスを作ってあげました。– https://github.com/tetsuro731/Tax
コードを書くにあたって参考にしたサイト
– https://punhundon-lifeshift.com/tax_calc_by_python
## 使い方
税金の難しい話をする前に、まずは簡単に使い方を説明しようと思います。
今回作った`Tax`クラスは`tax.py`の中で実装されています。
例として**年収500万の独身男性の
Pythonでログ解析したい
各サーバーやプログラムのログを解析/集計する時に使用する関数の備蓄録です。
「Pythonでログを解析してみたい!」という方は是非参考にしてください!# 1行を空白で区切る
splitを使用します。
splitの使用法は大きく分けて– “`str.split()“`の様に区切り文字を指定せず、文字列strが空白区切りにされたリストを返してもらう
– “`str.split(‘区切り文字’)“`の様に区切り文字を指定し、文字列strを指定した区切り文字で区切ったリストを返してもらうこの2つの使用法があります。
前者の“`str.split()“`を使用します。
ログはタブや1文字分の空白で区切られていることが多いです。
ログの中で区切り文字が統一されていれば区切り文字を指定するのも良いのですが、残念ながら、タブと1文字分の空白の両方が混同されていることもあります。
“`str.split()“`であればタブも1文字分の空白も同じ「空白」として区切ってくれるのです。
もちろん、カンマなどで区切られている時は、“`str.split(‘区切り文字’)“`を採用
tracemallocの出力をフィルタする
現在Pythonのプログラム上で、どの変数がどれくらいのメモリを確保しているのかを確認するためのモジュールとして、`tracemalloc`という標準モジュールがあります。
これを使えば例えばこんなコードを書くことで、ある処理のメモリ解放漏れを確認することができます。
“`py:tracemallocを直接呼び出すコード
import tracemalloctracemalloc.start()
snap1 = tracemalloc.take_snapshot()
size1 = sum([stat.size for stat in snap1.statistics(“filename”)])
for stat in snap1.statistics(‘lineno’)[:10]:
print(stat)
# … ある処理 …
snap2 = tracemalloc.take_snapshot()
size2 = sum([stat.size for stat in snap2.statistics(“filename”)])
for stat in snap2
Python3 エンジニア認定基礎試験 受験記
#事前知識
Pythonを2020年1月くらいぼちぼちやっていて形が欲しかったので受験しました。
実際に集中して取り組んだのは、6月初旬からです。#試験情報
下記サイトになりますが、オライリーの本がベースとなって出題されています。
[Pythonエンジニア認定試験](https://cbt.odyssey-com.co.jp/pythonic-exam.html)
出題情報も載っていますので、必ずチェックするべきです。#資格勉強で使用したもの
– [スッキリPython](https://www.amazon.co.jp/%E3%82%B9%E3%83%83%E3%82%AD%E3%83%AA%E3%82%8F%E3%81%8B%E3%82%8BPython%E5%85%A5%E9%96%80-%E3%82%B9%E3%83%83%E3%82%AD%E3%83%AA%E3%82%B7%E3%83%AA%E3%83%BC%E3%82%BA-%E5%9B%BD%E6%9C%AC%E5%A4%A7%E6%82%9F/dp/4295006327)
– [Pythonチュートリアル](h