Python3関連のことを調べてみた2021年12月26日

Python3関連のことを調べてみた2021年12月26日

Don’t Get Fooled by Data

## Introduction

Hi, I’m Kensuke from the Research and Development team in ZEALS. My position in R&D is data analytics, ranging from BI consolidation to hypothesis testing for enhancing the chatbot experience. As a data analyst with three years of experience, I wish to cover the nature of data in this article. “Don’t get fooled by data”.

## Background

ZEALS end-users are users that transitioned from the website to the chatbot that we provide; thus, data mainly consists of users’ actions during

元記事を表示

djangoでsqliteの代わりにMySQLを利用する

# 目的
djangoのチュートリアルなどは基本的に準備の要らないsqliteで行ってきたが、より実務に合わせたものにしたく、使われることの多いMySQLを今回は利用する
# 実施環境
### ハードウェア環境
| 項目 | 情報 |
|:-:|:-:|
| OS |macOS Catalina(10.15.7) |
|ハードウェア | MacBook Air (11-inch, Early 2015) |
|プロセッサ | 1.6 GHz デュアルコアIntel Core i5|
|メモリ | 4 GB 1600 MHz DDR3 |
|グラフィックス | intel HD Graphics 6000 1536 MB |
### ソフトウェア環境
| 項目 | 情報 |
|:-:|:-:|
| homebrew | 3.3.8 |
| mysql | Ver 8.0.27 for macos10.15 on x86_64 |
| python | 3.8.12 |
| django | 3.1.2 |
| anaconda | 4.10.1 |
|

元記事を表示

グラフDBで構成情報を可視化したい:neo4j篇

* 本記事は2021/12/12のアドベントカレンダー原稿を落とした私が後日追加した記事です

以前、仕事の必要に迫られてシステムのNW構成を把握するためにneo4jを使う機会があったため、また使い始めてみようと改めて触りました。
ローカル環境のJupyterLabから同じくローカル起動のneo4j serverにクエリすることで、AWS構成情報のグラフ化を試しました。

## はじめに
冒頭からなんですが、但し書きです。
本記事を作成する中で断念したことは次の通りです。

– [aws/graph-notebook](https://github.com/aws/graph-notebook)のウォークスルーをJupyterLab環境で動かす
– JupyterLabではなくJupyterノートブック前提のnbextensionであり、拡張機能に互換性がなさそうだったため中止しました
– Neo4jのWebコンソール同等の可視化グラフ
– グラフ構造の可視化にあたっては色々と実装上の調整が必要だったため、触りだけ確認しました
– その辺りの操作性だけ先に確認し

元記事を表示

async/awaitなしでジェネレータをコルーチン的に動作させる

Pythonでコーディングしていると、簡単な状態機械の実装など、たまに関数にコルーチン的な動作をしてほしくなるときがある。ただasync/awaitとかイベント駆動の仕組みをいちいち書きたくない場合も多い。

そんな時に、ジェネレータの`yield`文を使って値をやり取りすることで、イベント駆動の仕組みを作らなくても逐次的に関数(というかジェネレータ)と値をやり取りすることができるようになる。

## ポイント

1. ジェネレータとして問題のルーチンを定義する
– 内部的には`yield`文で値を返し、その返り値として値を受け取る。
1. ジェネレータに対して`iter()`でイテレータを生成する。
– イテレータの`send()`メソッドで値を渡しつつ、その返り値としてジェネレータからの値を受け取る。
– `send()`メソッドを使い始める前に、**一度だけ**`next()`を呼んでジェネレータを「起動」しないといけない。

## サンプル

“`python
>>> def shifter():
… # 一度next()を呼び出すことで、以下のルー

元記事を表示

Pythonの並列処理multiprocessingによる処理時間の向上を計測

# はじめに
この記事ではPythonの標準機能であるmultiprocessingを実際に動作させて、その効果を確認する。
また、並列処理したい関数は複数の引数を持つことが多いと思うので、複数引数を扱うサンプルコードを作成した。

https://docs.python.org/ja/3/library/multiprocessing.html

ドキュメントに記載の例で簡単に動作を試すことができるが、速度の向上が確認しづらかったため簡単な処理サンプルを作成して処理速度の向上を測ることにする。

“`python
from multiprocessing import Pool

def f(x):
return x*x

if __name__ == ‘__main__’:
with Pool(5) as p:
print(p.map(f, [1, 2, 3]))

# 標準出力に以下が出力されます:
[1, 4, 9]
“`

## 補足
2乗にする例では、おそらくmultiprocessingを処理するオーバーヘッドのため、以下サンプルより処

元記事を表示

djangoでmysqlを使うときに”Authentication plugin ‘caching_sha2_password’ cannot be loaded…”と出たとき

# 目的
djangoでsqliteの代わりにmysqlをデータベースとして利用すること。
# 結論
djangoでmysqlを使うときに”Authentication plugin ‘caching_sha2_password’ cannot be loaded…”とエラーが出た場合は、
**ユーザーの認証方法をmysqlclientが非対応だがデフォルトであるcaching_sha2_passwordからmysql_native_passwordに変更する必要がある。**
# 実施環境
### ハードウェア環境
| 項目 | 情報 |
|:-:|:-:|
| OS |macOS Catalina(10.15.7) |
|ハードウェア | MacBook Air (11-inch, Early 2015) |
|プロセッサ | 1.6 GHz デュアルコアIntel Core i5|
|メモリ | 4 GB 1600 MHz DDR3 |
|グラフィックス | intel HD Graphics 6000 1536 MB |
### ソフトウェア環境

元記事を表示

Bots使ってSlack勤怠Bot制作メモ

## 前書き
YouTubeで`Bots`使用してSlackBotを制作する動画を拝見しましたので、メモとして残します。

## Botsの新規追加
Botsはslack botの一種であります、Appに`bots`で検索していただければ出てきます。
![E02543D7-D417-4723-B921-DC3A9863D38E.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/320164/c928fd38-bf34-7dc8-fb9b-648122685179.jpeg)

`追加`を押して頂けると、`ユーザー名`入力の画面が表示されます、入力して`ボットインテグレーションを追加する`をクリックしましょう。
![3BBE1803-0321-4A27-93B8-8DEA98718FBE.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/320164/2f547582-69db-d67c-5a26-10a302e1c773.j

元記事を表示

kibela APIを利用したQiita Contributionっぽいものを作った話

[パーソンリンク アドベントカレンダー](https://qiita.com/advent-calendar/2021/personlink)25日目です!?
今日で2021アドベントカレンダーも最終日です。
個人的には今年のアドベントカレンダーは結構書いたなーと思っております。(文字量は気にしない!)

# 何を作ったか
[Qiita表彰プログラム](https://qiita.com/qiita-award)のパクリで社内表彰集計ロジックを作りました。

# キャプチャ
## 表紙
![スクリーンショット 2021-12-23 18.17.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/230393/788ed049-707f-023e-4cf3-14a062d2f609.png)

## 順位
![Web 1920 – 1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/230393/3369d344-31e5

元記事を表示

気象庁地震カタログを用いて経緯度と震央地名の対応表を作る

この投稿は、[地震情報アプリ界隈 Advent Calendar 2021](https://adventar.org/calendars/6729) の25日目の記事です。ご参加頂いた方々、ありがとうございました。
昨日は、はるさんの [テロップソフトのすゝめ](https://qiita.com/kanto_haru_dev/items/6da5a6d85912df1c3e70) でした。

# はじめに
気象庁が発表する地震情報では、地震の発生した場所を地名で表現します。例えば「茨城県南部で地震」「宮城県沖で地震」などという言葉をよく聞きますよね。この「茨城県南部」「宮城県沖」といった地名は**震央地名**と呼ばれ、気象情報などとは別に地震情報ならではの地域区分がなされています[^1]。

どの地域がどの震央地名で表されるかは、気象庁HPで公開されています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/565515/313df382-e72b-a20b-3309-fa4f7dbc

元記事を表示

pythonのmultiprocessing.Queueのempty()メソッドは危険

表題の通り危険なので利用を避けるべきです.
これは公式でも言及されている内容です.

代わりに以下のように判定します.

“`
if queue.qsize() == 0:
# 理想的には queue.empty() と同じ結果
# 実際には様々な問題からそうとは限らない
# 処理
“`

参考:[Why queue is not multiprocessing safe?](https://stackoverflow.com/questions/28685823/why-queue-is-not-multiprocesing-safe)

元記事を表示

政府統計e-Stat APIを使ってデータ分析しましょう

## はじめに
自分は人事給与ERP製品を開発する会社で、統計帳票の開発を担当しまいます。
統計帳票というのは、毎月勤労統計表や賃金台帳、公務員調査表など、全国調査にあってはその全国的変動を毎月、毎年明らかにすることを、地方調査にあってはその都道府県別の変動を毎月、毎年明らかにすることを目的とした調査です。
日々大量なデータを見る私は、これらのデータを分析することで、社員の退職や昇給などの原因がわかるではないかを気づきました。

ビッグデータ活用が近年話題になり、国や民間企業等が提供している主要な統計データを分析し、提供しているWebサービスもあります。
https://dashboard.e-stat.go.jp/
ただ、分析した内容と画像がややシンプルであり、データをもっと深堀りできるではないかを考えています。
もし、これらのデータを手には入れたら。。。と思いつつ、e-State APIがあることに気づきました。

e-State APIというのは、政府統計の総合窓口(e-Stat)で提供している統計データを機械判読可能な形式で取得できるAPI機能です。今回e-StateのAPIを

元記事を表示

AWSで機械学習モデルを動かしてみる

機械学習について学びたいと思い、手始めにAWSの10分チュートリアルを参照しながら機械学習モデルをコーディングしてみました。

<<参考>>Amazon SageMaker を使用して機械学習モデルを構築、トレーニング、デプロイ

https://aws.amazon.com/jp/getting-started/hands-on/build-train-deploy-machine-learning-model-sagemaker/

このチュートリアルに沿ってPythonコードを書くと銀行の顧客データからその顧客が新規商品の契約をしてくれるかどうかを予測する機械学習モデルを簡単に作成できます。

ただ、チュートリアルに沿うだけだと一体何をしているのか分かりづらいので、自分なりにこのコードがしていることをまとめてみましたので参考にしていただければと思います。

#具体的にやっていること

![AWS-SageMaker.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1926542/79716881-0

元記事を表示

Flask + SQLAlchemy でよさそうなトランザクション管理

## よくあるやつ

[Transactions using Flask-SQLAlchemy](https://saswatac.medium.com/transactions-using-flask-sqlalchemy-f5b26d23e2f2) にあるように

“`python
from contextlib import contextmanager
@contextmanager
def transaction():
try:
yield
db.session.commit()
except Exception:
db.session.rollback()
raise
“`

を作成して、それを

“`python
def hogehoge():
with transaction():

“`

と処理を書く。

記述ところが少しなら良いけど、色んなところにあると、少しめんどくさい。

## よさそうなやつ

“`python
from functools impor

元記事を表示

【python】dict変数に苦労した(1)

2021年8月からAWSのLAMBDAとdjangoでpythonの仕事をやり始めたんですが、これまでPHPばかりに偏ってたものでpythonに慣れるのに結構苦労した事の中で、dict変数があったのでその辺の事を書いてみます。

###1.PHPだと連想配列は簡単に作れたが、dictは宣言が無いとエラーになって勝手に作ってくれない
PHPでは、自分の必要な時に

“`php
$sample1[“hoge”] = “aaabbbccc”;
“`
のように書けば、配列変数\$sample1が作成され、$sample1[“hoge”]という連想配列が作成され、aaabbbcccを代入してくれる。

pythonのdict変数でこれをやると、NameErrorとなってしまう。

“`
C:\project\python_test>python3 sample1.py
Traceback (most recent call last):
File “sample1.py”, line 2, in
sample1[“hoge”] = “aaabbbccc”

元記事を表示

SPSS Modelerの文字列に関するCLEM関数をPythonで書き換える

以下の記事を参照しつつ、SPSS Modelerのclem関数を使って文字列型のレコードを加工してその処理をPythonで書き換えてみます。

https://qiita.com/Makimaki2020/items/35ab02a7375325e678c1

加工に使用するデータは、以下から取得しました。
・「データサイエンティスト協会スキル定義委員」の「データサイエンス100本ノック(構造化データ加工編)」https://github.com/The-Japan-DataScientist-Society/100knocks-preprocess
・海外在留邦人数調査統計 https://www.e-stat.go.jp/stat-search/files?page=1&layout=datalist&toukei=00300100&tstat=000001055779&cycle=0&tclass1=000001116075&file_type=1&result_page=1&tclass2val=0

上記の記事で紹介されているとおり、文字列関数の実行結果は主に3種類です。
1

元記事を表示

【RestAPI?】初心者向けにざっくり解説

# 目的
最近流行のpython, djangoを触ってAPIを実装しようとしたときに、django_restframeworkなるもので簡単にRESTAPIが実装できると言うことを知ったものの、**RestfulなAPIとはどのようなものか完全には理解できていなかったため**ここで同じように曖昧なイメージを持っている方々に共有してみむとせん。

# 前提
API自体の知識は多少ある方。
RestfulAPIと言う名前を聞いたことがある方

# 概要
REST APIは「REST」と呼ばれるAPIの設計思想に基づいたweb用のapiのこと。
RESTには以下の4原則がある。
①ステートレス
②統一インターフェース
③接続性
④アドレス可能性
以上の四つの原則に従って実装されたAPIのことをRESTAPIと呼ぶ。
具体的に4原則について説明する

# 詳細
### 1. ステートレス
サーバーにユーザーセッションなどの「状態」(ステート)を持たない(レス)前提で情報のやり取りを行う。
→ やり取りが一回ごとに完結する。
→ 2度目のアクセスをしてもサーバー側は何も記憶がない

### 2

元記事を表示

Pyrightのpip経由でのインストールと利用を試してみる

自作Pythonライブラリで、GitHub Actionsなどでのmypyでの型チェックは入れているのですが、追加でPyrightでのチェックも入れたいと思い検証してみたのでその備忘録です。

※普段はCI的に組み込んだりはしていないもののVS Code上でのPylance(内部でPyrightが使われています)での型チェックは使っていました。

※PyrightやPylanceとはなんぞや・・・という方はちょっと古いですが以前記事を書いているのでそれらをご確認ください。

https://qiita.com/simonritchie/items/7492d1c1a3c13b2f27aa

https://qiita.com/simonritchie/items/33ca57cdb5cb2a12ae16

# そもそも何故今までmypyのようにCIに組み込んでいなかったのか

mypyはpipでさくっと入れることができます。一方でPyrightはPythonで書かれているわけではなくpipだけでさくっとインストールが効きませんでした(node.jsなど依存関係で色々考えたりが必要になっ

元記事を表示

【Python】Tkinterを使って✜マークを記述

PythonとTkinterを使って✜マークを記述するコード。

## 実装コード

“`python
from tkinter import *

window = Tk()
window.geometry (“600×600”)
window.attributes(“-topmost”,True)
window.title(“sample window”)

c = Canvas(window,width=600,height=600,background=”green”)

size = 3
for n in range(size):
for m in range(size):
if (n+m) % 2 == 1:
c.create_rectangle(50+m*32,50+n*32,80+m*32,80+n*32,outline=””,fill=”black”)
c.pack()
mainloop()
“`

## 実行結果

![スクリーンショット 2021-12-24 1.36.53.png](https://qiita-image-store.s3.ap

元記事を表示

【Python】turtleを使って⌘(command)マークを記述

Pythonとturtleを使って⌘(command)マークを記述するコード。

## 実装コード

“`python
from turtle import *
speed(0)
step = 2
for m in range(4):
for n in range(0,270,step):
forward(2)
right(step)
forward(200)
done()
“`

## 実行結果![スクリーンショット 2021-12-24 1.31.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/522445/5f8af3cb-dbb3-f109-f4b3-0d5eacc39f58.png)

https://docs.python.org/ja/3/library/turtle.html

元記事を表示

LINE BOT経由でRaspberry Piに接続したUSBカメラの画像を取得してみる

# 前書き
突然ですが、皆さんの家でRaspberry piは活躍していますか?
我が家ではRaspberry pi2およびpi3をそれぞれ1台持っていますが、SAMBAでのファイル共有でしか使っておらず、家族からは、「あれ必要なの?」とよく言われます。
年間電気代1500円ぐらいながら、すでに幾多のSDカードを買い替えて、そこそこ保守費もかさんでおります。
そこで、何か役に立つことをさせよう。ということで、自分の知識習得もかねて、LINEからリビングにあるRaspberry piのUSBカメラ画像を取得するプログラムを作成しました。

Qiita初投稿となりますので、上手いこと書けるか分かりませんが、ご指摘・ご質問あれば、コメントいただければと思います。

# 構成&動作
以下に構成図と簡単な動作を示します。(ちなみに図は[https://www.diagrams.net/](https://www.diagrams.net/”https://www.diagrams.net/”)を使って書きました。)
![network.png](https://qiita-image-store

元記事を表示

OTHERカテゴリの最新記事