Python3関連のことを調べてみた2020年04月01日

Python3関連のことを調べてみた2020年04月01日

東京都新型コロナウイルス感染症(COVID-19)対策サイトのオープンデータをGoogle Colabで可視化する

# 概要
[東京都新型コロナウイルス感染症(COVID-19)対策サイト](https://stopcovid19.metro.tokyo.lg.jp/)にて、陽性患者数の日別推移が掲載されています。同時にこのデータは[オープンデータとしてCSVファイルで公開](https://catalog.data.metro.tokyo.lg.jp/dataset/t000010d0000000068)されているため、これを[Google Colab](https://colab.research.google.com/)のノートブック上で読み込み、Seabornで日別・年代別に可視化してみました。

別の切り口から推移を分析する際の土台としても使えるかと思い、ノートブックを公開します。

# ノートブックのリンク
GitHubに置いてあります。
https://github.com/nekodango/tokyo_stopcovid19_opendata

# ノートブックをGoogle Colabで実行する
1. 上記GitHubリンクから「tokyo_opendata_covid19_pa

元記事を表示

[python3] loggingとClickで簡易的にデバッグログ出力機能を実装する

デバッグログを見ながらコードを書いていると、出力のON/OFFを変更するのが面倒になることが多々あります。そこで、コマンドラインからログレベルを変更する小技を紹介します。
※ 本記事は自分で趣味的にコーディングするような場合を想定しています。プロダクトには向かない可能性がありますので、その場合は開発チームの方法に従うことをお勧めします。

## まずは普通のログ設定

### コード例

まず普通に`logging`モジュールを使用し、ログをコンソール出力する場合のコード例を添付します。以下、python3.7を使用しています。

“`logging_test.py
import logging

from logging import DEBUG, INFO

def set_logger():
logger = logging.getLogger(‘logname’)
stream = logging.StreamHandler()
logger.addHandler(stream)

logger.setLevel(INFO)

ret

元記事を表示

iTerm2のカラースキームを時間帯によって自動的に変えよう

ずっと同じカラースキームでターミナルの画面を見ていると飽きるし、日中はライトテーマ・夕方はダークテーマにして気分をリフレッシュしたいと思いませんか? ですが、毎日いちいち手動で朝晩にテーマを切り替えるのは面倒なのでPythonにやらせます。

# Python API
2019年7月にリリースされたiTerm2バージョン3.3.0からPython APIが提供されるようになりました(それ以前はAppleScriptというAPIがあったらしい?)。`pip install iterm2` すればiTerm2外部からもAPIを叩けます。

– [iTerm2 Python API 公式ドキュメント](https://www.iterm2.com/python-api/)

APIを使用するには **Preferences > General > Magic** にある **Enable Python API** にチェックを入れます。
Screen Shot 2020-03-31 at 20.42.58.pngUbuntuでPoetryを使ってみる(インストール編)

これまで Pipenv を好んで使っていましたが、PEP 準拠の `pyproject.toml` で色々まとめて書いてみたいと思ったので、 Poetry に乗り換えてみようと思いました。
その覚書として、インストール編を書いてみました。

## TL;DR

“`treminal
$ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python
$ poetry completions bash | sudo tee /etc/bash_completion.d/poetry.bash-completion
“`

## バージョン

* OS:Ubuntu 19.10
* python:3.8.0
* Poetry:1.0.5

公式によると、Python のバージョンは 2.7 と 3.4 以上で使えるみたいです。

## インストーラのダウンロード及び実行

通常、Python のパッケージのインストールといえば、 `pip` コマンドを利用すると

元記事を表示

Python&機械学習 勉強メモ②

https://qiita.com/yohiro/items/04984927d0b455700cd1
の続き

# matplotlibとnumpy
matplotlibは、グラフ描画ライブラリ。pyplotをよく使うっぽい。
numpyは、数値計算ライブラリ。
この二つを組み合わせて数学グラフの描画ができるようになる。

## インポートの仕方

“`python
import matplotlib.pyplot as plt
import numpy as np
“`

## グラフ描画の仕方

$y = 2x + 1$であれば、

“`python
x = np.arange(0, 10, 0.1) # 0から10まで0.1刻みのリストxを作成
y = 2*x + 1 # x各要素の2x+1の写像としてyを作成

plt.plot(x, y) # (x, y)のグラフを描画
plt.show() # グラフ表示
“`

と書くことで以下のグラフを描ける
![capn.jpg](https://qiita-image-store.s3.ap-northeast-1.ama

元記事を表示

「箱ひげ図」に「ひと味」加えて可視化する(boxen / swarm / violin)

##概要
* [kaggleのtitanic](https://www.kaggle.com/c/titanic)のデータ可視化で思ったことのメモです。
* 「乗船した港」毎に「乗客の年齢」分布をうまく可視化したい。
* そういったときに、箱ひげ(seabornで言えばboxplot)を使うのがよくある手段
* 一方で、**他の** 可視化手段を使うと「ひと味」加える事ができるので、まとめてみました。
* 今回は、[seaborn](https://seaborn.pydata.org/)の[箱ひげ図(boxplot)](https://seaborn.pydata.org/generated/seaborn.boxplot.html)の代替として下記あたりを検討してみたいと思います。
* [boxenplot](https://seaborn.pydata.org/generated/seaborn.boxenplot.html)
* [swarmplot](https://seaborn.pydata.org/generated/seaborn.swarmplo

元記事を表示

【Python】組込み型のlistとdequeで実行時間に差が出るケース

※誤った記載ありましたら是非マサカリください(編集リクエストでもぜひ)。

# list 型と deque 型

Python の組込み型である list 型と deque 型の挙動を見ていく。

以下は一定長のリストおよびキューを生成し、その要素をで取り出していくコード。
順に1万件、10万件、100万件の長さで実行する。

“`python
import time
from collections import deque

for count in [10000, 100000, 1000000]:
# オブジェクトの初期化
l = [‘a’] * count
q = deque(l)

# list 型の操作
time1 = time.time()
while len(l) > 0:
l.pop(0)

# deque 型 の操作
time2 = time.time()
while len(q) > 0:
q.popleft()
time3 = time.time

元記事を表示

群馬県の新型コロナウイルス感染症患者の発生状況の表を作成

Web で閲覧できる次の表を作成します。
>[群馬県の新型コロナウイルス感染症患者の発生状況](https://ekzemplaro.org/corona/gunma_patient/)
![gunma_patient.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/179446/d3821646-39dc-d0de-3f1a-d1565a36dd06.png)

データのソースは群馬県です。
>[群馬県内における新型コロナウイルス感染症発生状況(令和2年3月29日現在)](https://www.pref.gunma.jp/contents/100149743.pdf)

PDF を JSON へ変換

“`bash
pdftotext -layout 100149743.pdf
#
./gunma_corona.py 100149743.txt data_gunma.json
“`

“`py:gunma_corona.py
#! /usr/bin/python
# -*- coding: ut

元記事を表示

Neural Network Console Challengeで人物画像の視線分類に挑戦した

# はじめに
2020年3月4日から3月31日の期間で行われた、[Neural Network Console Challenge(NNC-Challenge)](https://nnc-challenge.com/)というコンテストに参加しました
元々画像処理分野には興味があり、いつの日か何らかの形でアウトプットしたいなぁと考えていたので丁度良い機会でした
コンテストの最後に、自分が行ったことをプレゼンテーション形式でアウトプットする必要がありましたので、Qiitaに記事として書かせていただきました(読み難い箇所が多々あるかと思います。お許し下さい?‍♂️)

簡単にですが、コンテストの概要です

– 配布された1万枚の画像データを対象に深層学習して、AIシステムを開発
– 学習用データ提供:PIXTA
– 開発プラットフォームとして、SONY製GUIツールの[Neural Network Console](https://dl.sony.com/ja/)を使用
– 全4種類のテーマから、挑戦したいテーマを一つ選択
1. 「新しいオノマトペ(擬音語/擬声語/擬態語)に

元記事を表示

Pythonのprint出力をNode.jsが認識できない問題について

こんにちは。
こちらの記事は、Python-shellを用いたNode.jsとpythonの連携時に発生したバグの
解決方法について、自らの経験を記述しているものです。
英語が分かる方はこちらの公式ドキュメントを参照していただいた方が正確ですので
ご参照ください。
https://www.npmjs.com/package/python-shell

**バージョン**
python 3.8.1
pyenv 1.2.17
node.js 13.3.0

##問題
Node.jsからpythonのスクリプトに引数を渡して実行させ、実行結果を
Node.jsで受け取ったところ、
python側の出力では正しくjsonデータが送られているのですが、
Node.js側では空文字からなるリスト[”]しか受け取れないという現象が発生しました。
また、この現象が発生した際には、pyenvを用いて作成した環境下で行っていたのですが、
system環境で実行したところ、正常に値を受け取ることが判明し、
環境の違いによってコードが動いたり、動かなかったりする状態でした。

該当コードは以下の通りです。

元記事を表示

pandasで東京都感染者数のグラフを書く

#動機
とにかく、暇だ。新しいことにチャレンジすることが大事だとか、何とか誰かが言っていたので遠隔授業が始まる前にPythonのお勉強をしようと思いました。

#環境
OS:macOS Mojave
Pythonバージョン:Python 3.7.5rc1
実行環境:Atom ruuner

#設計
https://catalog.data.metro.tokyo.lg.jp/dataset/t000010d0000000068
から配布されているコロナ関連のcsvデータがある。これをベースに感染者数をグラフ化する。
グラフ化には、pandas,matplotlib,japanize_matplotlibを用いた。
感染者数を日毎にカウントすれば折れ線グラフを用いて簡単にグラフ化できるだろう。

japanize_matplotlibをインストールしていないと、グラフに日本語を用いることができない。
該当CSVデータはutf-8でエンコードされているものの、日本語にできないものはできないらしい。

#コード
“`python:hello.py
import pandas as pd

元記事を表示

Python起動時のエラーについて

# 発生した問題
Power prompt から Python を起動した際に

“`
Failed calling sys.__interactivehook__
Traceback (most recent call last):
File “C:\Users\taisu\Anaconda3\lib\site.py”, line 439, in register_readline
readline.read_history_file(history)
File “C:\Users\taisu\Anaconda3\lib\site-packages\pyreadline\rlmain.py”, line 165, in read_history_file
self.mode._history.read_history_file(filename)
File “C:\Users\taisu\Anaconda3\lib\site-packages\pyreadline\lineeditor\history.py”, line 82, in read_hist

元記事を表示

解析雨量(GRIB2形式)をNumpy配列として読み込む

## 概要

解析雨量(2006年~)のbinファイルに含まれる降水量をNumpyのndarray(南北3360x東西2560)として読み込みます。

気象庁の提供する1kmメッシュ解析雨量はGRIB2形式をとっていますが、独自の拡張を含むためPythonのGDALやpygribでは扱うことができません(2020年3月現在)。wgrib2を使用してバイナリダンプしたりNetCDFへ変換して読む方法もありますが、数値のみを取り出すなら直接読めたほうが便利です。

## 解析雨量GRIB2ファイルの構成

バイナリデータの仕様は気象庁の[配信資料に関する技術情報(気象編)第238号](http://www.data.jma.go.jp/add/suishin/jyouhou/pdf/238.pdf)に記載されています。データは全8節からなり、降水量を表すレベル値がランレングス圧縮で西から東向きに2560要素ずつ北から格納されています

降水量だけを読むには第5節からレベル値と”データ代表値”(1km格子を代表する降水量の10倍値)を対応させるルックアップテーブルを読み込み、第7節の符号なし

元記事を表示

多倍長演算の活用②

# 多倍長演算の活用②
Python の多倍長演算を活用する方法の第 $2$ 弾です。 前回の記事 では、多倍長整数の各bitをフラグと見て処理する方法を説明しました。この記事では、いよいよ整数を要素に持つ配列の演算を扱います。 ここからが本番です。 最後まで読んで頂けると嬉しいです。

後半では形式的べき級数との関係についても紹介します。

## 整数と配列の対応
多倍長整数を $k$ bitごとに区切って、それぞれが $k$ bit の非負整数を表していると見ることを考えます。なお文字 $k$ は、コード中も含めこの記事を通して常にこの意味で使います。

具体的には、 $0$ 以上 $2^k$ 未満の要素からなる配列 $A = [a_0,\ \ldots,\ a_{N-1}]$ について、対応する整数を
$${\rm number}(A) = \s

元記事を表示

ファイルを送るとパスワード付きzipを返してくれるDiscordBot

# はじめに
パスワード付きのzipファイルを扱う際、個人だと7-Zip、Lhaplus、zipコマンドなど使う方法があるが、正直面倒くさい。
そこで、pythonでzipを扱うpyminizipモジュールがあったので、discordにファイルを投げるとパスワード付きのzipを返してくれるbotを作りました。

#:green_book: 目次
実行環境

bot作成

コード

使い方

課題

# :wrench: 実行環境
Raspbian GNU/Linux 9

python 3.5.3

discord.py 1.2.5

requests 2.23.0

pyminizip 0.2.4

# bot作成
こちらに詳細が載った記事があります。

[Discord Botアカウント初期設定ガイド for Developer](https://qiita.com/1ntegrale9/items/cb285053f2fa5d0cccdf)

[Pythonで実用Discord Bot(discordpy解説)](https://qiita.com/1ntegrale9/item

元記事を表示

HDFで取り扱うDataTypeについての備忘録

###はじめに
HDFではDataを格納する際、numpyのdatatypeを指定する必要があります。numpyのデータ型とHDFのデータ型について以下の記事を参考に備忘録として記載します。

###Numpyでのdatatypeについて
[NumPyのデータ型dtype一覧とastypeによる変換(キャスト)](https://note.nkmk.me/python-numpy-dtype-astype/)に詳しい解説が書かれていますので、その中から今回用いる部分について引用します。一部加筆しています。
numpyでdtypeの書き方はいくつかあります。
> 各種メソッドの引数でデータ型`dtype`を指定するとき、例えば`int64`型の場合は、
> (1) データ型:`np.int64` 
> (2) 文字列型:`’int64’`
> (3)型コード型:`’i8’`
> データ型名の末尾の数字は`bit`で表し、型コード末尾の数字は`byte`で表す。同じ型でも値が違うので注意。(8bit=1byte)
>
> “`python
> import numpy as np
>

元記事を表示

PWMで輝度制御(キーボード入力でコントロール)

PWM制御でLEDの輝度を変化させるプログラムを作成しました。

“`python
#本プログラムはラズパイのターミナル上で実行してください。
#統合開発環境だとエラーになります。
import pigpio
import time
import readchar

gpio_pin0 = 18 #GPIO18でPWMを動かす
x=0 #LEDの初期輝度

pi = pigpio.pi()
pi.set_mode(gpio_pin0, pigpio.OUTPUT)

while 1:
#100Hz,x*100000のところがDuty比です。これでx%になります。
pi.hardware_PWM(gpio_pin0, 100, x*100000)

#キーボードから入力を読み取ります。
kb = readchar.readchar()
print(kb)

#uが入力されたら輝度を一段階上げます。
if kb == ‘u’:
x=x+1
print(“brightness=”+st

元記事を表示

ラズパイでLチカプログラム

初投稿です。
ラズパイでLチカプログラムを作成したので、投稿してみます。
使用しているのはmodel3Bです。

※この手の記事は探せばいくらでも出てきますので、本記事は自分自身の備忘録の意味合いが強いです。

“`python
import RPi.GPIO as GPIO
import time

GPIO.setwarnings(False) #GPIO使用時に表示されるエラーを消すための記述
GPIO.setmode(GPIO.BCM)
GPIO.setup(2, GPIO.OUT) #GPIO2を出力端子に設定

try: #try~exceptでひとかたまり
while True:
GPIO.output(2, GPIO.HIGH)
time.sleep(1) #1秒休止

GPIO.output(2, GPIO.LOW)
time.sleep(1) #1秒休止

except KeyboardInterrupt: #キーボード入力により処理を抜ける
pass #passをつけることで

元記事を表示

jpgをpngに変換しても透明度がいじれなかったからなんとかした

#はじめに
pythonでjpgをpngに変換しても透明度がいじれなかったので,力業で解決した話

#環境
– Windows 10
– VSCode
– Python 3.7.3

#単純に変換してみる
「python convert jpg to png」とかでググると[Pillow](https://pillow.readthedocs.io/en/stable/index.html)が出てくると思います.

公式を見ながら下記のようにインストール

`pip install Pillow`

[ここ](https://datatofish.com/jpeg-to-png-python/)を参考にサンプルを書くと

“`python:jpgToPNG.py
from PIL import Image

#絶対パスも可
img = Image.open(‘input.jpg’)
img.save(‘output.png’)
“`

これで一応PNGができるが,透明度をいじるソースを書くとエラーをはく
ちなみに,ペイントを使って変換した画像はきちんと透明度をいじれる

#問題点

元記事を表示

PythonでMongoDBのODMを使用しよう

# 前書
この記事は[PythonでMongoDBを入門しよう](https://qiita.com/Syoitu/items/db192385a4b2e4884ed5)という記事の続編になりますが、
前回の記事を読んでいなくても内容がわかる構成にしています。
もしMongoDBに興味があれば、最後まで付き合っていただけると幸いです。

# 環境構築

### MongoDB
この記事ではDockerを使用して環境構築行います。
ローカル内で直接MongoDBを入れたい方は前回の記事を参考にしてください。:point_up_tone1:

“`yml:docker-compose.yml
version: ‘3.1’

services:

mongo:
image: mongo
restart: always
ports:
– 27017:27017
environment:
MONGO_INITDB_ROOT_USERNAME: root
MONGO_INITDB_ROOT_PASSWORD:

元記事を表示

OTHERカテゴリの最新記事