Python3関連のことを調べてみた2020年01月25日

Python3関連のことを調べてみた2020年01月25日

カジノにおけるモンテカルロ法って本当に勝てるの?

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.5

Because 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] += 1

    print(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] += 1

    print(d)
    “`

    “`:2の実行結果
    {‘a’: 1, ‘e’: 2, ‘f’: 2, ‘q’: 3, ‘w’: 2, ‘d’: 1}
    “`

    標準ライブラリからdefaultdictを読み込んで書くと、

    “`py:3
    from collections import defaultdict

    s = ‘raegiowejgohg’
    d = defaultdict(int)

    for c in s:
    d[c] += 1

    print(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 subprocess

    if “subprocess” in sys.modules:
    print(“module already imported”)
    else:
    print(“module not imported”)
    “`
    “`
    $ python module_checker.py
    module already imported
    “`

    “`python
    import sys
    # import subprocess

    if “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)に解決策

    元記事を表示

    OTHERカテゴリの最新記事