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

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

Pythonでの Lambda関数共通レスポンスUtil

#目的
PythonでのLambda関数共通レスポンスUtilを作成方法を共有します。

#実装
“`response.py
import decimal
import json

class DecimalEncoder(json.JSONEncoder):
“””DecimalEncoder クラス
Decimal クラスを使用して保存された数値を出力するために使用されます(Amazon DynamoDBの数値を保持します)
“””
def default(self, o):
if isinstance(o, decimal.Decimal):
if o % 1 > 0:
return float(o)
else:
return int(o)
return super(DecimalEncoder, self).default(o)

def response_200(body, **kargs):

元記事を表示

Ambientに時系列グラフの作成

#環境

Python version:3.7.3
OS: Raspbian GNU/Linux 10

#やりたかったこと
・bme280とラズパイを使用して、温度、湿度、気圧を取得し、タイムリーにグラフ化したい。

#やったこと
bme280とラズパイを使用して、温度、湿度、気圧を取得できる環境は構築済みなので、どうやったらAmbientにデータを上げることができるか、色々試してみた。

温度、湿度、気圧のデータをAmbientにあげるためのコードを記述してみたが、Ambientのデータがあがらなかった。調べてみると、ラズパイのPythonのversionが2.7.16だったため、対応していなかったので、上記versionに変えてみると動作した。

コードは、SWITCHSCIENCEのコードをベースに、作成しました。出力する部分をambientがデータを取得するフォーマットに変換しているだけです。

参考にしたコードは、こちらです。
https://github.com/SWITCHSCIENCE/BME280/tree/master/Python27

#code
“`py

元記事を表示

Scapyでpcapファイルからデータを抽出する

scapyの勉強をしていた時にpcapファイルに含まれるファイルを全て抽出できないかと思い立ち、とりあえず作ってみました。その際の知識もを含めてメモとして残します。

#インストール

pipを使ってインストールが可能です。

“`python:
pip3 install scapy
“`

#基本編

下の構文でライブラリを読み込みます

“`python:
from scapy.all import *
“`

ファイルの読み込みは、rdpcapを使います。

“`python:
p = rdpcap(‘test.pcap’)
“`

pcapデータを全て見る時は、showメソッドを使います。

“`python:
p.show()
“`

“`:出力例
0000 Ether / IP / UDP / DNS Qry “b’www.qiita.com.'”
0001 Ether / IP / UDP / DNS Ans “13.230.63.181”
“`

パケット1個1個の内容を見る時は、パケット番号を指定してshowメソッドを使います。

“`pyt

元記事を表示

AOJトライに関する知識知見の記録共有:Volume0-0056

# タスク概要

Goldbach’s Conjecture

https://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=0056

# コード実装例
TIPS

1. 例外処理含む評価パターンを追加

“`Python
import pprint, sys, time
import sympy

def core(arg, adv=True, n_eg=3):
n = arg
if adv:
ip = [[i, n – i] for i in sympy.primerange(2, int(n/2) + 1) if sympy.isprime(n – i)]
else:
ip = [[i, n – i] for i in range(n) if sympy.isprime(i) and sympy.isprime(n – i) and i <= n - i] ret = [len(ip), ip[:n_eg]] return ret def ap

元記事を表示

【備忘録】Django Rest Framework のViewについて

DjangoのRest Frameworkについて学んでいます。
学んだことをアウトプットするため、備忘録を書いていきます。
今回はViewに焦点を当てました。
間違った点がありましたら、教えていただけますと幸いです。

# 関数ベースのView(一番簡単)

Responseを返却する関数型のビューです。
第一仮引数に request を受取るように定義するだけです。

“`ruby:
from rest_framework.response import Response
from rest_framework.decorators import api_view # ここにapi_viewというデコレータを記述することにより、DRFの設定が、下記ビューに引き継がれるようになります。

@api_view([‘GET’, ‘POST’]) # 引数としてHTTPメソッドを指定
def hello_world(request):
if request.method == ‘POST’:
return Response({“message”: “Got so

元記事を表示

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

元記事を表示

OTHERカテゴリの最新記事