Python関連のことを調べてみた2022年12月05日

Python関連のことを調べてみた2022年12月05日
目次

Pipedreamを使ってGitHubのデイリーアクティビティをTwitterに報告する

とあるきっかけでPipedreamを使い始めたのですが、なかなか面白いサービスだったので愛用しています。
今回はPipedreamの紹介をしつつ、タイトルの通り「GitHubのアクティビティをカウント」して「Twitter上にツイートする」ということを解説してみます。

## Pipedreamとは

https://pipedream.com

### こんなサービス

いわゆる「ワークフローPaaS」です。

サービスやPipedream本体で発生する何かしらのイベントを「トリガー」として起点と定め、他のサービスなどの処理を「アクション」として連携実行させていきます。
このアクションとトリガーのセットを「ワークフロー」として定義して、管理・実行させる基盤を提供しています。

「トリガー」「アクション」「ワークフロー」というような表現を見て想像つく方はいると思いますが、古くはIFTTTやZapier、さらにはMicrosoft Power Automateあたりと類似したサービスです。

例)「Pocketで特定のタグを付けたらSlackに投稿する

元記事を表示

超高速、、だけじゃない!Pandasに代えてPolarsを使いたい理由

**PolarsというPandasを100倍くらい高性能にしたライブラリ**がとっても良いので布教します[^100]。PolarsはRustベースのDataFrameライブラリですが、本記事ではPythonでのそれについて語ります。

ちなみにpolarsは白熊の意です。そりゃあまあ、**白熊と大熊猫比べたら白熊のほうが速いし強いよね**ってことです。

[^100]: 数字は個人の見解です。なお、本記事を書いている人とPolarsとの関係は、1ヶ月くらい趣味でそこそこな規模のデータを触る際に使ってた程度です。逆にその短期間で信者になるくらい最高なライブラリだとも言えます。

# 何がいいの?
推しポイントは3つあります

– 高速!
– お手軽!
– 書きやすい!

### 1. 高速

元記事を表示

【Python】データ可視化ライブラリ Altair ハンズオン【時系列データ編】

# 概要

※[【基礎編】](https://qiita.com/keisuke-ota/items/9b51c4352f93bd755b15)からご覧になることをおすすめします。

本稿ではグラフ可視化ライブラリ [Altair](https://altair-viz.github.io/index.html) を用いた時系列データの可視化を紹介させていただきます。。

# ハンズオン公開

[WEB版](https://keisuke-h-ota.github.io/altair_practice/time_series.html)と[.ipynbファイル](https://github.com/Keisuke-H-Ota/altair_practice/blob/master/time_series.ipynb)を公開しています。よろしければご活用ください。

# 各種インポート

“`python
import urllib
import json
import pandas as pd
import altair as alt
“`

# 可視化用デモデータ読込
200

元記事を表示

【Python】データ可視化ライブラリAltairハンズオン【基礎編】

# 概要

本稿ではグラフ可視化ライブラリ [Altair](https://altair-viz.github.io/index.html) の使い方を紹介させて頂きます。Altair はデータをインタラクティブに可視化するために開発された json のフォーマット [Vega-Lite](https://vega.github.io/vega-lite/) を Python から記述することができるライブラリです。

ぜひ[【時系列データ編】](https://qiita.com/keisuke-ota/items/5657b1388fc5ad522caa)も参照してみてください。

# ハンズオン公開
[WEB版](https://keisuke-h-ota.github.io/altair_practice/basic.html)と[.ipynbファイル](https://github.com/Keisuke-H-Ota/altair_practice/blob/master/basic.ipynb)を公開しています。よろしければご活用ください。

# 可視化ツールとしての A

元記事を表示

Djangoプログラマーの強力な味方、Python 3.11の新機能Data Class Transforms(PEP 681)の紹介

[Django Advent Calendar 2022](https://qiita.com/advent-calendar/2022/django) 5日目は、Python 3.11の新機能Data Class Transforms(PEP 681)がDjangoを使うプログラマーにとっていかに嬉しいか、という話をします。

## Python 3.11の新機能Data Class Transforms(PEP 681)とは何か
この解説のサンプルコードで使用している環境は以下のとおりです。
– Python 3.11.0
– Django 4.1.3
– pyright 1.1.282

pyrightはNode.js製なのでnpmかyarnでインストールします。

### 「Django Model初期化時の型チェック問題」とは?
Django ModelはPythonの[データクラス](https://docs.python.org/ja/3/library/dataclasses.html)風の構造をしていますが、データクラスそのものではないため、初期化時に型ヒントの恩恵を

元記事を表示

世界一わかりやすい機械学習プログラミングチュートリアル

# はじめに
この記事は[Nuco Advent Calendar 2022](https://qiita.com/advent-calendar/2022/nuco)の5日目の記事です
### 対象読者
Pythonが注目されている理由のひとつは機械学習プロジェクトの主要な開発言語であるからといってもよいでしょう。多くの企業の業務システムのAIの開発言語はPythonです。そんなPythonの学習を始めてある程度文法の理解が進んできて、機械学習に触れてみたい方を対象にしています。
– Pythonの基本文法を理解している
– 機械学習を始めてみたい

### チュートリアル概要
Pythonは長年機械学習で使用されているので、ライブラリも豊富にあります。本記事では機械学習用ライブラリのscikit-learn(サイキット・ラーン)を使用して教師あり学習を行い住宅価格を予測してみます。
### 何ができるようになるか
機械学習で使われる基本的な用語を理解し、学習の全体像をつかめるようになります。

# 機械学習の目的
### 機械学習とは
機械学習を始めようとするとAI、機械学習、ディ

元記事を表示

FastAPI と Strawberry GraphQL を使って REST と GraphQL を共存させる際にしたこと

正確には”REST エンドポイントで運用するための実装をしていたところに、GraphQL エンドポイントを差し込む際にしたこと”です。

?この対応はまだプロダクションにのっておらず、より良い方法や他にも考慮すべきことが出てくるかもしれません?
? 共存に対することのみに絞った話です ?

共存に対する考慮が必要なのは REST エンドポイント と GraphQL エンドポイント の例外時のレスポンスのお作法が異なるためです。(以下の対応はREST 作法に基づいた機能を使っていたり、FastAPIの特定の使い方をしていた場合のみに発生する話なのであしからず。)

## Bearer Token のチェックをする OAuth2AuthorizationCodeBearer の調整

OAuth2AuthorizationCodeBearer はこんな感じ↓で Bearer Token に不備があった場合に、フレームワークが代わりに 401 を投げていてくれたのを、RESTに対するリクエストとGraphQLに対するリクエストでそれぞれの返し方を実装する必要がありました。

![スクリ

元記事を表示

姿勢推定の精度をval2017で評価しつつiOSでの動作を試していく

業務で姿勢推定の利用を考えたときに精度の影響を調べるタスクが出ました。
姿勢推定でよく使われている指標には、COCO test-devだとmAP、MPIIのPCKHが指標としてよく用いられています。
MPIIはご存知の方も多いですがもう何年も前からPCKHが90%を超えて飽和状態です。
COCOについては2016年のCOCO Challengeで60.5から2017年には72.1と急速に伸びた後はゆっくり上昇しており、2022年12月の現在は[ViTPose](https://github.com/ViTAE-Transformer/ViTPose)が81.1でSOTA(State Of The Art)となっている状況です。

公開されている数値だけではモバイル用にコンバートした時の精度(数値の変化、基本的に下がる)を測ることができません。
MPIIは用途によっては重要ですが、今回はPCKHはそこまで重要視していないこともあり、お手軽に試せるCOCO val2017を使って評価していくことにしました。

## この記事を読む前に必要そうな知識

この記事では主に、[OpenPose]

元記事を表示

SageMaker Model Monitor ・Clarify でML監視を実践してみる

[AI/ML on AWS Advent Calendar 2022](https://qiita.com/advent-calendar/2022/ai-ml-on-aws)の5日目です。

SageMaker Model MonitorとSageMaker Clarifyを使用して、ML監視を実践してみます。

本文中コード: https://github.com/nsakki55/code-for-blogpost/tree/main/sagemaker_model_monitoring

# ML監視
MLモデルの予測性能は、データと密接に関わっています。
本番環境のMLモデルの予測精度が劣化している要因の一つに、「学習データと推論データの分布が異なる」状況が考えられます。
このようなデータ分布の変化を「データドリフト」とML監視の文脈では呼びます。
変化の比較データとして、以下2つの組み合わせがよく取り上げられます。

– 学習データと推論データの分布の変化
– ベースライン:学習データの統計量
– 比較対象:推論データの統計量
– 推論デ

元記事を表示

Pythonあまり使っていない人が最小構成でuWSGIのエンペラーモードを発動してみた話

この記事は ハンズラボ AdventCalendar2022 5日目の記事です。

ハンズラボ AdventCalendar2022 2日目の記事として「Pythonあまり使っていない人がDjangoの動作環境を調べてみた話」を書きました。調査の際にuWSGIのマニュアルに「Emperor mode」という記述をみてしまいました。
なんだかわかりませんが、とにかくエンペラーモードという響きがカッコいい!ということで使ってみました。タイトルも多少違和感がありますが、カッコよさ重視のタイトルにしてみました。

# Emperor modeとは

Emperor modeが何かを理解しておく必要があるので公式ドキュメントを確認しておきます。
https://uwsgi-docs.readthedocs.io/en/latest/Emperor.html

ものすごく大雑把に書くと、設定ファイルを検出して、対応するuWSGIインスタンスを起動してくれるものだと思いました。
uWSGI上で動かしたいアプリケーションを作るたびに、OS設定してuWSGIサービスを追加するのは手間だから、設定ファイル

元記事を表示

wip_Fakerでリアルっぽいデータセットを作ってみる

# はじめに

pythonでデータを作るとなると大抵はnampyで乱数生成するパターンが多いですが、テストや予測学習などでもっとリアリティあるデータが欲しいと思うことがあります。
電話番号とか、住所とか、日付とか、もっとリアルに感じるデータセットを生成してみたい。

イメージとしてはtoC向けサービスの顧客情報のような構造のデータセットを作りたいです。
| カラム名 | 型 | 補足 |
| — | — | — |
| ID | 文字列 | ユニーク、英字3文字+数値8桁 |
| お名前 | 文字列 | 同姓同名パターンも可(最悪削除) |
| お名前(フリガナ) | 文字列 | 上記のフリガナ |
| サービス加入日 | 日付 | 2010/01/01~2022/06/30 |
| 生年月日 | 日付 | 1910/01/01~2003/12/31 |
| 性別 | 文字列 | 男性、女性、その他 |
| 電話番号 | 文字列 | 0から始まる11~12桁(海外の番号は除く) |
| 住所 | 文字列 | 群や区レベルまであれば十分 |
| メール配信 | 数値(フラグ

元記事を表示

FastAPI+SQLAlchemyでリレーションシップを使いこなす

SQLAlchemyはPythonでよく利用されるORMです。ですが、実際に使ってみたところ、リレーションシップの使い方にくせがあり、苦戦しました。特にSELECT時の挙動が分かりにくかったので、調査したことをまとめておくことにしました。

本記事で使用しているバージョンは下記です。

“`requirements.txt
fastapi==0.79.0
uvicorn==0.18.2
SQLAlchemy==1.4.39
PyMySQL==1.0.2
alembic==1.8.1
“`

# 1対多
1対多は、1つの親に対して複数の子がいるパターンです。
子テーブルが親テーブルのIDを外部キーとして持ちます。

## テーブル定義

親テーブルの定義はこのようになります。

“`python:models/parent1.py
from models.child1 import Child1 # noqa: F401

class Parent1(Base):
__tablename__ = “parent1_table”
id = Column(Integ

元記事を表示

【Flask】ONE PIECEの名言クイズを作った

## はじめに
Flaskの勉強中で、HTMLフォームの使い方やデータベースの操作に少しだけ慣れてきたので、その練習も兼ねて簡単なwebアプリケーションを作ってみました。ONE PIECEの名言クイズです。拙い内容ですが、備忘録として残しておきます。

## 機能

![スクリーンショット 2022-12-04 12.14.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2932655/4c760b01-0b9a-e561-b1ae-aafe206434ba.png)

こちらがトップページ。Webページ上でONE PIECEのキャラクターと名言を登録できます。登録した名言の中からランダムで出題し、その名言を言ったキャラクターを4択クイズで答えるというものです。

### クイズ

![スクリーンショット 2022-12-04 12.15.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2932655/b5975

元記事を表示

ナイーブベイズでアダルトワードをはじいてみた

# はじめに
はじめまして。オークファンに新卒で入社しました[@aucfan-kumasaka](https://qiita.com/aucfan-kumasaka)です。

業務で自然言語処理のタスクに取り組んだので、そこで学習したこと、やったことを書きたいと思います。

具体的には、
– 目の前の商品名が不適切(=アダルトなど)かどうか判定したい

というタスクです。今回はscikit-learnのナイーブベイズ分類器を使用してこの問題を解きました。

# 勉強したこと
## モデルについて
自然言語処理のモデルは様々ありますが、今回は手早く実装でき、学習も容易なことからナイーブベイズを選択しました。

ナイーブベイズ分類器はベイズの定理をもとにしています。

例として、商品名に`DVD`という単語が含まれているときに、この商品名が不適切である確率を知りたいとします。

$P(\mathrm{adult}|DVD)$:`DVD`という単語を含む商品名が不適切である確率。

この確率が高ければその商品名を不適切だと判断できますが、直ちにこの確率を知ることはできません。しかし、次の確率

元記事を表示

3次元点群処理の技術とPythonライブラリまとめ

# はじめに
この記事は[AMBL株式会社 Advent Calendar 2022](https://qiita.com/advent-calendar/2022/ambl-rd)の5日目の記事です。

この記事では、3次元点群処理の技術とPythonのライブラリについて紹介をします。

# 3次元点群とは?
3次元点群データとは、LiDARなどの3次元測量センサによって得られた 3 次元位置情報(X,Y,Z)を持った点の集合です。
3Dデータに関して、センサや表現方法などの概要は以下の記事をご参照ください。

https://qiita.com/Livbear/items/69fe289c63632cc39133

# 3次元点群の処理と要素技術
画像処理にはハイパス/ローパスなどを用いたフィルタリングや、AIを使用した物体検出がありますが、
点群処理にも様々な処理があります。
代表的な点群処理のタスクと、その技術を各2個程度紹介します。(※大量のモデルや技術があるので筆者の独断と偏見で選んでいます)

| |従来手法 |ディープラーニング, 機械学習 |
|—|—

元記事を表示

DockerでPython実行環境を爆速で作ってみる

## 概要
「Pythonのライブラリを使って色々実験したい!でもローカル環境汚したくないしなー」と思うことがあったので、DockerによるPython実行環境の型を作ってみました

## ディレクトリツリー
“`
.
├── app
│ └── main.py
├── Dockerfile
├── docker-compose.yml
├── requirements.txt
└── .env
“`

appディレクトリの中に好きなだけpythonファイルを入れてやるというイメージです

## 使いたいライブラリをrequirements.txtに記述

“`requirements.txt
pandas
numpy
tensorflow

“`
## Dockerfile

“`Dockerfile
FROM python:3.9

COPY requirements.txt .
COPY ./app/ ./app/

RUN pip install –upgrade pip && \
pip install –no-cache-dir -r req

元記事を表示

【5日目】試しにPythonで遊んでみよう【PythonでDiscordBOTを作ろう!】

# 試しにPythonで遊んでみよう

初めてのものを手に入れたら、やっぱり遊びたくなりますよね。
というわけで、色々なものをすっ飛ばしながら遊んでいきます。

…しかし凄い適当な説明!
出来る限り分かりやすくしたいと思ったのですが、私にはこれが限界のようです!

## Pythonの実行方法
Pythonの実行方法は2種類あります。
`インタラクティブモード`と`スクリプトモード`です。

インタラクティブモードは対話モードと呼ばれ、**1行ずつコードを実行する**モードです。
ちょっとPythonでわからないことがあって、試したいときとかによく使います。
対話モードは`python`と実行するだけで始まります。
“`sh
$ python
Python 3.10.0 (default, Dec 11 2021, 16:18:22) [GCC 8.3.0] on linux
Type “help”, “copyright”, “credits” or “license” for more information.
>>> import os
>>> import sys
>>>

元記事を表示

Pythonista3 のuiモジュールを使ってアプリでアプリをつくる下準備(View編)。

この記事は、[Pythonista3 Advent Calendar 2022](https://qiita.com/advent-calendar/2022/pythonista3) の05日目の記事です。

https://qiita.com/advent-calendar/2022/pythonista3

一方的な偏った目線で、Pythonista3 を紹介していきます。

ほぼ毎日iPhone(Pythonista3)で、コーディングをしている者です。よろしくお願いします。

以下、私の2022年12月時点の環境です。

“`
— SYSTEM INFORMATION —
**System Information**

* Pythonista 3.3 (330025), Default interpreter 3.6.1
* iOS 16.0.2, model iPhone12,1, resolution (portrait) 828.0 x 1792.0 @ 2.0
“`

他の環境(iPad や端末の種類、iOS のバージョン違い)では、意図としない挙動(エ

元記事を表示

pytorch-lightningの使い方

# はじめに
この記事ではpytorch-lightningの使い方を、いい感じのプログラムで紹介します

# まず結論:ソースコードの書き方
“`python:pytorch_lightning_sample.py
import os
import pickle

import numpy as np
from PIL import Image # 画像を取り扱うために使用
import matplotlib.pyplot as plt # 画像のサンプル表示のために使用

import torch # pytorch本体
import torch.nn as nn # ニューラルネットを構成する際の基本的なモジュールが入っている
from torchvision import transforms as transforms # 画像前処理のために使

元記事を表示

discord pyでbotのコマンドをadd_command()で登録する

# 前提

この記事ではdiscord.pyを使ったdiscord botにおいて,command treeの`add_command()`を利用したコマンド登録を説明します.これに合わせて,コマンドのグループ化について少し触れます.

また,説明には以下のコードを使用し,これを発展させていきます.

サンプルコード

“`python: discordbot.py
import os
from discord import Intents, Client, Interaction
from discord.app_commands import CommandTree
from dotenv import load_dotenv
load_dotenv()

class MyClient(Client):
def __init__(self, intents: Intents) -> None:
super().__init__(intents=intents)
self.tree =

元記事を表示

OTHERカテゴリの最新記事