- 1. 音楽ファイル(flac, wav)のタグ情報(タイトルやアーティスト)を抽出したい。
- 2. Python 3.7でTensorflow 2.xを動かす
- 3. python configargparse メモ
- 4. python初心者がIT企業にインターンしてみた[一日目 開発工程]
- 5. Backtrader 別のファイルからインジケーターをimportする方法
- 6. 「=」を使わずにFizzBuzzを書く
- 7. Raspberry PiにTensorFlow 1.15.0をインストールする
- 8. AWSの可視化ツールCloudMapper
- 9. Backtrader カスタムインジケーターの作り方
- 10. 【Python】Blueprintを使って大きなFlaskファイルを分割する
- 11. pythonで選択ソートを実装してみた
- 12. [Pythonで遊ぼう] 文章自動生成をめざす ~.txtを読み込み一文単位にする~
- 13. PythonでWeb開発 with TDD 1
- 14. 【PEP8】Pythonのソースコードを規約に乗っ取ってキレイに書く
- 15. pythonでバブルソートを実装してみた
- 16. 特殊メソッド
- 17. 数理モデルを構築して個別株の予測をしてみた
- 18. 【Python】二次元配列を自在に操れ。【初期化・参照・抽出・計算・転置】
- 19. Python3における、ファイルを開く関数(openとcodecs.openの違いと速度比較について)
- 20. 初心者がPythonでWebアプリ開発をはじめてみる
音楽ファイル(flac, wav)のタグ情報(タイトルやアーティスト)を抽出したい。
# 初めに
ハイレゾ音源しかもってないためmp3とか知りません。FLACやWAVEのタグ情報(曲名やアーティスト)を取得したいのです。
mutagenライブラリでは、wav形式の音楽ファイルのタグ情報が取得できなかったため、pytaglibライブラリを使用しました。## PC環境
windows10 pro 64bit
python 3.8.1 64bit# pytaglibをinstallする
pytaglibはTagLibというC++ライブラリをバインドしてpythonから動作するようにしたライブラリ。### Windowsは「pip install pytaglib」ではダメ
以下公式の下のほうにある「Manual Compilation: Windows」を実施した。
[pytaglib公式](https://pypi.org/project/pytaglib/)### 準備
TagLibをダウンロードして解凍しておく。
(https://taglib.org/#windows)### 手順1
~~~
1. Install Microsoft Visual
Python 3.7でTensorflow 2.xを動かす
# 前書き
macOSにPython3.7.xをインストールして `pip3 install tensorflow` したら 2.1系が入りました。ネットで見つけたコードが動かなくて困りました。
Python 3.6.xとTensorflow 1.xのセットアップを行えば元のソースのまま実行できるようですが、せっかくなのでTensorflow 2.xを使ってみたいと思います。
# この構成でHello Tensorflowするには?
## 何も考えずHello Tensorflowしてみる
そして、よくあるコードを `tf-hello.py` みたいな名前をつけて保存し、実行してみます。
“`
import tensorflow as tfhello = tf.constant(‘Hello, Hello World!’)
sess = tf.Session()
print(sess.run(hello))
“`すると、次のように表示されるはずです。
“`
$ python3 tf-hello.py
…
Traceback (most rece
python configargparse メモ
なかなか良さそうだと思ったので調べた記録
## インストール
試験環境はubuntu 19.04
最新版は2019年10月1日時点でupstreamでの最新は0.14.0(Jan 13,2019)だが運用的にセキュリティパッチなどを考慮したくないため上記ディストリビューションのパッケージを使用する。$ sudo apt install python3-configargparse
$ dpkg -l python3-configargparse
要望=(U)不明/(I)インストール/(R)削除/(P)完全削除/(H)保持
| 状態=(N)無/(I)インストール済/(C)設定/(U)展開/(F)設定失敗/(H)半インストール/(W)
|/ エラー?=(空欄)無/(R)要再インストール (状態,エラーの大文字=異常)
||/ 名前 バージョン アーキテクチ 説明
+++-======================-============-============-===========================
python初心者がIT企業にインターンしてみた[一日目 開発工程]
#ウォーターフォール開発
##朝の打ち合わせ
とりあえずスーツで出勤した私は部長にすぐさま、「私服でいいのに」と笑われた。おいいいいい。
出勤はしたものの、何をするか全く知らない私は、打ち合わせで衝撃を受けた。このインターンでは、多くのことは知らされず、キーワードなどは伝えるけどその他は自分で調べて進めていくというもの。その意図は、おそらく自己解決能力を鍛えるものだと思う。この一ヶ月半で大きく成長できることを確信した。このインターンを紹介してくれた先輩に感謝したい。ありがとうございます。##最初のキーワードはウォーターフォールモデル
打ち合わせで知らされたのは開発工程ガイダンスとウォーターフォールモデルというキーワードだけである。昼にもう一度打ち合わせをやるから、それまでにその打ち合わせを有意義に活用できるように必要事項をまとめて発表してもらうからとのこと。
時間は朝の十時。打ち合わせは一時。さてまずはオフィスを入れなければな。
オフィスを入れた頃には十一時。やばい。#ウォーターフォールモデルとは
##ウォーターフォールモデルとアジャイルモデル
開発工程には二つのモデルがあり、
Backtrader 別のファイルからインジケーターをimportする方法
#カスタムインジケーターのimport
いままでは説明のため同一のスクリプト内にカスタムインジケータークラスを書きました。しかしカスタムインジケータークラスだけを別のpyファイルに書いて、ストラテジーのスクリプトとは別々に使う方が便利です。カスタムインジケーターのファイル名を仮に **customindicator.py** とすると、ストラテジーの冒頭部分に
`import customindicator as cind `(任意のわかりやすい名前)
と書いてストラテジークラスのinitメソッド内には
`self.myind1 = cind.MyStochastics1(self.data)`
と書きます。
customindicator.py はストラテジーのスクリプトと同じディレクトリに置きます。Jupyternotebookを使っていてデフォルト設定のままならば `C:\Users\ユーザー名\` です。
“`python:customindicator.py
import backtrader as bt
class MyStochastic1(bt.
「=」を使わずにFizzBuzzを書く
#「=」を使わずにFizzBuzzを書きたい
特に意味はない
20までのFizzBuzzを「=」を使わずにいろんな言語で書いてみよう#C言語
“`c:c_fizzbuzz.c
#includeint main(void) {
int n;
n++;
while (1) {
if (n%3 && n%5) {
printf(“%d”, n);
}
else{
if (!(n%3)) {
printf(“Fizz”);
}
if (!(n%5)) {
printf(“Buzz”);
}
}
printf(“\n”);
n++;
if (n>20) {
break;
}
}
return 0;
}
“`初期化しないと0が入るのを利用(ただしコンパイラによる)
0がFalse、それ以外がTrueになる性質を使って条件分岐する#Python
“`python:pyth
Raspberry PiにTensorFlow 1.15.0をインストールする
こんにちは。
Raspberry PiへのTensorFlowのバージョン1.15.0以降をインストールしたかったのですが、
`pip`ではうまくいかず、日本語でまとまっているものが見つからなかったので、備忘録がてらまとめておきます。# 環境
ラズパイの環境は下記の通りです。
– Raspberry Pi 3 Model B+
– Raspbian 9.11(stretch)
– Kernel 4.19.66-v7+“`Bash
$ uname -a
#Linux raspberrypi 4.19.66-v7+ #1253 SMP Thu Aug 15 11:49:46 BST 2019 armv7l GNU/Linux
$ lsb_release -a
#No LSB modules are available.
#Distributor ID: Raspbian
#Description: Raspbian GNU/Linux 9.11 (stretch)
#Release: 9.11
#Codename:
AWSの可視化ツールCloudMapper
#AWSの可視化ツールCloudMapperのtagsオプション
CloudMapperでオプション(tags)が障害中で使用できないが、どうしても使用したい人の用
https://github.com/duo-labs/cloudmapper/issues/652
ご指摘の通り、Lambda関数のタグの取得に修正が必要とのこと
※早く修正していただけることを願いしますwLambda関数はいいからタグオプションで絞り込みたい人向け
prepare.pyの388行目あたりをコメントアウトすれば、とにかく動く!
“`commands/prepare.py
– # Lambda functions
– for lambda_json in get_lambda_functions(region):
– node = Lambda(region, lambda_json)
– nodes[node.arn] = node
+ # # Lambda functions
+ # for lambda_json in get_la
Backtrader カスタムインジケーターの作り方
例としてストキャスティクスを作って中身を見てみます。
おおまかな動作イメージを掴んでもらえたら幸いです。“`python:sto1.py
import backtrader as bt
class MyStochastic1(bt.Indicator): #bt.Indicatorを継承
lines = (‘k’, ‘d’, ) # プロットに表示するlinesオブジェクト
params = (
(‘k_period’, 14), # パラメーターをタプルのタプルで指定する
(‘d_period’, 3), # タプルの最後にもコンマ(、)をいれる
)
plotinfo = dict(plot =True,
subplot=True,
plotname=”,
)def __init__(self):
highest = bt.
【Python】Blueprintを使って大きなFlaskファイルを分割する
# はじめに
pythonのwebフレームワークであるFlaskを使ってWEBアプリをつくっていると、Flaskのファイルの行数が多くなってしまいがちなのでファイル分割を検討した。FlaskではBrueprintを使ったファイル分割が一般的なようで、今回Blueprintを使用してファイルを分割した。# ディレクトリ構成
“`
├── main.py
├── COMP_A
│ └── func_A.py
├── COMP_B
│ └── func_B.py
└── templates
├── COMP_A
│ ├── index_A_1.html
│ └── index_A_2.html
└── COMP_B
├── index_B_1.html
└── index_B_2.html
“`
メインプログラムはmain.pyとする。またこの他にコンポーネントA、Bがあるものと想定。
各コンポーネント内のfunc_A.py、func_B.pyはそれぞれFlaskを使用するファイル。fla
pythonで選択ソートを実装してみた
pythonとアルゴリズムの勉強かねがね、選択ソートを実装してみました。
1.ランダムなリストを作成する
例:
[1,3,0,4,2]2.操作対象リストの中で最小の値を探す
例:
[1,3,0,4,2]→0が最小3.一番左を0と入れ替えて、0は操作完了にする
[1,3,0,4,2]→[0,3,1,4,2]
-次は左から二番目、その次は三番目…と順に対象にして2.と3.を繰り返す-
[1,3,0,4,2]
[0,3,1,4,2]
[0,1,3,4,2]
[0,1,2,4,3]
[0,1,2,3,4]…という処理を選択ソートと呼ぶらしいです。
“`select_sort.py
import random
# 準備する値の数を入力
numbers = 10# チェック済の値を格納するリストの作成
pop_list = []# 乱数の作成
num_list = list(range(numbers))
random.shuffle(num_list)def _select_min(num_list, pos):
_min = None
[Pythonで遊ぼう] 文章自動生成をめざす ~.txtを読み込み一文単位にする~
# はじめに
文章自動生成をめざす、二回目です。前回は文章の構造を調べる形態素解析というのをやりました。今回は、.txtを読み込んで一文ずつに分けるということをしていきます。#文章を読み込む
事前にメモ帳などで作成したテキストデータを用意しておきます。エンコーディング方法には注意しておきましょう。(例では’utf-8’です。)では、文章を読み込んで表示しましょう。“`
import re
a = open(‘test.txt’, ‘r’, encoding = “utf-8”)
original_text = a.read()
print(original_text) #文章を表示
“`
こんな感じになります。
![2020-02-11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/574563/9d0e3248-41d3-f07e-9227-3ad55bb96189.png)#テキストデータを整理する
次にテキストデータを整理します。もととなるテキストの書き方次第で、各自調整が必要と
PythonでWeb開発 with TDD 1
# Djangoの開発環境を準備と最初のテスト
## 準備したもの
前回の続き。”Test-Driven Development with Python”を参考にしながらDjangoでの開発をスタートします。
本書はテスト環境のブラウザとしてFirefoxを使うようなのでわざわざFirefoxインストールしました。1. Djangoのインストール
2. Seleniumのインストール
3. Firefoxブラウザのインストール
4. geckodriverのインストール## Django
書籍ではv1.12を使っていますがv3.0.3を今回は使用します。
## Selenium
書籍同様にv3(stable v3.141.0) を今回は使用します。
## Done
1. Djangoのインストール
2. Seleniumのインストール
3. Firefox用のドライバー(geckodriver)の準備
4. プロジェクトディレクトリの作成
5. 最初のテストの作成
6. 最初のテストの失敗を確認
7. DjangoでAPPのひな形を作成
8. APPの起動を確認
【PEP8】Pythonのソースコードを規約に乗っ取ってキレイに書く
# 始めに
プログラム言語の紹介サイトなどを見ると、Pythonは行儀のいい言語などと記載されているのを見かけます。Pythonは他言語に比べると書き方の制約が多い印象を受けますが、それでもやはり自由度は高く、実際開発を行ってみると各プログラマ固有のクセがソース内に大量に残存してしまいます。これは個人の趣味程度であればさほど重要な問題ではありませんが、仕事、特にチーム開発の場合には由々しき問題です。一度開発したものは基本的に何年と保守せねばならず、その中で保守担当者が変わることもよくあることです。後々の保守を考え、プログラム規約をプロジェクト内で定義しておくことは非常に重要な事となります。
プロジェクトごとに規約を定義する場合には一から作成することも手としてありです。しかしながら時間およびコストが掛かってしまうため、PEP8をベースとしてコーディング規約を作成することが多々ありますのでご紹介させて頂きます。
# PEP8とは
PEP8とは「コードは書くよりも読まれることの方が多い」という考えの元に作成されたPythonのコーディング規約です。この規約に乗っ取ることでコードを読
pythonでバブルソートを実装してみた
pythonとアルゴリズムの勉強かねがね、バブルソートを実装してみました。
1.ランダムなリストを作成する
例:
[1,3,0,4,2]2.操作対象リストの右端の値と隣の値を比較して、右側が小さければ値を入れ替え
左端に到達するまで比較を繰り返す
例:
[1,3,0,4,2]→(4と2を比較して2が小さいので入れ替えする)→[1,3,0,2,4]
[1,3,0,2,4]→(0と2を比較して0が小さいので入れ替えなし)→[1,3,0,2,4]
[1,3,0,2,4]→(3と0を比較して0が小さいので入れ替えする)→[1,0,3,2,4]
[1,0,3,2,4]→(1と0を比較して0が小さいので入れ替えする)→[0,1,3,2,4]3.左端まで比較が終わると、左端の値がリスト内で一番小さい値になるので
左端の値を操作済みリストに移行して、操作対象のリストから除外する-操作済リストの中身がラスト1個になるまで2.と3.を繰り返す-
…という処理をバブルソートと呼ぶらしいです。
(4.ラスト1個は比較せず操作済リストに移行する)
“`bubble_sort.py
i
特殊メソッド
“`py:
class Word(object):
def __init__(self, text):
self.text = textdef __str__(self):
return ‘texttxet’def __len__(self):
return len(self.text)def __add__(self, word):
return self.text.lower() + word.text.lower()def __eq__(self, word):
return self.text.lower == word.text.lower()w = Word(‘aaaaaaaaaa’)
w2 = Word(‘bbbbbbbbbbbbb’)print(w)
print(len(w))
print(w + w2)
print(w == w2)
“`“`:実行結果
texttxet
10
aaaa
数理モデルを構築して個別株の予測をしてみた
個別株の予測をしてみようと思い、結果を自分用備忘録として以下まとめます。
統計的な手法としては、古き良き重回帰分析でサクッと。
今回使用する説明変数は、前日の終値をベースに、
・移動平均線(5日移動平均線、25移動平均線、50日移動平均線)
・ボリンジャーバンド(±2σ,±1σ)
・一目均衡表(基準線、転換線、先行スパン1、先行スパン2、遅行線)
を使用しました。対象株は、RIZAPグループ(2928)です。理由は特にありません。。。
学習対象期間は上場した2006年から2018年までで、
テスト対象期間は2019年にしました。以下、結果です。
![graph1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/407666/d700af91-d732-056e-ad86-431a93d2b404.png)
前日の終値を元に、翌日の終値を計算しています。
株価の動きはほぼ完璧に捉えられていると思います。
まぁ重回帰分析の特徴を踏まえると当たり前ですかね。![graph2.png](htt
【Python】二次元配列を自在に操れ。【初期化・参照・抽出・計算・転置】
#はじめに
Pythonを学ぶ上で避けては通れない**二次元配列の操作(初期化・参照・抽出・計算・転置)**をまとめました。
(※numpyモジュールのインストールが必要。macの場合は、terminalから`pip3 install numpy`でインストール可能。windowsの場合は、こちらを参考に、、[WindowsでPython3, numpy, pandas, matplotlibなどインストール](https://qiita.com/mojaie/items/241eb7006978e6962d05))
基本的に以下のようなコードでコードと出力結果を記載します。“`ex.py
code = ‘コード’
# 出力結果
“`#リストの初期化
例として、2行3列`[[0, 0, 0], [0, 0, 0]]`の2次元配列を次の2通りの方法で作成する。###1. リスト内包表記を使って二次元配列を作る
“`ex1.py
a = [[0 for j in range(3)] for i in range(2)]
print(a)
# [[0, 0, 0], [0
Python3における、ファイルを開く関数(openとcodecs.openの違いと速度比較について)
## まず結論
処理速度はopen関数の方が早い。
用途の広さではdocecs.open関数。
ソースコードの読みやすさ・シンプルさはどっちもどっち。
要は使いどころ次第でした。## きっかけ
python3の練習用に、皆様ご存知”言語処理100本ノック”をやっていると、
ファイルを開く関数が2種類あることに気付いた(openとcodecs.open)。
どちらもよく使われているっぽい。## openとcodecs.openは何が違うの?
codecs.open関数は、Python2系でエンコードしたファイルを開ける。
うん、まぁ、便利かもなぁ。
使いどころの違いとしてはそんな感じだと理解しました(指摘あれば教えてください)。ただ、ソースコードの書き方に若干の違いがあります。以下で見ていきましょう。
## ソースコードの比較
以下のようなhoge.txtを読み込むコードを作成してみます。
![hoge.txt](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180125/1761c77b-f64e-
初心者がPythonでWebアプリ開発をはじめてみる
# Python初心者がRest APIを作成する
## やりたいこと
1. フレームワークDjangoを使用してRest APIを作成する
2. ORMライブラリを使用してRDBのデータを操作する
3. AWSにて作成したAPPをホスティングする## 現状
PythonはCSVの処理を少し書いたことがある。基本文法からして怪しい。パッケージマネージャーがpipなのは知ってる。テストフレームワークにpytestがあるのも知ってる。
## やること
1. 基本文法をざっくり確認したうえで、テストを書きながらPythonのコードに慣れる。
2. Djangoを使って簡単なWebAppを作成する。
3. 目的のRestAPIを作成する。
4. AWS上で動作させる。## 使うもの
– 『独学プログラマ』
ざーっと文法確認するために一読する。– 『テスト駆動Python』
テストフレームワークの使い方も合わせてこなす。– “Test-Driven Development with Python”
Djangoを扱ってみる。一番目はさっさと終わらす。二番目と三番目