- 1. Backtrader カスタムインジケーターの作り方
- 2. 【Python】Blueprintを使って大きなFlaskファイルを分割する
- 3. pythonで選択ソートを実装してみた
- 4. [Pythonで遊ぼう] 文章自動生成をめざす ~.txtを読み込み一文単位にする~
- 5. PythonでWeb開発 with TDD 1
- 6. numpyとpandasの分散を求めるメソッドの違い
- 7. 【PEP8】Pythonのソースコードを規約に乗っ取ってキレイに書く
- 8. pythonでバブルソートを実装してみた
- 9. 特殊メソッド
- 10. 数理モデルを構築して個別株の予測をしてみた
- 11. 【Python】二次元配列を自在に操れ。【初期化・参照・抽出・計算・転置】
- 12. Python3における、ファイルを開く関数(openとcodecs.openの違いと速度比較について)
- 13. 初心者がPythonでWebアプリ開発をはじめてみる
- 14. Python3でプレイリスト(m8u8ファイル)の読み込み
- 15. Python Webフレームワーク Bottleの足場作成ツールを作ってみた
- 16. 「AtCoder 版!蟻本 (初級編)」を解く!
- 17. AtCoder Beginner Contest 154 に参加してみた
- 18. PySimpleGUIでグラフを描く
- 19. Python3をインストールする方法
- 20. 今更Webスクレイピングを試してロト6のデータを取得
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の起動を確認
numpyとpandasの分散を求めるメソッドの違い
## TL;DR
numpyとpandasの分散処理をしていて、両者が一致しないのでなんで?となったのでメモを残しておきます。
## numpyとpandasのvarを求めるメソッドの結果はデフォルト値だと一致しない
簡単にrandomに生成した行列を用いてテストします。実際に一致しません。
“`python
import numpy as np
import pandas as pdX = np.random.randn(10, 10)
df = pd.DataFrame(data=X)np.allclose(X, df.values)
# TrueX_var = np.var(X, axis=1)
df_var = df.var(axis=1)np.allclose(X_var, df_var.values)
# False
“`実際にドキュメントを調べてみると、[numpy.var](https://docs.scipy.org/doc/numpy/reference/generated/numpy.var.html)ではデフォルトが`ddof=
【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を扱ってみる。一番目はさっさと終わらす。二番目と三番目
Python3でプレイリスト(m8u8ファイル)の読み込み
## m8u8ファイルとは
音楽のプレイリストを保存するファイル形式。中身は以下の形式で保存されたテキストファイルです。
ミュージックプレイヤーでプレイリストをエクスポートすると出力される。
m8u8はutf-8、m8uはSJISの文字コードで保存されてることを表す拡張子。“`
#EXTM3U
#EXTINF:456,約束 【ORT】
F:\music\THE IDOLM@STER\765プロダクション\01_約束 【ORT】.flac
#EXTINF:240,Cherry Colored Love
F:\music\THE IDOLM@STER\ミリオンライブ!\01_Cherry Colored Love.wav
“`
曲の長さや曲名 → 曲のフルパス → 次の曲 …と改行して記載してある。
`#EXTINF:456,約束 【ORT】`
→ 456は曲の長さ[秒],曲名## データクラス
“`python
class M8U8Info :
lengthTime = 0
name = b””
filepath = b””
ext
Python Webフレームワーク Bottleの足場作成ツールを作ってみた
![create bottle app.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/324759/842868d8-f6ff-d83e-a4b0-528e923c88d3.png)
WebフレームワークのBottleをご存知でしょうか?
PythonのWebフレームワークではDjangoが有名ですが、個人的に好きなフレームワークにBottleがあります。
1つのPythonファイルとHTMLファイルを用意してあげるだけで、簡単にWebアプリケーションを作ることができます 🙂
# [Bottle](https://bottlepy.org/docs/dev/)
以下のコマンドで、Bottleをインストールすることができます。
“`
$ pip install bottle
“`# [足場作成ツール](https://github.com/ShogoMurakami/create-bottle-app)
いくつかBottleでWebアプリケーションを作ってみましたが、いつも同じよ
「AtCoder 版!蟻本 (初級編)」を解く!
[AtCoder 版!蟻本 (初級編)](https://qiita.com/drken/items/e77685614f3c6bf86f44)を細々と__Python__で解いていきます。
#2 基礎からスタート! — 初級編
##2-1 すべての基本 “全探索”
###例題 2-1-1 部分和問題
####[ABC 045 C – たくさんの数式](https://atcoder.jp/contests/arc061/tasks/arc061_a)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/581889/e22bfbc2-fdf2-52d4-a394-dd92bf358627.png)__【キーワード】__
bit全探索__解答__
“`python
S = list(input())ans = 0
for i in range(2**(len(S)-1)):
plus = [“”]*(len(S))
fomula = “”
for
AtCoder Beginner Contest 154 に参加してみた
## はじめに
僕はpython初学者です。同じ初学者に馴染みやすい??簡単なコードを提供するとともにもっとこうした方がいいなど改善点があったら教えてほしいです。### ABC154A Remaining Balls
“`python
s, t = input().split()
a, b = map(int, input().split())
u = input()
if u == s:
a -= 1
elif u == t:
b -= 1
print(“{} {}”.format(a, b))“`
### ABC154B I miss you…
listから.joinしなくても ”x”*a だけでいけるのか…
“`python
s = input()
a = len(s)l = [“x”] * a
print(“”.join(l))“`
### ABC154C Distinct or Not
この問題はset()使って一発だった…
“`python
n = int(input())
a = set(map
PySimpleGUIでグラフを描く
# この記事を読んでできるもの
![graph_example.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11002/8cd9bcf0-b8df-170e-b058-4912040d8052.jpeg)PySimpleGUIで以下のことができるようになります。
– 棒グラフ、折れ線グラフなどが描画できるようになります。
– 定期的に表示を更新するグラフ# 概要
Pythonの利用方法としてデータ解析を行う人は多いと思います。
また解析した結果を折れ線グラフや棒グラフなどで可視化したいという人もいるかと思います。PySimpleGUIでグラフを利用する場合は大まかに言って2通りあります
– [graph-element](https://pysimplegui.readthedocs.io/en/latest/#graph-element)を使って描画する
– matplotlibを埋め込んで描画する今回はgraph-elementを使って作成する方法を説明します。
# grap
Python3をインストールする方法
# Background
[何もない状況から低コストでプログラミングを学ぶ方法を考えてみた。(Mac編)](https://qiita.com/satsukiya/items/1ca3554da096805e4228)
[タダでプログラミングを学ぶ方法を考えてみた。](https://qiita.com/satsukiya/items/97e123a01cbc64d8b173)
の続きです。これらの初歩的な話は[文部科学省](https://www.mext.go.jp/a_menu/shotou/zyouhou/detail/1375607.htm)が ~~インパール作戦的に~~ プログラミング教育2020 を始めるにあたって、公共以外で家で学習する時に最低限のコストですすめる方法をまとめていて、おそらくこの辺の需要はありそうと思ったためです。
2回のまとめの中で中古のMacで学習しましょう!
と書きましたがもしターミナルを開いてPythonを使うとなると、そのPythonのバージョンが2系と古いものだと思います。個人的には
*プログラムの文法を学ぶためだけだったら古いも
今更Webスクレイピングを試してロト6のデータを取得
サーバーいらずで無料でWebスクレイピングが出来ると聞いて試してみた。
題材が無いとどうしてもやる気が出ないので、少しでもやる気の出るように今回はロト6のデータを取得して
本当にランダムなの?って検証を行った。#colab
まずは[colab](https://colab.research.google.com/notebooks/welcome.ipynb?hl=ja)に登録して、`ファイル`→`Python3のノートブック`を選択
ハードウェアをGPUに変更colabは毎回閉じると全部入れた物が無くなるので、毎回インストールが必要
“`
!apt-get update
!apt install chromium-chromedriver
!cp /usr/lib/chromium-browser/chromedriver /usr/bin!pip install selenium
!pip install beautifulsoup4
“`#スクレイピング部分
いろいろ調べたけど、しっかり動かなかったので
[ここ](http://www.toshioblo