- 1. 超初心者のための『勢いで学ぶPython』
- 2. PythonとJavaScriptとPerlのif文の比較
- 3. 【強化学習】MuZeroを完成させたStochasticMuZeroを解説・実装
- 4. 【Python】input() で入力後の改行を防ぐ方法
- 5. 【Python+Flask】しりとりAPIを作ろう #1 ~データ作成編
- 6. Pythonを用いた株式リスクの計算
- 7. LightGBM の木を可視化するとき日本語フォントにする
- 8. TA-Libのローソク足パターン認識を使う
- 9. 【データ分析】なぜ私はポケモンバトルに勝てないのか
- 10. pyenv + venv を使ったpythonのバージョン管理【windows&ubuntu】
- 11. シリーズ型.map()とシリーズ型.replace()の違い
- 12. Python(pyautogui)でデスクトップアプリ操作を自動化!
- 13. DevcontainerでPython環境構築
- 14. データクレンジングをしてみよう! 欠損値を削除する方法
- 15. 仮想通貨の現在価格をLineに通知したい
- 16. flask run が上手くできない場合の対処法
- 17. Python小技集 – #1 リスト/タプルから重複要素を削除する方法
- 18. トレンド、周期性がある時系列データの予測の仕組みを解説【Python statsmodelsを使った検証付き】
- 19. 【Python3.9 / FastAPI】アップロードされた画像容量を取得して、バリデーションをかける方法
- 20. pythonで適当なクラスタを持つサンプルデータを作る
超初心者のための『勢いで学ぶPython』
# 超初心者のための『勢いで学ぶPython』
Google ColabでPythonの教材を作成しています。
もう少し内容を充実させて行きたいのですが、一旦放出します〜
今後の展望としては、データサイエンス系の応用編を作ろうか、セキュリティ系の内容にしようかで迷っています☺
(というかちゃんとcolabの共有できてんのかな)## 座学編
https://colab.research.google.com/drive/1T0ShC1owgOFLxV0QbkbIPdrFYkEg-x5f?usp=sharing## 演習編
https://colab.research.google.com/drive/1oIxrU5DK4IAfAyHtKKfoTgbiXjm3qIoa?usp=sharing
PythonとJavaScriptとPerlのif文の比較
# Pythonのif文
https://qiita.com/Morio/items/1e06e7ac768758af5ffe
# JavaScriptのif文
https://qiita.com/taiju_suzuki/items/e2bf11fcf1645623235f
# Perlのif文
“`
# if文
if ($condition1) {
# …
}
elsif ($condition2) {}
else {}
# unless文
unless ($condition) {}
“`(他のプログラミング言語の編集リクエストも受け付けています。どんなプログラミング言語でもOKです。)
【強化学習】MuZeroを完成させたStochasticMuZeroを解説・実装
この記事は自作している強化学習フレームワーク [SimpleDistributedRL](https://qiita.com/pocokhc/items/a2f1ba993c79fdbd4b4d) の解説記事です。
前:[MuZero](https://qiita.com/pocokhc/items/190779b4ff2e51cbeceb)
# Stochastic MuZero
Stochasticはストキャスティック(stəkǽstik)と読み、”確率論的な”という意味です。
MuZeroは次の状態が決定的でないと学習できないという問題がありました。
マルコフ決定過程(MDP)の環境では次の状態が確率論的に決まる環境を想定しているため、適用できる環境が限定的です。
Stochastic MuZero は次の状態を確率的に予測できるようにしたMuZeroとなります。参考
・[Planning in Stochastic Environments with a Learned Model (論文)](https://openreview.net/forum?id=X6D
【Python】input() で入力後の改行を防ぐ方法
思いついたのをメモ。
“`python
a = input(“a : “)
b = input(” / b : “)
“`
これを実行すると、通常だと
“`
a : 1
/ b : 2“`
となるが、これを
“`
a : 1 / b : 2
“`
というようにしたい場合。
これでできる。
“`python
def input_mod(__prompt: object = …, end: str = “\n”) -> str:
result = input(str(__prompt) + “\0337″)
print(f”\0338\033[{len(result)}C”, end=end)
return result
“`
ただ、カーソルの位置を動かしているだけなので、スクロールが発生するほどの長文には使えない。
【Python+Flask】しりとりAPIを作ろう #1 ~データ作成編
# はじめに
今回よりPythonでしりとりAPIを作っていきます。この記事は第1回目です。
今回はしりとりのデータを作成していきます。
# 環境
今回はデータ収集(ほぼテキストマイニング)を行うので google colab を用います。# テキストコーパス
京都大学のテキストコーパスを使います。
ここに保存されているテキスト達をPythonで読み込んで前処理していきます。https://github.com/ku-nlp/KyotoCorpus
# 実際にやってみよう
手順1つ1つでgoogle colabのセル1つです。
## 手順1 git clone する
google colabなので先頭に!をつけることを忘れずに!
“`shell
# git cloneする
!git clone https://github.com/ku-nlp/KyotoCorpus
“`## 手順2 ファイルのパスを取得する
KyotoCorpus/dat/num/ に保存されている numファイルのパスを取得します。“`python
# 先のKyotoC
Pythonを用いた株式リスクの計算
### ■初めに
この記事では投資におけるリスクについて解説を行っています。また解説に際してはyahoo financeのデータをpythonのpandas_datareaderというライブラリを用いて実装と共に解説を行っています。
ただしこの記事はどのように結果を得るのかという観点で作成していますので、得られた結果からどの銘柄に投資すればよいのかという観点の議論は行っていませんのでご注意ください。実装したものに関しては下記のGitHubレポジトリにアップしてありますので、用いたい場合はクローンしてお使いください。
[https://github.com/YusukeOhnishi/finance_introduction](https://github.com/YusukeOhnishi/finance_introduction)### ■株式のリスク
#### ▶考え方
投資家にとって、リスクを取りすぎることは好まれることではありません。そのため、このリスクを定量的に表すことは重要な課題であるといえます。
例として、下記のような株式が得られる場合を考えます。– 1年目に
LightGBM の木を可視化するとき日本語フォントにする
[lightgbm.create_tree_digraph](https://lightgbm.readthedocs.io/en/latest/pythonapi/lightgbm.create_tree_digraph.html) に以下のようにパラメータを渡すと好きなフォントに変更できます。
※ matplotlib でその日本語フォントを利用できるようにしてあることが前提です。
※ 環境設定として日本語フォントを設定しておく方法もあると思います。“`python
import warnings
warnings.simplefilter(‘ignore’, UserWarning)
%matplotlib inline
import matplotlib.pyplot as plt
plt.rcParams[‘figure.figsize’] = (10, 6)
import numpy as np
import pandas as pd
import lightgbm as lgb
from sklearn import datasets
from sklearn.
TA-Libのローソク足パターン認識を使う
Pythonの[TA-Lib](https://github.com/mrjbq7/ta-lib)の使用方法をウェブで検索すると、移動平均やボリンジャーバンドなどのOverlap Studiesの関数の記事が目立ちますが、Pattern Recognitionというカテゴリーもあります。
Pattern Recognitionはローソク足の特別なパターンを検出する関数群で、はらみ足や三羽烏、数多くのパターンを見つけてくれます。
[この記事](https://qiita.com/Miku_F/items/66f754e8cf285c9e3702)にたくさんの関数の概要と使い方の紹介がありますが、私も[過去の記事](https://qiita.com/TKfumi/items/ffb617898211a794bf9e)で説明した方法でユーロドルの値動きから、いくつかのパターンを見つけていきたいと思います。
## はらみ線
まずははらみ線です。
基本的なコードは以下の通りで、以降はtalibの関数を色々変えていきたいと思います。“`python
import talib
fro
【データ分析】なぜ私はポケモンバトルに勝てないのか
# はじめに
「ポケットモンスター スカーレット・バイオレット」楽しみですね!
今回はオープンワールドで友達と一緒に冒険、それも各々の順番でジムリーダー攻略できたり夢が広がります。赤と紫というテーマも原点回帰のようで好きです。私は赤外線と紫外線関係の何かがあるのかなと妄想してます。
そんなわけで発売を楽しみにしながら剣盾で遊んでいるのですが、思い付きで[紫色](https://yakkun.com/swsh/zukan/search/?color=6)統一のパーティを組みました。ムゲンダイナ、カプ・レヒレ、ドラピオン、ストリンダー、オンバーン、コジョンドです。
この趣味メンバーでもなるべく勝てるように作戦を練ったものの中々勝てなかったので、対戦結果を分析して、どうすれば勝ちに繋がるかの知見に昇華しようと思います。# 1. 先行研究を探す
もしポケモン対戦の分析が既にある場合、そういうwebサイトや分析ツールを使えば自分で作る必要はなくなります。あるいは既存のサービスで出来ないことがあったとしても、参考にしない手はありません。ポケモン対戦の分析のこれまでを探した結果、少し古いも
pyenv + venv を使ったpythonのバージョン管理【windows&ubuntu】
# 概要
python初心者がバージョン管理をする際に参考になればと思います.—> [pyenvについて](https://anamorphosis.net/tech/pyenv%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6python%E3%81%AE%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E7%AE%A1%E7%90%86%E3%82%92%E8%A1%8C%E3%81%86/#:~:text=pyenv%E3%81%A8%E3%81%AF%E3%80%81python%E3%81%AE,%E3%81%8C%E7%B0%A1%E5%8D%98%E3%81%AB%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%99%E3%80%82)
# 【実行環境】
① [Windows10 & 11](#1-実行環境)
② [ubuntu 20.04 (& 18.04)](#2-実行環境)## 1. 実行環境
|OS|
|:—:|
|Windows10 & 11|###
シリーズ型.map()とシリーズ型.replace()の違い
# カラム「fruits」の値を以下の規則性に従って変更する
# 『grape -> 0』『orange -> 1』『banana -> 2』『melon -> 3』fruits_dict = {
‘grape’: 0,
‘orange’: 1,
‘banana’: 2,
‘melon’: 3
}
# mapでもreplaceでもどちらでもOK
:o:train_df[‘fruits’] = train_df[‘fruits’].replace(fruits_dict)
:o:train_df[‘fruits’] = train_df[‘fruits’].map(fruits_dict)print(train_df[‘fruits’].value_counts())
0 500
1 200
2 300
3 400
Name: weather, dtype: int64
# 例外 『grape -> 0』のみにする
fruits_dict = {
‘grape’: 0
}
:wh
Python(pyautogui)でデスクトップアプリ操作を自動化!
# はじめに
Pythonプログラムで即業務に役立つサンプルプログラムとして、pyautoguiを使ってデスクトップアプリの操作を自動化しましたので、共有します。# 動作環境
Visual Studio Code
Python3.9.1
# 各種利用ライブラリー
PyAutoGUI 0.9.53
pyperclip 1.8.2
pandas 1.2.3# 処理概要:
受注データ入力などの際、既にエクセルデータなどが有るにも関わらず、社内の受注管理システムにエクセルのアップロード機能などがなく、手入力しているケースは無いでしょうか?
そんな時、pyautoguiを使って、マウスやキーボード操作を自動化することで、データ入力作業が自動化出来ます。
いわゆるRPA(Robotics Process Automation)がPythonで無料で構築出来ます。![Pyautoguiイメージ.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1361368/e286fb1f-70b7-7b61-0574-3
DevcontainerでPython環境構築
# 前提
このエントリーは、VSCodeを利用してPython関連の開発をする際に、Devcontainerを利用する方法を記します。
## 事前の準備
以下の準備は終わっているものとします。
– VSCodeのインストール
– VSCodeの日本語化
– docker 及び docker-composeのインストール## 利用環境
私の環境はLinux(Ubuntu 20.04)とmacOS(12.5)を利用しています。
## 拡張機能
– VSCodeの拡張機能 `Remote – Contaiers` (Microsoft社製) をインストール
# 開発環境ごとの設定
– VSCode左下の `リモートウィンドウを開きます` をクリック
– VSCode上部のコマンドパレットの選択肢から `Try a Development Sample…` をクリック
– 次の選択肢で `Python` を選択## ファイル構成
– .devcontainer フォルダが作成
– devcontainer.json と Dockerfile ファイルが作成#
データクレンジングをしてみよう! 欠損値を削除する方法
## 1.データクレンジングとは
データクレンジングとは、破損したデータ、不正確なデータ、無関係のデータを特定して解決する手法を指します。 データ処理におけるこの重要な段階は、データスクラビングと呼ばれます。## 2.データクレンジングの必要性
1番でも説明した通り、無関係のデータなどがあった場合、正しい予測結果を得られなくなることや、回帰分析においては、強い相関がみられる2変数のデータなどがある場合、※多重共線性などが発生してしまったりと、とても都合がよろしくありません。
分析業務においてもデータクレンジングはほどんどの業務を占めており、実際企業が保有しているデータは汚れているデータがほとんどなどでとても欠かせない作業になります。### 3.実際にデータを見てみよう
“`Python
#必要なライブラリのインストール
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
sns.set()
%matplotlib inline
“`
“`
仮想通貨の現在価格をLineに通知したい
# はじめに
特定の仮想通貨の現在価格を定期的に知りたいなと思い色々調べていたら
[Line Notify](https://notify-bot.line.me/ja/) と [CoinMarketCap](https://coinmarketcap.com/api/) を使えばできることが判明!!
しかもどちらも無料で使えるという。。。(リクエスト回数?とか縛りはありそう)
~~これで億万長者…~~# 目次
1. [事前準備](#事前準備)
2. [実装](#実装)
3. [参考](#参考)# 事前準備
[Line Notify](https://notify-bot.line.me/ja/) と [CoinMarketCap](https://coinmarketcap.com/api/) へ登録しAPIキーを取得する#### Line Notifyの登録
すでに色々な方が記載しているのでこちらは割愛。。。
>参考:[PythonでLINE Notifyへ通知を送る
](https://qiita.com/akeome/items/e1e0fecf
flask run が上手くできない場合の対処法
Python Flaskにてflask runでプレビュー画面を表示しようとした際、一部ターミナルでは機能しない場合があります。
ちなみに自分の場合はpowershellにて問題が起こりました。(例)Dcument
flask run
(結果)
+ CategoryInfo : ObjectNotFound: (flask:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException(原因)
恐らくPathが通っていないことが原因でコマンドとして認識されていないと思われます。(解決)
1,Pathを通す。
システム環境変数の設定にて設定しなおしてください。2,pythonコマンドを使う。
pythonのversionを指定して、そこからflask runを割り当てます。(書き方)
python3 -m flask run
Python小技集 – #1 リスト/タプルから重複要素を削除する方法
こんにちは!beatbox4108です。
今日は**Pythonでリスト/タプルから重複要素を削除する方法**について説明していきます。
方法は2種類あります。
* setを使う方法
* dictを使う方法
* dict+zip (応用)# setを使う場合
Pythonには重複しない値の集合である`set`があります。
ふつうはこれを使うのが良いでしょう。
“`python3
l=[1,1,2,3,3,3,5,6,6,9,0] # サンプル# setを使う場合
a=list(set(l))
print(“setを使う場合:”,a)
“`“`
setを使う場合: [0, 1, 2, 3, 5, 6, 9]
“`アンパックを使えばもっと簡潔に書けます。
“`python3
l=[1,1,2,3,3,3,5,6,6,9,0] # サンプル# setを使う場合(別解)
b=[*{*l}]
print(“setを使う場合 (別解):”,b)
“`
“`
setを使う場合 (別解): [0, 1, 2, 3, 5, 6, 9]
“`:::note
トレンド、周期性がある時系列データの予測の仕組みを解説【Python statsmodelsを使った検証付き】
# はじめに
統計的時系列モデルを使うと下図のような予測が可能です。これが、どういう仕組みで行われるかを明らかにします。
![order=(1,1,0),seasonal_order=(0,1,0,20).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/571330/2d42758f-9559-02c8-9cff-95f0dd79f3e6.png)
具体的には、
1. Pythonの[statsmodelsというライブラリのARIMA](https://www.statsmodels.org/devel/generated/statsmodels.tsa.arima.model.ARIMA.html#statsmodels.tsa.arima.model.ARIMA)を使用して、上図のpredictを求める機能を実装
2. Pythonでライブラリを使わずに、同様の機能を実装を行い、1.と2.の結果が一致するかを確かめます。
ただ予測をするだけなら1.で十分ですが、2.と合わせることで、
【Python3.9 / FastAPI】アップロードされた画像容量を取得して、バリデーションをかける方法
# 環境
* fastapi
* python3.9# 全体のソース
“`sample.py
from fastapi import UploadFile
from pydantic import BaseModel, validator
from sample_app.domain.models.valueobjects.exceptions import InvalidRequestExceptionIMG_MAX_SIZE = 2 * 1024 * 1024
class UploadImage(BaseModel):
upload_image: UploadFile@validator(“upload_image”)
def validate_upload_image(cls, v: UploadFile) -> UploadFile:
v.file.seek(0, 2)
img_size = v.file.tell()
if img_size > IMG_MAX_SIZE:
pythonで適当なクラスタを持つサンプルデータを作る
# pythonで適当なクラスタを持つサンプルデータを作る
## 1次元の適当なサンプルを作る
こんな感じの分布のサンプルを作ります
![plot1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104691/21c7bece-a753-ff73-a1dc-332aaa71b294.png)
ソースです
“` python
import matplotlib.pyplot as plt
import random
import sysdef createDistribution(counter):
samples = []
for cnt in counter:
sample = []
for i in range(cnt):
sample.append(random.gauss(0,1))
samples.append(sample)y = []
for i in ra