- 1. カジノにおけるモンテカルロ法って本当に勝てるの?
- 2. Python3 で Cloud Firestore のデータを削除 (Delete)
- 3. Poetryでライブラリがインストールできない時の解決方法
- 4. Python3 で Cloud Firestore のデータを更新 (Update)
- 5. Python3 で Cloud Firestore のデータを読む (Read)
- 6. Python3 で Cloud Firestore のデータを作成 (Create)
- 7. 【Python】beautifulsoup4の備忘録
- 8. 文字列からそれぞれの文字がいくつあるか調べる。
- 9. 【Python】特定の文字列で始まる要素のみを配列に残す
- 10. Django 開発者への道② ~ URLを設計する ~
- 11. Dockerを使って数分でOpenCV&Python環境を構築して試す
- 12. Pythonでテーブル画像を出力、保存する(plotly編)
- 13. PyTorch による MNISTデータセットの分類モデル作成
- 14. 【Python】ノーヒットノーランを成し遂げたピッチャーの分析をしてみた
- 15. pythonモジュールがimport済みかどうかを確認する方法
- 16. Pythonでカレンダーマスタを生成する
- 17. NucDiffが使いたい -Python2との切り替え
- 18. sorted
- 19. [Python3 入門 14日目]7章 文字列(7.1.1.1〜7.1.1.4)
- 20. Anaconda(python 3.7)でspyderが起動できない問題を解決する
カジノにおけるモンテカルロ法って本当に勝てるの?
https://qiita.com/kagawa_shinjiiiii/items/ff49a8c7ccc682845a2a
を読みました。興味深かったので、実際にこれを用いてオンラインカジノに100ドル入れてモンテカルロ法を実践してみてるんですけど現在+35ドルくらい稼げていてすごいなあと思いました。
しかし、その中で一度やばいパターンを引いたりして所持額が0になりかけたりもしてやばかったこともあり、「これって実際の状況だと本当に稼げるの…?」と思い、実際の状況を想定したシミュレーションをしました。
# 前提
– スタート時の金額は1000ドル
– 1単位を1ドルとする。
– 所持金がn倍になるor0未満になるまで実行をし、その一連の動作を1000回行い、勝率を計算する。
– ルーレットにおける2倍モンテカルロ法、3倍モンテカルロ法どちらも行う。
– 2倍時の1回の勝率は18/37(0~36のうちの0を除いた18通り)、3倍時の1回の勝率は12/37(同様)とする。# (復習)モンテカルロ法って?
①初期配列として以下の配列を用意する
[1, 2, 3]
②
Python3 で Cloud Firestore のデータを削除 (Delete)
こちらで作成したデータのひとつを削除します。
[Python3 で Cloud Firestore のデータを作成 (Create)](https://qiita.com/ekzemplaro/items/4288176394947283c84a)“`py:firestore_delete.py
#! /usr/bin/python
#
import sys
import firebase_admin
from firebase_admin import credentials
from firebase_admin import firestore# ——————————————————————
sys.stderr.write(“*** 開始 ***\n”)
key_in = sys.argv[1]
#
print(key_in)
#
cred = credentials.ApplicationDefault()
firebase_admin.initialize_app(cred,
Poetryでライブラリがインストールできない時の解決方法
## 起こるエラー
poetryを使っていると、よく遭遇する
“`sh
$ poetry config virtualenvs.in-project true
$ poetry new project-name
$ poetry add lib-name
“`みたいにしたときに、以下みたいなエラーが出た時の解決方法
“`
[SolverProblemError]
The current project’s Python requirement (>=2.7,<2.8) is not compatible with some of the required packages Python requirement: - environs requires Python >=3.5Because environs (7.1.0) requires Python >=3.5
and no versions of environs match >7.1.0,<8.0.0, environs is forbidden. So, because ops depends
Python3 で Cloud Firestore のデータを更新 (Update)
こちらで作成したデータを更新します。
[Python3 で Cloud Firestore のデータを作成 (Create)](https://qiita.com/ekzemplaro/items/4288176394947283c84a)“`py:firestore_update.py
#! /usr/bin/python
#
import sys
import firebase_admin
from firebase_admin import credentials
from firebase_admin import firestore# ——————————————————————
def data_read_proc(doc):
results = doc.to_dict()
str_out = doc.id + ‘\t’
str_out += results[‘name’] + ‘\t’ + str(results[‘population’])
str_out += ‘
Python3 で Cloud Firestore のデータを読む (Read)
こちらで作成したデータを読みます。
[Python3 で Cloud Firestore のデータを作成 (Create)](https://qiita.com/ekzemplaro/items/4288176394947283c84a)“`py:firestore_read.py
#! /usr/bin/python
#
import sys
import firebase_admin
from firebase_admin import credentials
from firebase_admin import firestore# ——————————————————————
def data_read_proc(doc):
results = doc.to_dict()
str_out = doc.id + ‘\t’
str_out += results[‘name’] + ‘\t’ + str(results[‘population’])
str_out += ‘\t’
Python3 で Cloud Firestore のデータを作成 (Create)
ライブラリーのインストール
“`bash
sudo pip install –upgrade firebase-admin
“`“`py:firestre_create.py
#! /usr/bin/python
#
import sys
import datetime
import firebase_admin
from firebase_admin import credentials
from firebase_admin import firestore# ——————————————————————
def add_data_proc(db,key,name,population):
sys.stderr.write(“key = ” + key + “\n”)
doc_ref = db.collection(‘cities’).document(key)
doc_ref.set({
‘name’: name,
‘population’: populati
【Python】beautifulsoup4の備忘録
## はじめに
“beautifulsoup4“による、htmlタグ検索の備忘録。## 環境
– python: 3.7
– beautifulsoup4: 4.8.2## 基本の検索
“`py
# pタグ全部
find_all(“p”)# 一番初めに見つかったpタグのみ
find(“p”)# aタグかつhrefがhogehogeから始まるもの
import re
find_all(“a”, href=re.compile(“^hogehoge”))
“`## cssセレクタ使った検索
“`py
# 親子関係を指定、ゆるく
select(‘body div p’)# 親子関係その2、きびしく
select(‘body > div > p’)# クラス名
select(‘.myclass’)# id名
select(‘#myid’)# AND条件
select(‘.myclass1.myclass2’)
“`## n番目のタグ
“`py
# 下記のhtmlの3番目のタグを検索する
#
#
# <
文字列からそれぞれの文字がいくつあるか調べる。
“`py:1
s = ‘aeqwtwegwa’
d = {}for c in s:
if c not in d:
d[c] = 0
d[c] += 1print(d)
“`“`:1の実行結果
{‘a’: 2, ‘e’: 2, ‘q’: 1, ‘w’: 3, ‘t’: 1, ‘g’: 1}
“`“`py:2
s = ‘aefqwdqfqwe’
d = {}for c in s:
d.setdefault(c, 0)
d[c] += 1print(d)
“`“`:2の実行結果
{‘a’: 1, ‘e’: 2, ‘f’: 2, ‘q’: 3, ‘w’: 2, ‘d’: 1}
“`標準ライブラリからdefaultdictを読み込んで書くと、
“`py:3
from collections import defaultdicts = ‘raegiowejgohg’
d = defaultdict(int)for c in s:
d[c] += 1print(d)
pri
【Python】特定の文字列で始まる要素のみを配列に残す
# はじめに
備忘録。
特定の文字列から始まる要素のみを配列に残したい。
“[‘hogehoge.form’, ‘hugahuga.form’, ‘hogehoge.form2’]“という配列があり、“hogehoge“から始まる要素のみを残し、他の要素は削除したい。## 解決方法
### 文字列メソッド“startswith()“を使う
文字列の先頭を判別できるメソッド“`py
moji = ‘hogehoge’# trueを返す
moji.startswith(‘hoge’)# falseを返す
moji.startswith(‘huga’)
“`### サンプルコード
“`py
# 元の配列
moji_ary = [‘hogehoge.form’, ‘hugahuga.form’, ‘hogehoge.form2’]# 新しい配列new_aryに、元の配列moji_aryの要素のうち`ho`から始まる要素のみを入れる
new_ary = [hoge for hoge in moji_ary if hoge.startswith(‘ho’)
Django 開発者への道② ~ URLを設計する ~
さて、Djangoの技術記事連載企画「Django 開発者への道」
第二弾がやってきました!**前回の記事**
[Django 開発者への道① ~ Modelsを理解する ~]
(https://qiita.com/kotayanagi/items/3cfadae951c407ac044a)## はじめに
前回記事の第一弾では、
DjangoのModelsとDBの設計方法について学習しました。今回の第二弾では、
URLの設計とルーティングの実装方法について学習していきます。まずは、フォルダ構成を再確認しながら、
Djangoのプロジェクトに存在する2つの `urls.py` ファイルを見ていきます。2つ同じ名前のファイルが存在する意味を、
しっかり理解した上で、
**ルーティングの実装方法**や、、
**ベストプラクティス**などをみていきます。最終的に、ルーティングを設計し、
**動的にルーティングを設計できる**ようになるのがゴールです!## ルーティングって何ですか?
まず、ルーティングとは何でしょうか?
ルーティングとは、
**送られてき
Dockerを使って数分でOpenCV&Python環境を構築して試す
#コード
下記のコマンドを指定して完了。
`/mygit/appdir/`は実行したいpythonファイルが有るフォルダを指定してください。“`shell
docker run -it –rm –name pythoncv -w /mygit/appdir/ -v “$PWD”:/mygit/appdir/ jjanzic/docker-python3-opencv python index.py
“`#各オプション
## -w
作業フォルダ指定##-v
マウントディレクトリ指定“`text
“is not shared from OS X and is not known to Docker.”というエラーが出る場合があります。
こちらの記事を参照して回避してください。
“`【Docker For Mac】Error response from daemon: Mounts deniedの対応
https://qiita.com/nishina555/items/a75ce530d9382aa09511#感想
環境構築で時間が取られなくて最高。
Pythonでテーブル画像を出力、保存する(plotly編)
Pythonで作成したDataframeをパワポに載せる際に、
一度EXCELに出力してからテーブル画像を作成するのは手間です。
綺麗なテーブルをPythonから出力するための情報が少ないなと知ったため作成しました。
matplotlibでもできなくはないですが、plotlyのほうが便利です。### 1. plotlyのインストール
https://qiita.com/ogrew/items/e6ba517cec9fb5161cb6
に詳しく記述されています。### 2. テーブルの作成
“`python:plotly.rb
import pandas as pd
import plotly.graph_objects as go
import numpy as np#データの作成
x1 = np.arange(0,10, 1)
y2 = np.arange(0,20, 2)
z3 = np.arange(0,30, 3)
P_X = [“{}“.format(i) for i in range(10)]#Dataframeの作成
df = pd.Dat
PyTorch による MNISTデータセットの分類モデル作成
# 環境構築
Windows で python3.6 + OpenCV3 + PyTorch による画像データの機械学習を行うための
環境構築設定を以下に記載します。
– OpenCV3: Python で画像データを扱うライブラリ (https://opencv.org)
– PyTorch: Facebook で使われている深層学習フレームワーク (https://pytorch.org)***
### 1. WinPython のインストールと実行
今回は「WinPython64-3.6.7.0Qt5」を使用するため、以下の URL から「WinPython64-3.6.7.0Qt5.exe」をダウンロードしてください。
https://ja.osdn.net/projects/sfnet_winpython/releases/ダウンロードしたら「*C:\study*」配下に配置して実行してください。
(フォルダがない場合は作成)実行が完了したら「*C:\study\WPy-3670*」配下の「Jupyter Lab.exe」を実行して
【Python】ノーヒットノーランを成し遂げたピッチャーの分析をしてみた
#概要
2014年6月18日、Colorado Rockies対Los Angeles Dodgersの試合でドジャースのClayton Kershaw投手は9回を投げ、15奪三振・ノーヒットノーランを達成しました。今回は対戦相手Rockiesの投手と比較し、なぜClayton Kershaw投手はノーヒットノーランを達成できたのか分析します。
#環境
・Python 3.7.5
・windows10
・Jupyter Notebook(Anaconda3)#分析開始(プレイーボール)
####まずはAnaconda PromptでJupyter Notebookを起動
“`
$ jupyter notebook
“`####続いて必要なライブラリをインポート
“`python:baseball_analysi
pythonモジュールがimport済みかどうかを確認する方法
#### 標準ライブラリ sys で確認できる.
チェックのためだけのスクリプトを用意.
module_checker.py“`python
import sys
import subprocessif “subprocess” in sys.modules:
print(“module already imported”)
else:
print(“module not imported”)
“`
“`
$ python module_checker.py
module already imported
“`“`python
import sys
# import subprocessif “subprocess” in sys.modules:
print(“module already imported”)
else:
print(“module not imported”)
“`
“`
$ python module_checker.py
module not imported
“`
Pythonでカレンダーマスタを生成する
#Pythonでカレンダーマスタを生成する
##概要
この時期くらいに、様々なシステムに対してカレンダーマスタなるものを設定している作業を
されている方も多いのでは無かろうか?
GUIでぽちぽち設定するマスタもあれば
csv等で一括取込するケースもあるだろう。
この記事は、後者である場合にて
[jpholiday](https://github.com/Lalcs/jpholiday)さんを用いて、
カレンダーマスタを生成するサンプルである。日付でループする処理や、曜日の日本語名取得、祝日名取得などが参考になると思う
サンプルコードは、休日のみを登録する仕様に対応したものだが
後半ロジックを少しカスタマイズすれば、全日登録して、営業日flagを持った仕様にも対応できると思う##利用環境
>
Python 3.7.2
Visual Studio Code 1.39.1
>##使用するパッケージ
* datetime
* jpholiday##サンプルコード
“`creat_cal.py
#とあるシステムのカレンダーマスタを用意する。
import csv
NucDiffが使いたい -Python2との切り替え
## はじめに
類似菌のゲノム特性の差を知るためにNucDiffを使うことにしたわけだが、Python2で動くNucdiffはPython3にアップデートした自分のPCでは利用できない。実際やってみたが、multiprocessingという過程でエラーが起き、できないことを確認した。そこで、今回はcondaに仮想環境でPython2を入れて、Python3とは別環境で動作できる状態にしようと思う。## やり方
仮想環境とはなんぞやという話については[ここ](https://qiita.com/ozaki_physics/items/985188feb92570e5b82d)に詳しく記載されているので、読めばざっくりわかる。また、Python2を導入する方法については、[このサイト](https://qiita.com/LittleWat/items/166f976cccf30bc63e62)を参考にした。今回の戦略としては、Python2でできた仮想環境にNucDiffを入れることなので、まずはPython2の仮想環境を作る。“`
conda create -n py2 py
sorted
“`py:点数の低い順
ranking = {
‘A’:100,
‘B’:80,
‘C’:95
}print(sorted(ranking, key=ranking.get))
“`“`:実行結果
[‘B’, ‘C’, ‘A’]
“`“`py:点数の高い順
ranking = {
‘A’:100,
‘B’:80,
‘C’:95
}print(sorted(ranking, key=ranking.get, reverse=True))
“`“`:実行結果
[‘A’, ‘C’, ‘B’]
“`
[Python3 入門 14日目]7章 文字列(7.1.1.1〜7.1.1.4)
###7.1.1.2 UTF-8によるエンコード、デコード
外部の世界との間でデータをやり取りするときには良い¥かの二つの手段が必要になる。
– 文字列をバイト列にエンコードする手段
– バイト列を文字列にデコードする手段
– 動的エンコード方式のUTF-8はPython、Linux、HTMLでは標準的なエンコーディングである。
– webページなどから他のソースをコピー&ペーストでPython文字列を作るときは、ソースがUTF-8形式でエンコードされていることを確かめなければならない。(例外が発生する。)###7.1.1.3 エンコーディング(記号化)
– 情報の送信側が、伝えたいメッセージ内容を受信側に届く記号の形に変換すること。
– 文字列をエンコードしてバイトにする。
– 文字列のencode()関数の第一引数はエンコーディング名。
– **UTF-8**は**8ビット可変長エンコーディング**。“`py
#Unicode文字列”\u2603″を代入
>>> snowman=”\u2603″
>>> len(snowman)
1#このUnicode文字
Anaconda(python 3.7)でspyderが起動できない問題を解決する
#はじめに
データサイエンスの講座に参加した時にspyderを使う機会があったのだが
受講者の中でなぜか自分だけspyderを起動できなかった。
一応解決したのでメモ#症状
spyderを起動時に
**カーネルを開始中にエラーが発生しました**
と表示され、起動できなかった。#環境
OS:Windows 10
[Anaconda python 3.7](https://www.anaconda.com/distribution/)(2020/1/22時点の最新版)#解決策
1. 一度Spyderを終了し、**管理者として**Anaconda promptを実行
2. `conda update –all`を実行
3. 色々updateされるので、updateが完了されたら終了
4. spyderを起動すると正常に立ち上がるはず管理者として実行するのがポイント
そのまま実行するとupdateが途中で失敗してしまう。#最後に
実はspyderの[GitHub](https://github.com/spyder-ide/spyder/issues/10400)に解決策