Python関連のことを調べてみた2020年11月06日

Python関連のことを調べてみた2020年11月06日
目次

docker-composeで株価データの自動取得

# はじめに

銘柄選びをする際、証券会社のサイトで用意されたツールを使う訳ですが、チャート表示ぐらいはそれで十分なんですが、少し変わったスクリーニングをしたいような場合やシステムトレードのバックテストをするときなどは、自分で株価データを持ちたいですよね。

毎日の日本株の株価データを公開している無尽蔵というサイトがあります。
自分で株価データを持つために、ここから、毎日定時に、その日の株価一覧の取得を試みます。

# 無尽蔵サイトから株価データを取得するpythonスクリプト

無尽蔵サイトのデータ取得のurlは、例えば2020/11/04の株価データなら、

http://mujinzou.com/k_data/2020/20_11/T201104.zip

当日の株価データを取得し、zipを展開するスクリプトの例:

~~~python:get_todays_csv_zip_from_muzinzo.py
# -*- coding: utf-8 -*-
import urllib.request
impor

元記事を表示

「伸び悩んでいる3年目Webエンジニアのための、Python Webアプリケーション自作入門」を更新しました

# 本を更新しました
Zennで執筆中のオンラインブック
[「伸び悩んでいる3年目Webエンジニアのための、Python Webアプリケーション自作入門」](https://zenn.dev/bigen1925/books/introduction-to-web-application-with-python/)
を更新しました

[チャプター「HTTPとは?」](https://zenn.dev/bigen1925/books/introduction-to-web-application-with-python/viewer/what-is-http) を更新しました。

続きを読みたい方は、ぜひBookの「いいね」か「筆者フォロー」をお願いします 😉

—-

以下、書籍の内容の抜粋です。

——

# HTTPについて学ぶ
さて、前章まででApacheとChromeの真似っ子をして、「エセWebサーバー」を作ってきました。
これをもう少し「最低限まともなWebサーバー」に進化させていきたいのですが、「最低限まともなWebサーバー」とは一体どういうものなんでしょう

元記事を表示

Google Colaboratory で StyleGAN を試す

## 概要

Google Colaboratory で StyleGAN を試す際に,いくつかつまづいた点があったので備忘録としてまとめておく.

参考にしたWebページは以下.
StyleGAN がきちんと動作するようになったら、解説が豊富なこれらのページを参考にすると良いと思う。

– 『 [Google ColaboratoryでStyleGANを使ってみた。](https://qiita.com/Phoeboooo/items/12d21916de56d125f0be) 』
– 『 [DCGAN 、 CycleGAN & StyleGAN の Python 実装](https://www.koi.mashykom.com/dcgan.html) 』
– 『[StyleGAN「写真が証拠になる時代は終わった。」](https://qiita.com/Phoeboooo/items/7be15acb960837adab21)』

つまづいた点は以下.

– Google Colaboratory で **GPU に接続**すること.
– **tensorflow のバージョンを

元記事を表示

スプレッドシートで各要素の掛け合わせの表を作る (Python)

## 前提条件

次のような Python ディクショナリ型 の値をスプレッドシートに表の形で記述する場合。

“`python
pattern = {
‘エリア’: [‘日本’, ‘アメリカ’, ‘イギリス’],
‘性別’: [‘男’, ‘女’],
‘身長’: [‘100cm以上’, ‘100cm未満’]
}
“`

### 環境

* Python 3.7.6
* Linux

## 掛け合わせ表の作成 (直積)

スプレッドシートで次のような各要素を掛け合わせた表を作りたい場合、

| | エリア | 性別 | 身長 |
|:–|:–|:–|:–|
| 1 | 日本 | 男 | 100cm以上 |
| 2 | 日本 | 男 | 100cm未満 |
| 3 | 日本 | 女 | 100cm以上 |
| 4 | 日本 | 女 | 100cm未満 |
| 5 | アメリカ | 男 | 100cm以上 |
| 6 | アメリカ | 男 | 100cm未満 |
| 7 | アメリカ | 女 | 100cm以上

元記事を表示

Numpy1.19.4のエラー RuntimeError: The current Numpy installation fails to pass a sanity check due to a bug in the windows runtime.

Numpyを使おうとしたら見慣れないエラーに遭遇しました.意外とあっさり解決できましたが,遭遇する方が多そうなので一応残しておきます.

# 環境
– Windows10
– Python 3.8.2
– Numpy 1.19.4

# エラー

“`sh
RuntimeError: The current Numpy installation (‘C:\\Users\\ … \\venv\\lib\\site-packages\\numpy\\__init__.py’) fails to pass a sanity check due to a bug in the windows runtime. See this issue for more information: https://tinyurl.com/y3dm3h86
“`

# 解決法

調べてみるとStackOverFlowに[同じエラーについての質問](https://stackoverflow.com/questions/64654805/how-do-you-fix-runtimeerror-packag

元記事を表示

ランダムフォレストの全ての決定木をSVGで可視化してみた

#ランダムフォレストのモデルを可視化
##概要
dtreevizとsvgutilsを利用してRFの複数の決定木を一つのSVGファイルで出力する方法をまとめてみました。

##RFから任意のモデルを一つ選択して表示
下記のリンクをそのまま流用させて頂きとりあえず実行しました。。
[RandomForest も dtreeviz してみる](https://qiita.com/go50/items/38c7757b444db3867b17)

“`python
from sklearn.datasets import load_iris
from sklearn import tree
from dtreeviz.trees import dtreeviz
from sklearn.ensemble import RandomForestClassifier

iris = load_iris()
clf = RandomForestClassifier(n_estimators=100 , max_depth = 2)
clf.fit(iris.data, iris.target)

元記事を表示

[翻譯] 構造化された並行処理に関するメモ..というかgo文は有害と思われる

– 著者 [Nathaniel J. Smith](https://vorpus.org/)
– 原文 [Notes on structured concurrency, or: Go statement considered harmful](https://vorpus.org/blog/notes-on-structured-concurrency-or-go-statement-considered-harmful/)
– 原文の投稿日時 2018年04月25日

# 本文

並行処理のAPIには当然コードを並行して走らせる手段がある。以下に様々なAPIの例を載せるので見て欲しい。

“`
go myfunc(); // Go言語

pthread_create(&thread_id, NULL, &myfunc); /* C言語 と POSIX threads */

spawn(modulename, myfuncname, []) % Erlang

threading.Thread(t

元記事を表示

G検定対策 OCR畳み込み計算ツール

# 概要
初投稿です。
G検定で出ると噂の畳み込み計算をなんとか自働化できないかとチャレンジしました。
こんなの人間ががんばる計算ではないと思います。

内部的には
– PySimpleGUI (本当はKivyを使いたかった)
– OpenCVを使用したマウスドラッグによる領域指定
– TesseractOCRによる文字認識
をなど使用していますので、これら個別にも参考になれたらなと思います。
win32apiを使用しているのでそのままではUNIXでは動かないです。
Kivyの方がかっこいいし慣れているのでそっちを使いたかったのですが、勉強のためにPySimpleGUIを使ってみました。
でもKivyはモダンでクールなのでお勧めです。

コードは下記にもあります。
https://github.com/poohsanforest/ConvCalcOCR

# 必要モジュール
– PySimpleGUI
– numpy
– opencv
– scipy
– pywin32
– pyocr
バージョン依存はないと思います。
あとTesseractOCRを別途インストールして環境変数

元記事を表示

SudachiPyの正規化処理だけ使いたい

SudachiPyと正規化処理を揃えたかったので、該当処理だけ抜き出しました。

“`python
from sudachipy import dictionary
from sudachipy.utf8inputtextbuilder import UTF8InputTextBuilder

dictionary = dictionary.Dictionary()
input_text_plugins = dictionary.input_text_plugins
grammar = dictionary.grammar

def normalize(text):
builder = UTF8InputTextBuilder(text, grammar)
for plugin in input_text_plugins:
plugin.rewrite(builder)
return builder.get_text()

if __name__ == ‘__main__’:
print(normalize(‘ABC123’)) # –

元記事を表示

windowsの環境でwebアプリ制作でハマったこと

“`py
return database_name == ‘:memory:’ or ‘mode=memory’ in database_name
TypeError: argument of type ‘WindowsPath’ is not iterable
“`

このエラーがなかなか消えなかったので、windows環境でdjanogoを使っている人に向けてメモを残す。
setting.pyのデータベースの部分を変更する必要がある。

`’NAME’: BASE_DIR / ‘db.sqlite3′,`
この部分を変更する。

`’NAME’: str(BASE_DIR / ‘db.sqlite3’),`

“`py
DATABASES = {
‘default’: {
‘ENGINE’: ‘django.db.backends.sqlite3’,
‘NAME’: str(BASE_DIR / ‘db.sqlite3’),
}
}
“`

翻訳では引数は何回も使えない。

元記事を表示

【Streamlit】インストールしてみた

## はじめに

Pythonのオンライン勉強会にて、Streamlitが紹介されていたので、
改めて自分で調べてメモ書きします。

Steamlitのインストール方法とデモアプリについて言及します。

## Streamlitとは

Streamlit社が開発した、
データ分析のプロダクトを開発するデータサイエンティストを助ける
Webアプリフレームワーク。

通常、複数の言語を使って実装する必要があります。

* データ分析処理をPythonで実装
* フロントエンドをHTML、CSS、JavaScriptで実装

Streamlitを利用すれば、Pythonでフロントエンドも実装することができます。

[Welcom to Streamlit – The fastest way to build and share data apps](https://www.streamlit.io/)

![スクリーンショット 2020-11-05 21.35.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/

元記事を表示

[Django]コマンドと役割を整理する

# プロジェクトの作成
“`python:command
django-admin startproject {プロジェクト名}
“`
# アプリケーションの作成
manage.pyのあるディレクトリで以下のコマンド

“`python:command
python manage.py startapp {アプリ名}
“`

## url用のディレクトリを作成

“`python:{アプリ名}/urls.py
from django.urls import path

from . import views

urlpatterns = [
path(”, views.index, name=’index’),
]
“`

## {プロジェクト名}/urls.py
こちらの`urlpatterns`には各アプリケーションからのURLConfを書く

“`python:{プロジェクト名}/urls.py
from django.contrib import admin
from django.urls import include, path

urlpatter

元記事を表示

【python】googletransの『AttributeError: ‘NoneType’ object has no attribute ‘group’』対策

#はじめに
pythonでgoogletransライブラリを使って翻訳していると、ある日
“`AttributeError: ‘NoneType’ object has no attribute ‘group“`
というエラーが出てきて、それ以降これが原因で処理を失敗してしまうことが多くなりました。
しかも全く同じコードにもかかわらず、エラーが出る時と出ない時があるのです。厄介。

[py-googletransのissue](https://github.com/ssut/py-googletrans/issues/234) を見ると、Google側のせいでエラーが起きてしまうということだったので、今のところ根治はできないみたいです。
しかし一時的な対策はできるので、issueのコメントよりそれを抜粋して紹介します。

#対策
エラーが出る時と出ない時があるので、成功するまで何回もやっちゃおう!!!という方法です。ゴリ押しです。

“`python
from googletrans import Translator

src = “翻訳したいテキスト”

tr = Trans

元記事を表示

Diagramsを用いて構成図を描いてみた

## はじめに
構成図を描くのにdraw.ioを使っていたのですが、diagramsというツールを使えばコードで描けるとのことだったので試してみました。

– [Diagrams Diagram as Code](https://diagrams.mingrammer.com/)

## 環境
– Mac OS Catalina
– Docker for Mac

## ファイル構造

“`bash
├── Dockerfile
└── test.py
“`

## Dockerイメージをつくる
[ドキュメント](https://diagrams.mingrammer.com/docs/getting-started/installation)にはpython3.6以上かつ、[Graphviz](https://www.graphviz.org/)をインストールしておいてとあるので、そのようにDockerfileを作成。(今回はalpineを使ってみたかったのでalpineで作成しました。)

“`dockerfile
FROM python:3.8-alpine

WORK

元記事を表示

[基本情報技術者試験]線形探索のアルゴリズムをPythonで書いてみた。

# 概要
– 基本情報技術者試験の午後の試験でアルゴリズムがあります。過去問を解いても理解ができません…。実際にアルゴリズムをPythonで書いて、理解を深めていきたいと思います。

– 前回は[配列の最大値](https://qiita.com/kuro_take/items/2130f337c45dc1695c7c)のアルゴリズムを書きました。
– 今回は**線形探索**のアルゴリズムから書いてみます。

## 線形探索
#### アルゴリズム
– 配列の要素を先頭から末尾まで順番に取り出して、指定された値と比較する。

#### コード
“`Python
# 線形探索で指定された値を見つけるSeqSearch関数
def SeqSearch(A,Length,X):
Pos = -1
i = 0
# 繰り返し処理
while i < Length and Pos == -1: # 「配列の末尾に達していない」と「見つかっていない」を意味する print("Pos=",Pos,"i=",i,"A[i]=",A[i]) # 途中の

元記事を表示

[基本情報技術者試験]配列の最大値のアルゴリズムをPythonで書いてみた。

# 概要
– 基本情報技術者試験の午後の試験でアルゴリズムがあります。過去問を解いても理解ができません…。実際にアルゴリズムをPythonで書いて、理解を深めていきたいと思います。

– 前回は[ユークリッドの互除法](https://qiita.com/kuro_take/items/525c5e31268f22c08fcf)のアルゴリズムを書きました。
– 今回は**配列の最大値**のアルゴリズムから書いてみます。

## 配列の最大値
#### アルゴリズム
– 配列の先頭の要素を仮の最大値とする。配列の残りの要素と仮の最大値を順番に比較して、より大きい値を見つけたら仮の最大値を更新する。

#### コード
“`Python
# 配列の最大値を求めるMax関数
def Max(A,Length):
Ans = A[0]
# 繰り返し処理
i = 1 # ループカウンタの初期値を1にする
while i < Length: print("Ans=",Ans,"i=",i,"A[i]=",A[i]) # 分岐処理

元記事を表示

『暗号解読』の暗号をPythonで作ってみる

下巻のp101~103の暗号化をPythonでやってみました。どれも、HELLOを暗号化します。

#1-1. 転置式の暗号化

<入力>
HELLO

“`
s=input()
n=len(s)
l=[]
for i in range(n):
l.append(str(bin(ord(s[i])))[2:])

m=””.join(l)

odd=m[::2]
even=m[1::2]

num=len(even)

for j in range(num):
print(even[j],end=””)
print(odd[j],end=””)
print(odd[-1])
“`
<出力>
01100010001010011001100011000110111

まずはASCIIに変換。
これはord()でOK。UnicodeとASCIIはアルファベットは同じ数字なんですね。へえ。

2進数は扱いづらいので、
str()で文字列にすれば、それぞれの位の数字を取り出せる。
str(bin(ord(s[i])))[2:]で、頭の0bを取る。

どうやって1番目の

元記事を表示

Pythonのプログラミング入門をScratchで再現チャレンジ

# この記事について

[ジュニア向け] PythonとProcessingでプログラミング入門:その1 – ブロックくずしを作ろう
この記事を参考に児童へPythonを教えていました。

ただ、年齢の低い児童へは導入としてScratchを教えたいなと思ったので、こちらとほぼ同じプログラムをScratchで作ってみようと試行錯誤しています。

## スクラッチのページ
?こちら(スクラッチへ飛びます)
Scratchで再現! 〜PythonとProcessingでプログラミング入門〜

![psc.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/372019/8f41facb-6882-20ef-682a

元記事を表示

Apache Flink1.9.0:​​AlibabaBlink機能を統合

**Apache Flink 1.9.0**は、バッチジョブのバッチリカバリやBlinkベースのクエリエンジンなど、**Alibaba**のBlinkの多くの機能を統合した重要なアップデートです。

*本ブログは英語版からの翻訳です。オリジナルは[こちら](https://www.alibabacloud.com/blog/apache-flink-release-integrates-alibaba-blink-features_595402)からご確認いただけます。一部機械翻訳を使用しております。翻訳の間違いがありましたら、ご指摘いただけると幸いです。*

2019年8月22日、[Apache Flinkのバージョン1.9.0](https://flink.apache.org/news/2019/08/22/release-1.9.0.html?spm=a2c65.11461447.0.0.2162645aQwyb7q)が正式に公開されました。この新バージョンは、[アリババのBlink](https://medium.com/@alitech_2017/alibaba-blink

元記事を表示

【Python3.8〜】lambda式でスマートに再帰関数を定義する方法

#はじめに
lambda式でも再帰を使いたいことありますよね(主にネタコードで)。
Python3.8以降ならスッキリかけます。
フィボナッチ数列のx番目を求める関数で比較してみましょう。

#方法
## 〜Python3.7

“`python
print((lambda x: (lambda f, x: f(f, x))(lambda f, x: f(f, x-1)+f(f, x-2) if x > 2 else 1, x))(10))
# >> 55
“`

## Python3.8〜

“`python
print((self:=lambda x:self(x-1) + self(x-2) if x > 2 else 1)(10))
# >> 55
“`

**す ご く す っ き り**

元記事を表示

OTHERカテゴリの最新記事