- 1. BeautifulSoupでドメイン内リンクを列挙する。
- 2. Google Doorbellで自分を認識したら自動でSesame3を解錠させてみた(Python初挑戦)
- 3. SeleniumでWebサイトをPDFとして保存するとき、デフォルトの保存先を変更する方法(chromedirver)(Python)
- 4. python-pptxの図形一覧
- 5. Tkinterでオブジェクトを複数、変数に依存して作る(覚え)
- 6. venvで立ち上げた仮想環境の中で指定したバージョンのPythonを起動させる方法
- 7. ダイヤモンド継承
- 8. Telegraf の入力データフォーマットを JSON にする
- 9. 【Python3】天気予報が変わったら、LINEに通知が来るBotを作ろう
- 10. pip3 installでエラー [Errno 13] Permission denied
- 11. データサイエンスを勉強するために参考にしている本・教材まとめ
- 12. kaggle初心者のタイタニックの次にやるオススメのコンペ
- 13. matplotlibで生成したグラフを直接エクセルに出力する方法
- 14. 初心者による初心者のためのDiscord.py
- 15. AndroidでDiscord Botを動かす
- 16. LSTMモデルで不動産取引価格の長期予測
- 17. Tensorflowを超初心者向けに超わかりやすく解説(完成版コードあり)
- 18. Python 3.8: 代入式(:=)を使って、フィボナッチ数列の lambda 式を作る
- 19. GenomeContest2021 B問題 Python3で解く
- 20. blenderのbpyで、オブジェクトにキーフレームを打つ(スクリプトでリスト作成、もしくは、csv読み込みで)
BeautifulSoupでドメイン内リンクを列挙する。
#実行環境
・macOS High Sierra 10.13.6
・Python 3.8
・**urllib3** 1.26.4
・**beautifulsoup4** 4.9.3
・エディタ Atom
・AtomはデフォルトでPythonの実行をサポートしていないので、必要なパッケージをダウンロードする必要がある#はじめに
:::note alert
クローリングしようとしているサイトが、クローリングを許可しているか、禁止しているかについては十分な注意を払うべきである。
:::あなたは、自社のWebサイトに使用している写真をすべて改めるよう上司の指示を受け、とりあえずのところは、自社Webサイトのリンクをいくつも辿ってドメイン内を東奔西走し、どんな写真が使われていて、あるいは複数のページに重複して使用されている写真がどれだけあって、それぞれ何度使用されているか数えなければならなくなった。
その判断が正しいとして写真のチェックミスがないように、まずは**ドメイン内のすべてのページをもれなく列挙しよう!** と思い立った。URLを直打ちしないとローマ経由でも辿り着けないよう
Google Doorbellで自分を認識したら自動でSesame3を解錠させてみた(Python初挑戦)
#やりたかったこと
Google Doorbellが発売されたので、カメラが自分の姿を認識したときにSesame3を自動で解錠させたかった#困ったこと
・Sesame3がいまだにIFTTT連携してくれない(2021年8月現在)
⇒Python使ったことないのにpysesame3を使う羽目になった#やろうとしたこと
・GoogleDoorbellが認識済みの人物をとらえると、Homeアプリから人物名入りの通知が届く
・Homeアプリから飛んできた「人物」入りの通知をトリガーとして、MacrodroidからTasker実行
・pysesame3を使ったpythonプログラムを実行してSesame3を解錠#困ったこと2
・Android上でPythonを動かす環境の選択肢に最初に上がったのが下の2つ
###Pydroid
・プログラムは作れたものの、Taskerから実行させる方法がなかった
・Macrodroid経由でアプリを起動することはできるが、それならSesameアプリからでも同じ
###QPython
・なんか知らんけどpipからpysesame3をインストールできない
SeleniumでWebサイトをPDFとして保存するとき、デフォルトの保存先を変更する方法(chromedirver)(Python)
# 概要
タイトルの通り、SeleniumでWebサイトをPDFとして保存するとき、デフォルトの保存先を変更する方法を解説します。日本語で調べて出てくる情報が、私の調べた限りだと、上手いことできずに少しつまづいたので共有しようと思いました。なお、WebDriverはChrome用のものを公式サイトからダウンロードして使用しています。言語はPythonですが、ChromeDriverを使っていて同じような状況の場合は言語に関わらず有用な情報だと思います。# 前置き
Seleniumを使って、WebサイトをPDFとしてダウンロードする方法が知りたい方はこちらのサイトを参考にしてください。ただし、こちらのサイトにはデフォルトの保存先の変更方法に関して間違いがあり、それに関する解説が本記事の目的です。
# 本題
まず、結論から書くと、ページの印刷用(WebサイトをPDFとして保存する用)のデフォルトフ
python-pptxの図形一覧
# python-pptxの図形を調べてみた。
python-pptxはPowerPointをPythonでかけるライブラリです。
あまりにも画像の数が多かったり、毎回似たような表を作成しなければならないとき、自動化ツールとして活用できます。そのため、画像挿入や表挿入、グラフ挿入に関する記事は調べればそれなりの数が出てきます。
しかし、図形の挿入となると記事はかなり少なくなるようです。
今回はpython-pptxで簡単な図形追加をまとめました。182種類の図形が追加できるようなのですが、そのうち約170個ほどを実際に出力してみています。
ちなみに、図形の細かい調整までは労力が大きすぎるので控えました。別の機会に調べてまとめたいと思います。
#図形の追加の仕方
python-pptxの図形はshapes.add_shapeメソッドで追加できます。
引数は“`add_shape(MSO_SHAPE.xxx, left, top, width, height)“`です。
このうちの“`xxx“`の部分に何を入れるかで挿入される図形が変わります。
例えば、直線を引く場合は
Tkinterでオブジェクトを複数、変数に依存して作る(覚え)
#環境
・macOS High Sierra 10.13.6
・Python 3.8.8
・tkinter 8.6.10
・エディタ Atom
・AtomはデフォルトでPythonの実行をサポートしていないので、必要なパッケージをダウンロードする必要がある#はじめに
tkinterでインターフェイスを作るときに、似たようなオブジェクトを複数作りたいときがある。
とりあえず良さそうな方法が見つかったのでちょっと覚書きする。#GUIの基本
まずはHeloo world!に相当するコードを書く。以下の通り。“`main.py
from tkinter import *
from tkinter import ttkroot = Tk()
root.title(‘My App’)#ウィジェットの作成
label_1 = ttk.Label(root,text=’Hello World!’)#レイアウト
label_1.pack()# ウィンドウの表示開始
root.mainloop()
“`
実行すると次のようなウィンドウが表示される
![スクリーンショット
venvで立ち上げた仮想環境の中で指定したバージョンのPythonを起動させる方法
#直面した事象
ローカルのTerminalで__*pyenv local*__で設定したPythonのバージョンが、__*python -m venv*__で立ち上げた仮想環境の中で引き継がれない。
#やりたいこと
– venv仮想環境野中で、Python 3.7.9系を使いたい。(Python 3.9.6ではなく)
– Pyenv localで3.7.9に変えたのに、そのディレクトリでvenvコマンドを叩いて仮想環境を作ると、仮想環境野中では3.7.9が立ち上がらない。##成功した解決策
(参考)
https://qiita.com/TheHiro/items/88d885ef6a4d25ec3020
>### 解決方法
> https://github.com/pyenv/pyenv#homebrew-on-mac-os-x を読み直してみたら、「pyenv initを使うように!」とあったので、早速実行。
>
>““bash:
>$ pyenv init
># Load pyenv automatically by appending
># the foll
ダイヤモンド継承
ふと、これってダイヤモンド継承の出番か?
という場面が来たので検証してみました。# ダイヤモンド継承とは?
下記図のように親クラスから2つ以上の子クラスに継承し
孫クラスに分岐させた子クラスを継承して1つのクラスにすることです。このメリットはクラスのメソッドを分岐させることによって、
メンテナンス性を向上させることだと思います。実際にこれを書いているときにダイヤモンド継承をやりたいと考えた理由は
ドメイン駆動設計の構築中に1クラスのメソッドが多
Telegraf の入力データフォーマットを JSON にする
こちらのプログラムの Telegraf の入力フォーマットを JSON に変更しました。プロトコルは udp のままです。
[Telegraf で InfluxDB 2.0 にデータを入れる](https://qiita.com/ekzemplaro/items/1156e8371aea84604d13)Telegraf の設定ファイル
“`text:/etc/telegraf/telegraf.conf
(省略)
[[outputs.influxdb_v2]]
urls = [“http://127.0.0.1:8086”]
token = “1zIYs1taCm3pWQOBUNk0ssYccOF7YgJcdGyJDbiFYTBf7hcPvyl5nGyt71rNVkYtg2rB
ceUwQ1r5Xzm7Mabcde==”
organization = “ekzemplaro”
bucket = “tochigi”
(省略)
[[inputs.socket_listener]]
service_address = “udp://:8092”
json_name_key = “n
【Python3】天気予報が変わったら、LINEに通知が来るBotを作ろう
tenki.jpの天気予報を利用した、天気急変お知らせシステムを作ったので投稿します。
#1.目的
朝の天気予報ではこの時間は晴れのはずだったのに、雨が降ってきて洗濯物がびしょ濡れ…
1時間ごとの天気予報が変わったら通知してくれれば気づけた…
このようなことがなくなればいいと思い、作りました。#2.実装方法
A.ハードウェア
RaspberryPi(Pico以外)
少し動作が重いですが、本体とケース込みで3000円以下とコスパがよいZero WHがお勧めです。
https://akizukidenshi.com/catalog/g/gM-12958/B.ソフトウェア
Python3
バージョンは3.8を利用しました。LINE Notify
登録の仕方、メッセージの送信方法は以下の記事を参考にしました。
https://qiita.com/moriita/items/5b199ac6b14ceaa4f7c9#3.実装時注意点
ファイルの入出力について#4.実装方法
4-1.実装コード
今回は、モジュールを利用したく動作を2つのファイルに分けた。
A:1時間ごとの天
pip3 installでエラー [Errno 13] Permission denied
##やりたいこと
NanoPlotツールをPyPIからダウンロードして、インストールする
>PyPIとは?
>インターネット上にあるPythonパッケージの貯蔵庫
>https://pypi.python.org/pypi##実行結果
“`:Terminal
% pip3 install NanoPlot
DEPRECATION: Configuring installation scheme with distutils config files is deprecated and will no longer work in the near future. If you are using a Homebrew or Linuxbrew Python, please see discussion at https://github.com/Homebrew/homebrew-core/issues/76621
Collecting NanoPlot
Using cached NanoPlot-1.38.1-py3-none-any.whl
Requirem
データサイエンスを勉強するために参考にしている本・教材まとめ
2020年9月頃から本格的にデータサイエンスを勉強し始めました。
ちょうど1年ほど経ったので、自分がこれまで読んできた書籍や使ってきた教材の中で個人的にデータサイエンスを理解するのに役立ったもの(役立ちそうなもの)、何度も読み返している、見返しているお気に入りをまとめます。データサイエンティストについて調べると必要なスキルとしてエンジニアリング力、データサイエンス力、ビジネス力と言われているので、幅広く勉強するようにはしています。
勉強するための本や教材を選ぶ際には、実際にデータサイエンティストとして活躍されている方のオススメをいつも参考にしています。
本や教材で勉強する際は、1回目は分からないところが多いですが一通り目を通し、しばらくしてから再度読み返すことが多いです。2回目は理解度が上がっており、より楽しく勉強できています。
##統計学・数学
[1、統計学が最強の学問である](https://www.amazon.co.jp/%E7%B5%B1%E8%A8%88%E5%AD%A6%E3%81%8C%E6%9C%80%E5%BC%B7%E3%81%AE%E5%AD%A
kaggle初心者のタイタニックの次にやるオススメのコンペ
# はじめに
機械学習の学び方や学習フローを調べると、やったほうがいい事として**「Kaggle」**に参加することが書かれてることが多いです。
Kaggleはデータサイエンティストの闘技場みたいなものでして。[Titanicコンペ](https://www.kaggle.com/c/titanic)がチュートリアルとして有名ですよね。
実際のデータに触れて、前処理やモデル構築をして、より良いモデルを作っていく。
そうした練習ができるということで初心者からするととても有益です。ただ、自分もそうなのですが、
###**「Kaggleのアカウントは作った。タイタニックコンペもやってみた。この後どないすりゃええねん!」**
となる初心者の方は多いのではないでしょうか?
実際自分は、タイタニックコンペが終わった後何をすればいいかわからず、モチベが出ず放置してしまいました。
ただ最近、再び本腰入れて機械学習を学び始めて2ヶ月、Kaggleに再びチャレンジしてみようということでチャレンジしており、Kaggleの楽しさがわかってきて、自分なりにタイタニックの後はこれをやったほうがい
matplotlibで生成したグラフを直接エクセルに出力する方法
# 概要
matplotlibで生成したグラフをエクセルに出力する時、自分のローカルにグラフ画像を保存せずにそのままエクセルに出力したい事があると思います。今回は「既存のエクセルファイルに新しいタブを追加し、そこにグラフを出力する」という場面を想定し、上記を実現するコードを書いていこうと思います。
# サンプルコード
“`python
import io
import openpyxlimport matplotlib.pyplot as plt
fig = plt.figure()
# ~~~~~~ グラフを作っていく処理は省略 ~~~~~~~~
# 既存のエクセルファイルを開き、「chart」という名前のタブを追加する
file = ‘path/to/excel.xlsx’
workbook = openpyxl.load_workbook(file)
new_sheet = workbook.create_sheet(‘chart’)# PCのメモリに画像を保存する
img_data = io.BytesIO()
fig.savefig(img_data,
初心者による初心者のためのDiscord.py
## 前書き
この初心者による初心者のためのDiscord.pyでは、
Discord.pyを習得したいけどよく分からない!
という人のために、初心者が、初心者のための解説をしていきます。
書き方、使い方、構文などを記載していきます。
この記事を書こうと思った理由は、動くけど情報が古かったり、だいぶ昔に作成された記事がヒットしたりと、最近の記事が少なかったので、先駆者様への恩返しなども込めた記事となっております。
ちなみに初投稿です。至らない部分もあると思いますが、問題点などあれば教えて下さると幸いです。対象:初心者(パソコンのタイピングができて、pythonを触ったことがある程度の人)
##基本構文
まず初めに、Discord.pyとは、Discord BotをPythonで動かすためのライブラリのことを指します。
まず、“`shell:ターミナル
# Windows環境
py -3 -m pip install discord.py
# その他
python3 -m pip install discord.py
“`でdiscord.pyをpythonで使えるよう
AndroidでDiscord Botを動かす
家にAndroid 5とかいう化石を搭載しているタブレットが2台ある。
片方はイヤホンジャックがタヒんでてYouTube専用機としても使いづらい。
なにか有効活用できないか。探した結果、Discord Botにたどり着いた。#動作環境
* Android 5
* UserLand 2.7.2
* Python 3.6.9
* Discord.py 1.7.3# 本題
**この記事ではBotアカウントの取得方法やBotのコードの書き方は書きません。環境構築の方法を超適当に書きます。**
てことで、AndroidにDiscord Botを構築しよう!
## 1. UserLandのインストール
これが無いとなにも始まりまらない。
ちなみに何故Termuxじゃないのかだが、TermuxはAndroid 5&6のサポートが打ち切られてしまったのと、Discord.pyが入れれなかった。
F-droidかGoogle Play([https://play.google.com/store/apps/details?id=tech.ula](https://play.google.com/
LSTMモデルで不動産取引価格の長期予測
###**目次**
[1.検証内容](#検証内容)
[2.検証動機](#検証動機)
[3.開発環境](#開発環境)
[4.開発言語](#開発言語)
[5.学習用データセット](#学習用データセット)
[6.達成目標](#達成目標)
[7.前処理](#前処理)
[8.東京と宮城の各間取りごとの時系列グラフ](#東京と宮城のまごりごとの時系列グラフ)
[9.学習モデルの作成と検証](#学習モデルの作成と検証)
[10.学習モデルを用いた長期予測](#学習モデルを用いた長期予測)
[11.まとめ](#まとめ)
[12.今後の展望](#今後の展望)###**検証内容**
LSTMモデルを用いて、不動産取引価格の長期予測をしてみます。
*学習用のデータは国土交通省の不動産取引価格から宮城と東京分を四半期ごとダウンロード
(2005年〜2021年)
日本を代表する都市である東京と地元の宮城をセレクト###**検証動機**
時系列解析で長期予測に取り組んでみたいと思っていましたが、初学者でもあるので、あまり難しくない長期予測解析をしようと思いました。
不動産価格の長期予測をテーマに選んだ
Tensorflowを超初心者向けに超わかりやすく解説(完成版コードあり)
#この記事を書こうと思ったきっかけ
最近TFにハマって公式Docなどを見ながら色々書いているんですが、ある日気づきました。あのQiitaに初心者向け解説用の記事があんまねぇ!当時の初心者からみるとどれやればええねん、、という状況でした()
ということで初心者さんが入り込めるようにしたいなと思いこの記事を書いています。(プログラミング初心者ってQiita知らない人多いらしい:thinking:)
#①Tensorflowとは?
TensorFlow(テンソルフロー、テンサーフロー)とは、Googleが開発しオープンソースで公開している、機械学習に用いるためのソフトウェアライブラリである。 英語の発音のまま読んだ場合はテンサーフローだが、数学用語のtensorはテンソルと読むのでどちらの読み方もあっていると言える。(https://ja.wikipedia.org/wiki/TensorFlow )
#②筆者の環境
Win10 Home
Python 3.8(anaconda)
VSCode
Tensorflow 2.6
今回は、”とあるもの”でコードを実行するので、そこまで高スペックな
Python 3.8: 代入式(:=)を使って、フィボナッチ数列の lambda 式を作る
フィボナッチ**数列**は単純な手続きで作れるけど、プログラムにすると以外と面倒臭い。
“`python:Python
def fibonacci_table(n):
r = []
a, b = 0, 1
for _ in range(n):
r.append(a)
a, b = b, a + b
return r
“`これを Python 3.8 から使用可能な代入式 `:=` を使って lambda 式で作ってみる。
“`python:Python3.8
fibonacci_table = lambda n, f1=0, f2=1, f3=1: ([0, 1] + [(f3 := f1 + f2, f1 := f2, f2 := f3)[0] for _ in range(n – 2)])[:n]
“`もっと単純になるかと思ったけど、横に長くなっただけだった。
(行末の [:n] は、n が 0 または 1 のためにあります)“`python:実行結果
>>> fibonacci_table(
GenomeContest2021 B問題 Python3で解く
# 概要
AtCoderで開催中のプログラミングコンテスト「[ゲノコン2021 ー DNA配列解析チャレンジ](https://atcoder.jp/contests/genocon2021)」に参加中なので備忘録を。ゲノコンという名前ですが遺伝子系の知識のない方でも問題なく解けるように十分な解説もあります。
コンテスト終了が9/20なのでまだ参加していなくて興味がある方はぜひ。# 問題
文字 A,C,G,T からなる文字列 s,tが与えられる。
s,t の適切な位置に空白を表す文字 “-” を挿入して長さを揃え、Sum of pairs と呼ばれる次のスコア $S_{sop}$を最大化することを考える。$$S_{sop} = \sum_{i=1}^{N}sim(s[i],t[i])$$
Nは “-” を挿入した後の文字列の長さ、sim(x,y)はxとyの類似度を示す関数で、その出力は以下の通り。
x,yが同じ文字なら1、異なる文字なら-3、ギャップ(空白)を含むなら-5。$$
sim(x,y) = \begin{cases}
1\; (x = y) \\\
blenderのbpyで、オブジェクトにキーフレームを打つ(スクリプトでリスト作成、もしくは、csv読み込みで)
###はじめに
物理シミュレーションの結果をblender上で表示させるやり方を示す。
前提として、blenderを使ったことがあり、プリミティブオブジェクトについての簡単な操作ができるレベルを前提としている。###プリミティブオブジェクトとして、ICO球を追加しておいて、スクリプト内でリストを作成し、それを元にオブジェクトにキーフレームを打つスクリプト
下記の通りに実行すると、ICO球がxy平面上に楕円を描く“`python
import bpy
from math import pi,sin,cosob2 = bpy.data.objects[‘Icosphere’]
ob2.animation_data_clear() #スクリプトを再度実行する場合を考慮して、アニメーションデータをクリア
def key_loc_set(list,obj):#リストと対象となるメッシュを受け取って、キーフレームを打つ
for i in list:
bpy.context.scene.frame_set(i[0])
obj.locatio