- 1. 一つのレコードから複数の列を新たに追加
- 2. seleniumでreadonlyを解除する
- 3. VertexAI Pipelines 入門編その2 パイプラインを理解する
- 4. VertexAI Pipelines 入門編その1 コンポーネントを理解する
- 5. VertexAI Pipelines 入門編その0 Hello World
- 6. Pythonの自動インストール手順(Windows)
- 7. 画像スクランブル技術をPythonで実装
- 8. 【備忘録】Pythonにおいてヘッドレスモードを用いたスクレイピング時に”Message: session not created: This version of ChromeDriver only supports Chrome version ※※ chromedriver-binary”エラーが発生した場合の対処法
- 9. AtCoder B – Power Socket 解説
- 10. Django 初期設定
- 11. M1MacのRosettaとARM環境にpyenv + pipenvの環境構築を行う
- 12. OCI上のDjangoアプリをNginx+uWSGI+SSL (Let’s Encrypt)で公開
- 13. Django Gitアップ前のシークレット情報設定
- 14. AtCoder C – Back and Forth 解法メモ
- 15. 都道府県別「直近1週間の人口10万人あたりの感染者数」をクラスター分析
- 16. 【Python】東証上場銘柄の株価データを取得する(その2)
- 17. Colaboratory にて for 文の進捗を可視化する
- 18. JSONと辞書型(ディクショナリー)の違い
- 19. Python×Sportify APIで国ごとのトレンド傾向をグラフ化する
- 20. pythonで作る数当てゲーム
一つのレコードから複数の列を新たに追加
#概要#
データの処理の際にレコード内に4つの情報が入っていてそれを取り出す必要があったので備忘録として記録しておきます。(前回はJSONフォーマットでしたが今回は半角スペース区切りでデータが入力されていることが前提)
| id | Jan | Feb|
|:———–|————:|:————:|
| 1 | 1位 大阪府 12,345 67% | 1位 大阪府 11,111 22%|
| 2 | 2位 京都府 98,765 43%| 2位 京都府 22,222 33% |こんな感じで空白区切りでレコード内にデータがいくつか入っているものを
| id | 1月順位| 都道府県|数| 割合|2月順位|都道府県|数|割合|
|:———–|————|:————:|:————:|:————:|:————:|:————:|:————:|:————:|
| 1 | 1位 |大阪府
seleniumでreadonlyを解除する
# seleniumでreadonlyを解除する
seleniumでの操作中に操作したいテキストボックスがDatePickerかつreadonlyで通常の操作が
できなかったため、本記事のコードを実行した。“`Python:コード
from selenium import webdriverdriver = webdriver.Chrome(“./chromedriver”)
…param = “document.getElementsByClassName(‘readonly解除場所’)[1].removeAttribute(‘readonly’);”
driver.execute_script(param)
“`
VertexAI Pipelines 入門編その2 パイプラインを理解する
# はじめに
本記事ではVertexAI Pipelinesで用いる基本的なパイプラインの書き方について紹介します。
そもそものVeretexAI Pipelinesについての説明や、コンポーネントの作成から実行までの流れ、コンポーネントの紹介については、以下の記事を先にお読みください。
本記事は以下の記事を前提にお話しますので、VeretexAI Pipelinesが全く初めての方には強く推奨します。[VertexAI Pipelines 入門編その0 Hello World](https://qiita.com/str_kunimasa/items/56a30c3726006164ac58)
[VertexAI Pipelines 入門編その1 コンポーネントを理解する](https://qiita.com/str_kunimasa/items/15682d2beb98e95431f9)# 注意事項
記載されているコードは、2021年11月現在、以下のライブラリでのバージョンで実行が確認されたものです。
`kfp==1.8.9`
`google-cloud-aiplatf
VertexAI Pipelines 入門編その1 コンポーネントを理解する
# はじめに
本記事ではVertexAI Pipelinesで用いる基本的なコンポーネントの書き方について紹介します。
そもそものVeretexAI Pipelinesについての説明や、コンポーネントの作成から実行までの流れについては、以下の記事を先にお読みください。
本記事は以下の記事を前提にお話しますので、VeretexAI Pipelinesが全く初めての方には強く推奨します。[VertexAI Pipelines 入門編その0 Hello World](https://qiita.com/str_kunimasa/items/56a30c3726006164ac58)
# 注意事項
記載されているコードは、2021年11月現在、以下のライブラリでのバージョンで実行が確認されたものです。
`kfp==1.8.9`
`google-cloud-aiplatform==1.7.1`バージョンの互換性によってはエラーとなったり想定外の挙動となる可能性があります。
# 様々なコンポーネントの書き方
先述の記事で紹介したものは、シンプルなコンポーネントとパイプラインでした。
VertexAI Pipelines 入門編その0 Hello World
# はじめに
機械学習をノーコード・ローコードで実装できるAutoMLサービスが台頭してからしばらく経ちますが、データの前処理や予測後の補正、モデルパフォーマンスの定点観測、再学習などの機械学習システムの運用(MLOps)は、昨今のAutoMLサービスだけでは不十分な点も多いと思います。また、AutoMLを使わずにPythonで独自の機械学習モデルの開発を行ってきた方にとって、自分の書いたコードをシステム上で安定稼働させるのはなかなかにしんどいのではないでしょうか。これは、データサイエンス(実験と検証)フェーズからMLエンジニアリング(システム構築と運用)フェーズに移行する際の大きなハードルとなっているかと思います。
そんな課題を解決してくれるのが[VertexAI Pipelines](https://cloud.google.com/vertex-ai/docs/pipelines)です。
ざっくりいうと[Kubeflow](https://www.kubeflow.org/)がサーバレス環境で実行できるサービスです。Google Cloudのサービスである[VeretexA
Pythonの自動インストール手順(Windows)
## 概要
Windows環境へのPythonインストールを行う場合は主に下記の4つから選ぶ場合が多いと思う。1. 通常のインストーラー
2. Microsoft ストアパッケージ
3. nuget.org パッケージ
4. 埋め込み可能なパッケージ今回は1の通常インストーラーのインストール作業を自動化したいので調べたら公式で
起動オプションにより色々できるとのことだったので家訓してみた話## 手順
### インストーラーの取得
https://www.python.org/downloads/
公式サイトから入れたいバージョンのインストーラーを取得
今回は「python-3.10.0-amd64.exe」### インストールの設定内容ファイル「unattend.xml」の記述
unattend.xmlは**インストーラーと同じ階層に配置**
このファイルの記述が間違っているとexeがちゃんと動かずに無音で終了する
設定内容は公式ページにまとまっているhttps://docs.python.org/ja/3/using/windows.html#installin
画像スクランブル技術をPythonで実装
#下準備
以下のライブラリを使用する“`
import cv2
import random
“`まずはお目当ての画像を2値化しよう.画像のパスをpathとして
“`
#原本の画像読み込み
img = cv2.imread(“path”)
#画像の白黒化
img_gray = cv2.imread(“path”, 0)
#画像の2値化
threshold = 160
ret, img_2 = cv2.threshold(img_gray, threshold, 255, cv2.THRESH_BINARY)
“`ここでしきい値は160としたが各自調整して欲しい.色の分散を参照して自動調整する技術も存在する.
#暗号化
ここからnumpyを使う“`
import numpy as npheight = 440
width = 1080
img_onlyblack = np.zeros((height, width, 1))“`
画像のサイズは縦440,横1080としたが,これも各自処理したい画像のサイズをそれぞれ2倍すればよい.
まず黒いだけの画
【備忘録】Pythonにおいてヘッドレスモードを用いたスクレイピング時に”Message: session not created: This version of ChromeDriver only supports Chrome version ※※ chromedriver-binary”エラーが発生した場合の対処法
# 概要
Pythonにおいてヘッドレスモードを用いたスクレイピング時に,下記のエラーメッセージが表示されたので備忘録として対処法を記載する.
参考にしたサイト: [ChromeDriver only supports Chrome version ※※の対処方法とseleniumとの組み合わせ](https://taku-info.com/python-chromedriver-only-supports-chrome-vestion/)
“`bash
Message: session not created: This version of ChromeDriver only supports Chrome version 86 chromedriver-binary
“`**Google Chromeのバージョンを確認**
詳細は下記リンクを参照されたし.
[Google Chromeのバージョン確認](https://qiita.com/rimorimo/items/3e60faca48505993fd0d#google-chrome%E3%81%AE%E3%8
AtCoder B – Power Socket 解説
ソケットの数はタップ×数で求められる。
また、ソケットはタップを1つ使うごとに1つ消費される。
ソケット数がbを上回った時のタップの数が答えになる。上記を理解したがコードに落としこめず。
“`python
a,b=map(int,input().split())
for i in range(100):
socket=i*a-(i-1)
if socket>=b:
print(i)
break
“`参考
https://atcoder.jp/contests/abc139/submissions/27460318競プロ系の記事はgithubに移行予定。
Django 初期設定
#はじめに
djangoのプロジェクトを作成するたびにドキュメント読みに行っている気がしたので、
知識の定着も兼ねて記事を書きます。Pythonのバージョン:3.8.2
djangoのバージョン:3.2.9
gitのバージョン:2.30.2#目次
1.git clone
2.startproject
3.startapp
4.settingsの情報修正
5.シークレット情報の設定##git clone
gitを利用していないならスキップdjangoのアプリを作成するディレクトリに移動
gitにてリポジトリを作成してURLをコピー
git cloneしていきましょう。“`
git clone https://github.com/repository.git
“`#startproject
djangoのアプリを作成するディレクトリに移動してコマンドを実行“`python
django-admin startproject projectname .
“`
ディレクトリの状態
>.
├── projectname
│ ├── __init__.py
M1MacのRosettaとARM環境にpyenv + pipenvの環境構築を行う
## はじめに
M1macパソコンが出始めて1年とちょっと?くらい経ちまして、待望の14inchと8GB以上のメモリが付けられる新型macbookproが発売されました。僕は今までintel製のmacbookを持っていたのですが、電池消費量や性能などの観点から買い替えを決意。一ヶ月経ってパソコンが届いたのですが、待っていたのは周りの人たちがたちが苦しんでいたM1macのpython環境構築でした。さて、このM1macパソコン。pyenvが対応していなかったことからcondaを選択する人も多かったとお思います。しかし、調べてみるとpyenvって3.9系以上は対応しているのですね。でも3.9系ではなくそれより前のバージョンを使用したい人も多いはずです。機械学習を目的としてる人は特に。
この記事はたくさんあるサイトを確認して、それをまとめたものになります。## 注意
ARM環境ではPythonは **3.9系以上** を入れることができます。
Rosetta環境では**3.9系未満**も入れることができます。
ARM環境で3.9系未満を入れる記事ではありません。ご了承くださいこの
OCI上のDjangoアプリをNginx+uWSGI+SSL (Let’s Encrypt)で公開
# はじめに
Django + Nginx + uWSGI + SSLのネタは三番煎じかもしれませんが、実際にトライしてみるとつまずく箇所がいくつかあったので、その備忘録として本記事を書きました(なので、特に問題の起きなかったOCIとDjangoのセットアップの説明は割愛しています)。今回使用するサーバー(Oracle Cloud Infrastructure)、ドメイン、証明書の発行はすべて無料です。
# 環境
環境は[Oracle Cloud Infrastructure(OCI)の仮想マシン](https://www.oracle.com/jp/cloud/compute/virtual-machines/)の無料枠で作成しました。イメージはOracle-Linux-7.9-2021.10.20-0、シェイプはVM.Standard.E2.1.Microです。“`
$ cat /etc/oracle-release
Oracle Linux Server release 7.9
“`# システムの構成
![system_overview.png](https:
Django Gitアップ前のシークレット情報設定
#はじめに
Gitへアップする前のシークレット情報の設定方法を手順化しました。Pythonのバージョン:3.8.2
djangoのバージョン:3.2.9
gitのバージョン:2.30.2#目次
1.django-environのインストール
2.「.env」の作成
3.settings.pyの修正
4.「.gitignore」の確認##インストール
django-environをインストールします。“`
pip install django-environ
“`##フォルダとファイルの作成
BASE_DIR(manage.pyがあるディレクトリ)にsecretsフォルダを作成します。
作成後、secretsフォルダ内に「.env」を作成します。
.envにproject/settings.pyの下記の情報を記載します。・SECRET_KEY
・DEBUG
・ALLOWED_HOSTS“`python:secrets/.env
SECRET_KEY=secret_key #ここにsecret_keyを貼り付ける ※ダブルクォーテーションは取り除く
DEB
AtCoder C – Back and Forth 解法メモ
2回目の行きの際にはL、Dは必ず一回発生し、U、Rは1回目よりも値が差分+1大きくなる。
同様に2回目帰りの際にはR,Uが必ず一回発生し、D、Rは1回目よりも値が差分+1大きくなる。上記には気がつけたが、コーディングに落とし込む能力がなかった。
“`python
sx,sy,tx,ty = list(map(int, input().split()))
x = tx – sx # x座標間の差分を出す
y = ty – sy # y座標間の差分を出す
ans = “R”*x + “U”*y + “L”*x + “D”*y # 1回目の行きと帰り
ans += “D” + “R”*(x+1) + “U”*(y+1) + “L” + “U” + “L”*(x+1) + “D”*(y+1) + “R” # 2回目の行きと帰り
print(ans)“`
参考
https://atcoder.jp/contests/abc051/submissions/27297543
都道府県別「直近1週間の人口10万人あたりの感染者数」をクラスター分析
# ◎概要
教師なし機械学習のクラスター分析を用いて、都道府県ごとの「直近1週間の人口10万人あたりの感染者数」を5つのクラスターに分類して(期間ごと)、その分類結果を考察する。# ◎目的
教師なし機械学習の勉強のため。
ちょっとしたデータをすぐにクラスター分析できるようになっておきたい。## ○ Python実行環境
– Colaboratory—
## ○ ソースコード### GoogleDriveをmount
> 画像保存先をGoogleDriveに“`python
from google.colab import drive
drive.mount(‘/content/drive’)
%cd /content/drive/My Drive/Colab Notebooks
“`### Package Install
> 必要なパッケージをインストール“`
!pip install japanize_matplotlib
“`
“`python
import pandas as pd
import math
import numpy as
【Python】東証上場銘柄の株価データを取得する(その2)
## はじめに
前回の[【Python】東証上場銘柄の株価データを取得する(その1)](https://qiita.com/tnozoo/items/b7d95867a3e4aa421731)では
[日本取引所グループ](https://www.jpx.co.jp/markets/statistics-equities/misc/01.html)にある東証上場銘柄の一覧ファイルを Pandas を使って銘柄抽出してみた今回は,pandas_datareaderを使って,直近の株価データを取得してみる
## 自分銘柄
トヨタ,日産,ホンダ,ANA,JALを保有しているとする
下図のような Excel ファイルを my.xlsx という名前で用意した
列は,コードと銘柄名だ(日本取引所グループにある東証上場銘柄の一覧ファイルのそれと合わせた)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/385512/ca9b4323-fabf-cbb3-ecce-717176ef5c00.p
Colaboratory にて for 文の進捗を可視化する
調べれば無限に出てくるよくある進捗の可視化方法についてメモする。
まずは以下のコードの通りに `tqdm` を import しておく。
“`python
from tqdm.notebook import tqdm
“`あとは for 文のところに tqdm をかませると、進捗が可視化できる。
`time` は特に処理がないけれど処理時間の代わりに待機時間として経過してプログレスバーが進んでいく様子を観察するために使った。“`python
import timefor i in tqdm(range(100)):
time.sleep(0.1)
“`
JSONと辞書型(ディクショナリー)の違い
# はじめに
こんにちは、よわよわエンジニアです。
本稿では、超よわよわだった当時の自分に向けて、JSONと辞書型の違いを説明します。
あくまでも “違い” にフォーカスして解説しますので、JSONと辞書型それぞれの詳細な説明は他の記事をご参照ください。ちなみに、Pythonでは「辞書型」と言いますが、他の言語では「オブジェクト型」や「連想配列」、「ハッシュテーブル」と言ったりしますね。
ここからは「辞書型」と呼称を統一し、Pythonのコードベースで説明していきます。# JSONと辞書型の違いが理解できなかった
プログラミングを学びたてだった当時、私は「辞書型」→「JSON」の順でこれらを知ることになりますが、長らくその違いを理解することができませんでした。Pythonを学び始めてまずは「辞書型」を知り、以下のようなコードで「ふんふん…こんな感じね」と理解します。
“`python:python
d = {“name”: “Taro”, “age”: 12, “country”: “Japan”}
print(d)
# {‘name’: ‘Taro’, ‘age
Python×Sportify APIで国ごとのトレンド傾向をグラフ化する
#はじめに
今回はPythonとSportify APIを使って下記のようなグラフを生成したいと思います。
![スクリーンショット 2021-11-23 17.28.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/566407/e18bbaef-25a8-861c-cf09-2a899a2a3f9e.png)
![スクリーンショット 2021-11-23 17.28.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/566407/c7da1180-187d-ac56-ef58-1e730a4b60bf.png)
![スクリーンショット 2021-11-23 17.28.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/566407/c5aaed87-bae6-7245-5c4b-ac3e19bb8589.png)
自分の
pythonで作る数当てゲーム
1~100のランダムな数字を当てるゲームです。
“`python:kazuate.py
import random
count = 1
answer = random.randint(1,100)while True:
number = input(‘1~100の間で数字を入力してください >> ‘)
if number.isdecimal():
number = int(number)
else:
print(‘間違った入力がされました。\n’
‘もう一度数字の入力をお願いします。’)
continueif answer == number:
print(f’正解です。正解は{answer}。’)
print(f'{count}回目のチャレンジで正解しました。’)
break
elif answer > number:
print(f’入力された数字は{number}。それより大きい数です。’