- 1. 【Python3】天気予報が変わったら、LINEに通知が来るBotを作ろう
- 2. pip3 installでエラー [Errno 13] Permission denied
- 3. データサイエンスを勉強するために参考にしている本・教材まとめ
- 4. kaggle初心者のタイタニックの次にやるオススメのコンペ
- 5. matplotlibで生成したグラフを直接エクセルに出力する方法
- 6. 初心者による初心者のためのDiscord.py
- 7. AndroidでDiscord Botを動かす
- 8. LSTMモデルで不動産取引価格の長期予測
- 9. Tensorflowを超初心者向けに超わかりやすく解説(完成版コードあり)
- 10. Python 3.8: 代入式(:=)を使って、フィボナッチ数列の lambda 式を作る
- 11. GenomeContest2021 B問題 Python3で解く
- 12. blenderのbpyで、オブジェクトにキーフレームを打つ(スクリプトでリスト作成、もしくは、csv読み込みで)
- 13. 櫻坂46メンバーの顔を分類するアプリケーションをStreamlitで作りました。
- 14. Python3: UDP を受信
- 15. Python + SendGrid APIでとりあえずメールを送ってみる
- 16. 【AtCoder】ABC215をPython3で解説(ABCD)
- 17. Pygame de game~インストールと実行~(Part1)
- 18. pip 全部削除
- 19. 大量にyahooメールを送信する
- 20. BeautifulSoupで最上層/最下層のタグを選択的に抽出する方法(暫定)
【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
櫻坂46メンバーの顔を分類するアプリケーションをStreamlitで作りました。
# 何したの?
櫻坂46のメンバー25人全員の顔画像をCNNモデルで分類するWebアプリケーションを作りました。画像分類のテーマはたくさんありますが、好きなもので取り組む方がモチベ出るでしょってことで櫻坂46を。~~(乃木坂・日向坂に比べるとそんな流行ってない…?)~~# 作ったもの
[櫻坂46メンバー顔分類アプリ](https://share.streamlit.io/rukaeto/sakurazaka_face_detect_app/main/main.py)
[ソースコード](https://github.com/rukaeto/sakurazaka_face_detect_app.git)# はじめに
[「[第3版]Python機械学習プログラミング 達人データサイエンティストによる理論と実践」](https://www.amazon.co.jp/%E7%AC%AC3%E7%89%88-Python%E6%A9%9F%E6%A2%B0%E5%AD%A6%E7%BF%92%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%
Python3: UDP を受信
こちらの記事を参考にしました。
[UDPでデータを受信する最も単純なPythonコード(Jupyter notebook版)](http://www.ams.eng.osaka-u.ac.jp/user/ishihara/?p=1942)次のバージョンで確認しました。
>“`text
$ python3 –version
Python 3.7.3
“`“`py:receive.py
#! /usr/bin/python3
#
# receive.py
#
# Aug/25/2021
#
import socket
import sysudp = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
udp.bind((“0.0.0.0”,8092))sys.stderr.write(“*** start ***\n”)
while True:
try:
rcv_byte = bytes() #バイトデータ受信用変数
rc
Python + SendGrid APIでとりあえずメールを送ってみる
# はじめに
この記事は、
**「SendGrid APIを使ってPythonからメールを送ってみたい」**
という願いを持つ方に向けて執筆しています。既に既出の内容ではありますが、
私の環境では以下の記事の通りにコードを打ってみても
メールが送信できずに、少しハマったので備忘録として残しておきます。https://qiita.com/takuma-jpn/items/8acc7d3bcbe6ec606e0d
https://qiita.com/Dalice/items/cb51687aae4dba3b2b1e
# サクッと結論
※SendGridのAPI Key発行&pipでのsendgridのインストールは済んでいる前提で説明します。
済んでいない方は、上記の記事を参考にしてください。インストールしている**SendGridのverが6.8.0であれば**、
以下のように記述すればOKです。“`python:send_email.py
# using SendGrid’s Python Library
# https://github.com/sendgri
【AtCoder】ABC215をPython3で解説(ABCD)
ABC215のA-D問題の解説。
https://atcoder.jp/contests/abc215
## A – Your First Judge
### 解説条件分岐の問題。
問題文のとおりに`if`を書いてあげると`AC`。### コード
“`python
s = input()if s == ‘Hello,World!’:
print(‘AC’)
else:
print(‘WA’)
“`## B – log2(N)
### 解説$2^k \leq N$となる最大の$k$を求める問題。
$k$に1ずつ足していき、$N$を超えたら、`break` でループを回す。
### コード
“`python
n = int(input())
k = 0while True:
if 2 ** k > n:
print(k-1)
breakk += 1
“`# C – One More aab aba baa
### 解説文字列Sの各文字を並べ替えて、作成可能な文字列を辞書順
Pygame de game~インストールと実行~(Part1)
#はじめに
LINEのbotについて書いている僕ですが,Pygameもやっているのでお伝えできたらと思います。
#Pythonのインストール
Pygameを使うためにはPythonが必要です。Python3.9を使用していきます。
##MacOS
MacにはデフォルトでPython3.9がインストールされています。ターミナルで
>
“`
python3
“`でPythonが起動することを確認してください。
##WindowsOS
[Pythonホームページ](https://www.python.org/)からご自身のOSにあったPython3.9をインストールしましょう。
>
“`
python3
“`を行い、起動を確認してください。
#Pygameのインストール
ここからはMac,Windows共通です。
>
“`
pip install pygame
“`を実行します。
##Pygame確認
Pythonを起動して
>
“`python
import pygame
“`でImportErrorが出なければPygameがダウンロードできました。
##
pip 全部削除
`pip freeze | xargs pip uninstall -y`
で全削除
大量にyahooメールを送信する
下記サイトを参考に大量にメールを送信するプログラムにしました。
アカウントで1日最大500通送付できます(ヤフーの仕様でそれ以上はできない)
https://cercopes-z.com/Python/tips-mail-py.html#yahoo-36send_yahoomail_jp_3_6.pyとyahoomail.pyを同じフォルダに入れます。
yahoomail.pyを実行すればOKです。基本yahoomail.pyのヤフーアドレスとパスワード、メールの内容を編集するだけで使えます。
セーフティアドレスを使う場合send_yahoomail_jp_3_6.pyのコメントアウトしているところをいじってください。
“`send_yahoomail_jp_3_6.py
# send_yahoomail_jp_3_6.py
# Yahoo!メール 送信 (Python 3.6 以上)import mimetypes
import os
import smtplib
from email.message import EmailMessage# Yahoo!メール
BeautifulSoupで最上層/最下層のタグを選択的に抽出する方法(暫定)
# 概要
– divのみで情報が収納されているhtml(一部分)からtextを抽出したい
– div群の深さ・並列数など構造が可変であり位置指定は難しい
– かろうじて「最上層のdivは大項目」「最下層のdivは個別要素」というルールは信頼できそう
– 最上層divの内部にいくつの最下層divがあるかはまちまち
– 各最下層divのdiv深さは3だったり4だったりまちまち
– ~~このクソ構造を作ったのは誰だァ!~~
– Beautifulsoupで最上層divおよび可変深さの最下層divを抽出する方法のメモ# 詳細
## 最上層div
– `soup.find_all(‘div’, recursive=False)` で最上層のdivのみ抽出できるらしいが、私の環境では機能しなかった
– htmlの一部分からsoupを作成する際にはbodyタグが全体を囲うように付与される
– `divtops = soup.select(‘body>div’)` でbodyタグ直下のdiv(必然的に最上層)のみを抽出できた## 最下層div
– 最上層divをdiv