- 1. 個人メモ] pipenvで環境構築 2020年
- 2. unittest覚書
- 3. 登山の新しいお供?やまみちあんしんボタン。
- 4. geopandasとarcpyを使って基盤地図情報を編集して東京都の市区町村ごとに仕分けた後、建物の面積がどれくらいあるのかを集計してみる
- 5. Twitter Streaming API を使ってリアルタイム自動返信Botを作る
- 6. Joblibを使ってみる(1/2)
- 7. Pythonでゆっくりボイスを作ろう
- 8. ゆっくりに青空文庫を読んでもらう
- 9. SEIR モデルの日本語表示
- 10. julia v1.5から始めるJupyter Notebook
- 11. 競馬データをseabornでペアプロットしてみた。
- 12. pandasで行に特定の文字がいくつあるかをカウントして項目追加する方法
- 13. 「ゼロから作るDeep Learning」自習メモ(その6の2)
- 14. 【Python3】東京と○○県の暑さを可視化(DataFrame使い方メモ)
- 15. Python3: SEIR モデルを表示する
- 16. Pythonのbytesの使い方色々
- 17. python 文字列のスライス
- 18. pythonで並列処理のサンプル
- 19. 【競プロ初心者向け】Pythonで競技プログラミングを始める上で覚えるべき3つの入力方法
- 20. 【更新中】Java屋さんのためのPython Syntaxチートシート
個人メモ] pipenvで環境構築 2020年
pipenvのドキュメントから毎回見つけるのが結構手間なのでメモ.
“`shell
# プロジェクト直下にvenvを作る
export PIPENV_VENV_IN_PROJECT=1# 環境を作成
pipenv install –python 3.6# Pipfileから環境構築
pipenv install# Pipfile.lockから環境構築
pipenv sync# requirements.txtからパッケージをインストール
$ pipenv install -r path/to/requirements.txt# Pipfile.lock を作成
$ pipenv lock# requirements.txtを作る
$ pipenv lock -r# requirements.txt devを作る
$ pipenv lock -r –dev“`
ドキュメント
– [Pipenv: 人間のためのPython開発ワークフロー — pipenv 2018.11.27.dev0 ドキュメント](https://pipenv-
unittest覚書
# unittestとは
> 単体テスト(ユニットテストと呼ばれることもあります)は、プログラムを構成する比較的小さな単位(ユニット)が個々の機能を正しく果たしているかどうかを検証するテストです。
通常、関数やメソッドが単体テストの単位(ユニット)となります[単体テスト(ユニットテスト)とは | ソフトウェアの検証の種類 | テクマトリックス株式会社](http://www.techmatrix.co.jp/t/quality/unittest.html)
要するに関数とかがちゃんと動いているかチェックするテストである。
先に関数の振る舞いを決めてテストを書いてから関数の実物を書くのがテスト駆動開発-**TDD**(あっているか自信なし)## どんな風に書くん?
“`python
import unittest
import <テストしたい関数とか>class Test<テストしたい(ry>(unittest.TestCase): # 名前は重要ではないけどunittest.TestCaseを引き継ぐのは必須
def test_<テストする関数>(self)
登山の新しいお供?やまみちあんしんボタン。
#概要
SORACOM Button を使って山登りがちょっと安全になる?デバイスつくりました。###機能
– ボタンを押した位置を地図上に表示する
– 緊急時に特的の連絡先にメッセージを送る###言い訳
今回は SORACOM Button のメリットを生かすため、極力スマホに頼らない構成にしました。と、言うのは半分言い訳で正直なとこ今回の機能はスマホのアプリで出来ちゃいます…
( [YAMAP](https://yamap.com/) さんめっちゃ便利だからみんなも使おう!僕もいつもお世話になってます!)でもスマホってバッテリーの持ちが悪かったり、モバイルバッテリーは重たかったりしますよね?
SORACOM Button なら…
**電池式だから予備電源の確保は簡単!**
**持ち運びも便利な軽量設計!**なんて山登りに最適なんだ!
と言うことで、宜しくお願いします。#インデックス
– [なぜ SORACOM LTE-M Button なのか](#なぜ-soracom-lte-m-button-なのか)
– [構成](#構成)
– [今回の詰まり
geopandasとarcpyを使って基盤地図情報を編集して東京都の市区町村ごとに仕分けた後、建物の面積がどれくらいあるのかを集計してみる
主にgeopandas、そして一部でのみarcpyを使い、基盤地図情報で公開されているデータを加工して東京都の各市区町村ごとの建物面積がどれくらいあるのかを計算してみたいと思います。
手順には多くの無駄が含まれているかもしれませんが、記録としてそのまま残しています。
**使用したGISソフト**
QGIS…ダウンロードした基盤地図情報ファイルである建物ポリゴン(GML形式)をシェープファイルへ変換する
ArcGIS Pro…建物ポリゴンの自己交差の修復コードの実行はjupyter notebookで行いました。
**手順の概要**
①建物を表すポリゴンデータを東京都全域分入手
②ポリゴンデータをシェープファイルに変換し、編集ができる状態にする
②’ポリゴンデータの自己交差を修復
③位置に基づいたメッシュごとに分かれたシェープファイルを統合し、一つの大きなシェープファイルにする
④東京都の行政界ポリゴンデータを使い、ひとかたまりのシェープファイルにクリッピングを行い市区町村ごとに分ける
⑤建物ポリゴンの座標系を地理座標から平面直角座標系に変更し、面積の計算を行えるようにする(
Twitter Streaming API を使ってリアルタイム自動返信Botを作る
# はじめに
[こちらの記事](https://qiita.com/YiwaiY/items/ce790838725aba54c035)でやったことのTwitter API部分について詳しく書いていきます。
Twitter自動返信Botの開発を進めていく中で、2020年版の「ツイート(リプライ)をリアルタイムで取得する」といった内容の参考記事をなかなか見つけられなかったので、今回いろいろ自分で調べたことについてまとめたいと思います。
こちらが今回作ったBotの仕様です。
– リアルタイムでタイムラインを監視し、特定のワードを含んだ自分あてのツイートを見つけると、自動で返信する
– 1アカウントにつき自動返信は1日1回まで
– フォロワー以外のツイートには反応しない
– リツイートには反応しない
– 非公開アカウントのツイートには反応しない(できない)
– 自分のツイートにも反応できるようにする
# Twitter API
## Twitter APIキーの取得
2020年8月現在では、APIキーの取得方法は若干異なりますが、利用申請の方法などこちらの記事を参考に
Joblibを使ってみる(1/2)
# Joblibを利用して処理を並列化してみる
Pythonでの[Joblib](https://joblib.readthedocs.io/en/latest/)を利用する事で並列処理が容易に記述できるので、その手順についてのメモ## Install
`pip`コマンドを利用してインストール“`terminal
> pip install joblib
“`## 並列処理のお試し
まずは、モジュールのインポート
時間計測用に`elapsed_time`も定義しておく“`python3
import time
from joblib import Parallel, delayeddef elapsed_time(func):
print(f”Function name: {func.__name__}”)
start = time.time()
result = func()
print(result)
elapsed = time.time() – start
print(f”Elapsed: {elap
Pythonでゆっくりボイスを作ろう
PythonからSofTalkを利用したいのです
# 環境
– Python 3.8.3
– SofTalk 1.93.46
– Windows10# 準備
SofTalkをダウンロードしておきましょう
以下のページから最新バージョンをダウンロードしておいてください
https://w.atwiki.jp/softalk/pages/15.html# コマンドラインからSofTalkを使ってみる
同梱されている `help.chm` にも記載されていますが、コマンドラインからSoftalkを利用する方法があります
DLしたzipを解凍して“`
start ..\softalk\Softalk.exe
“`これでSofTalk本体を起動するとともに、以下の引数が利用可能です
### SofTalk引数早見表
ゆっくりボイスでは利用できない(Aquestalk10でのみ利用可能)な引数は除いています|種類|値|効果|詳細|備考|
|:—-|:—-|:—-|:—-|:—-|
|/NM:|文字列|声指定|声を名前で指定|例)/NM:女性
ゆっくりに青空文庫を読んでもらう
[前回](https://qiita.com/Mechanetai/items/78b04ed553cce01fa081 “Pythonでゆっくりボイスを作ろう – Qiita”),Pythonからゆっくりボイスを作成する方法を書きました
今回は,青空文庫をゆっくりに読んでもらいましょう# 環境
– Python 3.8.3
– SofTalk 1.93.46
– Windows10# 青空文庫本文のDLと整形
これを1から書こうと思ったのですが,すでに同じことをされている方がいましたので,ありがたく使わせてもらいましょう
[青空文庫からPythonで本文を取得したい – AI人工知能テクノロジー](https://newtechnologylifestyle.net/711-2/)
こちらのサイトで紹介されているコードのmain()関数から,本文の文字列を返すようにします
“`python
def main():
#中略
return text
“`#ゆっくりに読んでもらう
では,実際にゆっくりに読んでもらいましょう
本文が改行されている
SEIR モデルの日本語表示
次のページを参考にしました。
[【minimize入門】SEIRモデルでデータ解析する♬](https://qiita.com/MuAuan/items/88d5d0c416abb9e9915e)1000 人の孤立した島に、1 人の感染者がいたらどうなるかというモデルです。パラメータの設定で結果はかなり変わります。
![seir_aug26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/179446/26a4a239-44db-2375-3f81-19ae6e704db8.png)
“`py:seir.py
#! /usr/bin/python
#
# seir.py
#
# Aug/26/2020
# ——————————————————————
import sys
import numpy as np
from scipy.integrate import odeint
from scipy
julia v1.5から始めるJupyter Notebook
[前回](https://qiita.com/doorei/items/bac598bac28af074edab)、juliaをインストールしたあと環境をきれいにしたところ、juliaがバージョンアップしていた。インストールしたらまた少しだけ前回通りではいかなかったので再々度書いてみる。
# やってみた環境
– Windows 10 Home (64bit) Ver 1909
– julia v1.5 (64bit)# やり方
0. juliaがインストール済みの前提(インストーラー版)
1. juliaのコンソールを起動(緑字のプロンプト)
2. `]`キーを押してパッケージモードへ(青字のプロンプトになる)
3. `add IJulia`を実行(Cloning~となり、しばらく時間がかかる)
4. `build IJulia`を実行(Building~となり、しばらく時間がかかる)
5. バックスペースでパッケージモードを抜ける(緑字のプロンプト)
6. `using IJulia`を実行(Precompilingされる)
7. `notebook(detached=tr
競馬データをseabornでペアプロットしてみた。
#はじめに
前回に紹介した[「Pythonでnetkeibaの一年分の全レース結果をスクレイピングするbotを作成した話」](https://qiita.com/kuri_tter/items/192f1a5fdf036ac37cb4)で集めたデータを元にデータを機械学習させているのですが、なかなかうまくいきません。
機械学習の本(Pythonではじめる機械学習)はさわって、それっぽい学習はさせているのですが、一向に当たる気配がなく、順調にお金を失い続けています。
ということで今回は初心に返って集めたデータをseabornを使って可視化して何がいけないのかを考えてみたいと思います。このサイトを非常に参考にさせて頂きました。
[「Python, pandas, seabornでペアプロット図(散布図行列)を作成」](https://note.nkmk.me/python-seaborn-pandas-pairplot/)#用いているデータの構造
まずはスクレイピングをしてレースごとのこういうデータを集めています。
| レース名 | 馬名 | 順位 | 着差(秒)| 人気 | 騎
pandasで行に特定の文字がいくつあるかをカウントして項目追加する方法
他の記事を探してもなかなか行方向で特定文字列を集計するやり方を書いてある記事がなかったので、
試行錯誤した内容を記載します。# データの準備
“`python:データの準備
import pandas as pd
list = [[‘a’, ‘c’, ‘a’, ‘a’],
[‘b’, ‘a’, ‘b’, ‘b’],
[‘b’, ‘c’, ‘a’, ‘a’],
[‘c’, ‘a’, ‘b’, ‘b’]]df = pd.DataFrame(list, columns = [‘first’, ‘second’, ‘third’, ‘forth’])
df
“`![2020-08-25_21h17_29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/428239/c6da82e2-832f-4870-61f5-b5b17825aaea.png)
今回はこのデータのを行向きの文字列`a`と`b`をカウントして`count`という列に集計結果
「ゼロから作るDeep Learning」自習メモ(その6の2)
「ゼロから作るDeep Learning」(斎藤 康毅 著 オライリー・ジャパン刊)を読んでいる時に、参照したサイト等をメモしていきます。 [その6](https://qiita.com/slow_learner/items/5589a95081d30f82fbbd)← → [その7](https://qiita.com/slow_learner/items/efbe24999562c3630c93)
お仕着せのMNISTデータセットを読み込んで、学習させるというのを2通りやってみましたが、MNISTデータセットではない画像集をMNISTの形式に変換して学習させる、というのもやってみようかと思います。
元データは、Kaggleの猫と犬のデータセット。下記サイトからダウンロードできます。
https://www.microsoft.com/en-us/download/details.aspx?id=54765けっこう大きなファイルで、ダウンロードにも解凍にも時間がかかります。
##ダウンロードした画像データの内容を調べて見る
ダウンロードしたファイルの中身
![p6-1.j
【Python3】東京と○○県の暑さを可視化(DataFrame使い方メモ)
##0.日常に潜む問題
緊急事態宣言の中で迎える夏。
三密を徹底的に避けるために、遊びはおろか日頃から通ってアイデアを
もらっていたカフェにも行けず家に籠もっている。
話題といえば、コロナウィルスの感染者数と、暑さについてのみ。都内に住む私としては、暑くて身動きが取れない話をしても、従姉妹や父からも地元も同じくらい暑い、暑い中でこんな運動(サイクリング)をしているなどの話を聞かされ、勝手に暑さ競争をされているようで辟易していた。
時々見るニュースでは、雪国でしられる地元は東京と変わりない位の最高気温を叩き出しているように見える。
地面から湯気が立っているのではないかと思うぐらいの暑さで、
10分歩いただけでフラフラする。
そしてカフェに入って冷たいドリンクを飲んでも、体中に充満した熱は簡単に取れない状態だ。
ドリンクを飲みながら、新潟と東京の暑さを最高気温で比較する方法を考えてみた。##1.気温データの取得
[気象庁](https://www.data.jma.go.jp/gmd/risk/obsdl/index.php)から下記の手順で各地域の気象情報を取得することが
Python3: SEIR モデルを表示する
こちらにあるプログラムを改造して見通しをよくしました。
[ csdegraaf/CoronaVirusModel ](https://github.com/csdegraaf/CoronaVirusModel)
改造したのは、corona_spread.py だけです。“`py:corona_spread.py
#! /usr/bin/python
#
# corona_spread.py
#
# Aug/25/2020
# ——————————————————————
import sysimport numpy as np
from scipy import integrate
import matplotlib.pyplot as plt
#
import parameters as parameters
from calculations_module import seir_function# ————————————
Pythonのbytesの使い方色々
## bytesの使い方
Python 3.7.5 で確認。
### bytesの自力入力
“`python
b’\x00\x01\x02\x03′
# result: b’\x00\x01\x02\x03′b’\x64\x65\x66\x67′
# result: b’defg’ # asciiコードに対応した文字が表示されている
“`### ファイルからbytesで読込
“`python
# with無し
fp = open(‘filename.bin’, ‘rb’)
all_bytes = fp.read()
fp.close()# with付き
with open(‘filename.bin’, ‘rb’) as fp:
all_bytes = fp.read()
“`### bytesの部分切出し
“`python
a = b’\x00\x01\x02\x03′ # 準備コード
a[1:3] # listなのでlistと同じ要領でスライスが可能
# result: b’\x01\x02′
“`### 整数をbytesへ変換
python 文字列のスライス
#はじめに
この記事を書く理由は、競プロを始めてスライスを使う場面が多く、頭の中が混雑してきたので簡単にまとめようと思ったことがきっかけです。単なるスライスのメモです。##プログラムコード
数字の文字列です。数字の文字列にした理由は、出力結果がわかりやすいと思ったからです。“`python
s = “12345”
print(s[-1]) # 末尾
5 # 出力結果
print(s[:-1]) # 末尾を削除
1234
print(s[0]) # 先頭
1
print(s[0:]) # 先頭から最後まで
12345
print(s[1:]) # 1番目から最後まで
2345start = “6” + s[1:]
print(start) # 先頭を削除して、6を先頭に追加
62345end = s[:-1] + “6”
print(end) # 末尾を削除して、6を末尾に追加
12346
“`
pythonで並列処理のサンプル
単純に複数CPUを使ってみる
[ALL about Linux: お手軽なベンチマークあれこれ](https://luna2-linux.blogspot.com/2015/05/blog-post.html?m=0)
“`
$ time for ((i=0;++i<1000000;)); do :; done real 0m4.698s user 0m4.663s sys 0m0.000s ``` ```py:a.py import multiprocessing import time import subprocess class CmdProc(multiprocessing.Process): def __init__(self, number): super().__init__() self.number = number def run(self): subprocess.run("for ((i=0;++i<{};)); do :; done".format(self.n
【競プロ初心者向け】Pythonで競技プログラミングを始める上で覚えるべき3つの入力方法
2020年8月22日に競技プログラミングにPythonでデビューを果たしました。
参加したのは、日本で競技プログラミングといえばまっさきに思い浮かぶ[AtCoder](https://atcoder.jp/)です。新しく学び始めたPythonをようと、実際にはその前に会員登録して、始める準備万端でした。
過去問を解いた時に??ってなってしまい、心の物置部屋にそっとAtCoderに登録したことをおいてきていました。# なぜ競技プログラミングに取り組めなかったのか?
その理由はシンプルです。**そもそもPythonでの標準入力の部分で躓いたからorz**
もちろんそれまでにPythonの入門書も読破していたので、入力方法についてもinput使えばいいことはわかっていました。
しかし、inputに関する理解が圧倒的に足りていませんでした。# Python入門書で扱うinputといえば
inputっていえば、Python入門書で環境セットアップ後の1,2章のところで登場します。
サンプルコードは控えますが、だいたいこんなアウトプットになるサンプルコードが掲載されています。
【更新中】Java屋さんのためのPython Syntaxチートシート
最近Pythonをはじめました。
が、やりたいことはググると出てくるし、Python3に至ってはオブジェクト指向になってくれたおかげで、だいたいは雰囲気つかめちゃったりするので良いのですが、いざ書いてみると躓くのは文法だったりしますよね?(私だけ?)
だいたいJavaに慣れきってたりすると、Javaだとああ書くんだけど、Pythonだとどう書くんだろ?的な発想になるので、似たようなことを考えてる人のお役に立てれば幸いです。というわけで、Javaだとこう書いてたけど、Python3だとこう書くんだよ、というのを残しておきます。
始めたばっかりなので、多少考え方とか間違ってるかもしれないけど、そのへんはご愛嬌。ざっくりです。書きながら覚えていくタイプなんで。
気が向いたら更新していくと思います。## 環境
Python 3.8
Java 8## 公式のチュートリアル
https://docs.python.org/ja/3/tutorial/index.html
## 公式のユニットテスト(unittest)
https://docs.python.org/ja/3/l