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

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

データサイエンス100本ノック①~⑩

# データサイエンス100本ノック(構造化データ加工編)
練習のためにPythonで100本ノック始めました。
記録として残していきます。

スタート:2022.12

https://github.com/The-Japan-DataScientist-Society/100knocks-preprocess

GitHubにColaboratoryが用意されているので、自分のドライブにコピーするだけで簡単に始められます。

# 解答
※協会が出している書き方と同じではありません
※コードの書き方はいくつもあるので、出力としては同じものが出るようになっています

### P001
>レシート明細データ(df_receipt)から全項目の先頭10件を表示し、どのようなデータを保有しているか目視で確認せよ。
“`Python:P001
df_receipt.head(10)
“`

### P002
>レシート明細データ(df_receipt)から売上年月日(sales_ymd)、顧客ID(customer_id)、商品コード(product_cd)、売上金額(amount)の順に列

元記事を表示

ABC282回答メモ

0.はじめに
 Cまでは簡単だけどD以降異次元の難しさ。
 Cでもちょっとてこずって結局Cまででレート-14でした。

1.A – Generalized ABC
 先週丁度A~Zの文字列を使ってたので、それを利用して
 K文字分先頭から表示してACでした。

 https://atcoder.jp/contests/abc282/submissions/37325486

2.B – Let’s Get a Perfect Score
 Bにしては、ややこしい問題でした。
 なんとなく論理和とか使うとよいのかなと思いつつ
 まぁB問題なので、単純に全組合わせで
 全問正解するかをチェックしてカウントする仕様で実装しました。

 https://atcoder.jp/contests/abc282/submissions/37333475

3.C – String Delimiter
 文字列を頭からチェックしつつ回答文字列に転記していき
 ダブルコーテーションの時フラグオン
 ”,”の時、フラグがオンなら”.”に置き換えて転記
 と、単純な実装。
 テスト環境で、20万文字でも問題

元記事を表示

Lambdaのパフォーマンスチェックに便利なx-rayの基本的な書き方をまとめる

# はじめに
aws xrayはプログラムのパフォーマンス分析を行うのに非常に便利な機能です。
本記事はxrayのLambdaで使用するときの基本的な記法についてまとめた記事になります。

# 環境
使用している環境は以下です。
“`bash
$ uname -a
Linux XX 5.15.79.1-microsoft-standard-WSL2 #1 SMP Wed Nov 23 01:01:46 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux
“`
プログラムの実行環境は[aws sam](https://aws.amazon.com/jp/serverless/sam/)を使用して用意し、`requirements.txt`に`aws-xray-sdk`を追記します。
“`requirements.txt
requests
aws-xray-sdk
“`

(SAMについての基本的な使い方は[こちら](https://qiita.com/abemaru/items/b5deac7a218475e75ca1)に書いてあります。)

元記事を表示

Prefectを試用した

 本記事は,「[株式会社RetailAI X Advent Calendar](https://qiita.com/advent-calendar/2022/retail-ai-x)」の18日目の記事です.昨日の記事は,@utamoriさんの「[Hankoを使ってAndroidでPassKeyログインするやつをやりたかった](https://zenn.dev/uta_mory/articles/hanko-androd-login)」でした.

## 端書

 以降の記載内容は次の資料を参考にして書かれております.

– [Prefect Docs](https://docs-v1.prefect.io/)
– [Prefect 2 Docs](https://docs.prefect.io/)

また,使用した環境は次のとおりです.

– macOS Ventura 13.0.1
– pyenv 2.3.5
– python 3.9.5
– pip 22.3.1
– prefect 1.4.1

### 目的

 pythonを用いた開発業務に携わる中で

元記事を表示

MLOpsにおけるML-based Software Delivery Metrics

DevOpsの状態に関する最も憤慨した研究では、著者は、エリート/高性能組織のソフトウェア開発と提供の有効性を捉える4つの主要な指標、つまり展開頻度、変更のリードタイム、平均復元時間、および変更失敗率を強調しました。これらのメトリックは、MLベースのソフトウェア配信を測定および改善するのに役立つことがわかっています。次の表では、各メトリックの定義を示し、MLOps に接続します。

|Metric |DevOps |MLOps|
|:–|:–|:–|
|展開頻度 |組織はどのくらいの頻度でコードを運用環境にデプロイしたり、エンド ユーザーにリリースしたりしていますか? |ML モデルのデプロイ頻度は、 1)モデルの再トレーニング要件(頻度の低いものからオンライントレーニングまで)。モデルの再トレーニングには 2 つの側面が重要です 1.1) モデル減衰メトリック。 1.2) 新しいデータの可用性。 2) デプロイ プロセスの自動化のレベル (手動デプロイ と 完全に自動化された CI/CD パイプラインの間)。|
|変更のリードタイム |コミットされたコードから本番環境で正常に実

元記事を表示

PythonとSeleniumとWebDriverでDownload完了簡易判定と待機

“`python
import datetime
import itertools
import os
import time
“`

“`python
_ = all([x for x in os.listdir(f”{os.getenv(‘USERPROFILE’)}\\Downloads”) if x.endswith((“crdownload”, “tmp”))] and not time.sleep(1) and not print(f”{f'{datetime.datetime.now()}'[:-4]} download in progress…”) and i for i in itertools.repeat(1))
“`

※`import`を必要に応じて記述ください。
※`C:\Users\USERNAME\Downloads`がダウンロードフォルダの場合のコードです。
※`C:\Users\USERNAME\Downloads`に`foo.crdownload`や`bar.tmp`があるとループ処理状態になります。

tmp ⇒ crdown

元記事を表示

paizaラーニング「i 番目の出力 3 Python3編」

https://paiza.jp/works/mondai/array_primer/array_primer__string_i-thinput_step3
#### 私の解答
“`Python3
n, m = map(int,input().split())
S = [“”] * m
values = input().split()
for i in range(m):
S[i] = values[i]
print(S[n-1])
“`
#### 解答例
“`Python3
values = input().split()
N = int(values[0])
M = int(values[1])

S = [0] * M
values = input().split()
for i in range(M):
S[i] = values[i]

print(S[N – 1])
“`

元記事を表示

paizaラーニング「文字列の配列の入力 2 Python3編」

#### 私の解答
“`Python3
li = [x for x in input().split()]
for ele in li:
print(ele)
“`

#### 解答例
“`Python3
S = [“”] * 10
values = input().split()
for i in range(10):
S[i] = values[i]

for s in S:
print(s)
“`

元記事を表示

paizaラーニング「i 番目の出力 Python3編」

https://paiza.jp/works/mondai/array_primer/array_primer__string_output_step3
#### 私の解答
“`Python3
li = [“good”, “morning”, “paiza”,”813″, “pa13”]
print(li[3-1])
“`
#### 解答例
“`Python3
li = [“good”, “morning”, “paiza”, “813”, “pa13”]
print(li[2])
“`

元記事を表示

paizaラーニング「全要素の出力 Python3編」

https://paiza.jp/works/mondai/array_primer/array_primer__string_output_step2
#### 私の解答
“`Python3
li = [“good”, “morning”, “paiza”,”813″, “pa13”]
for a in li:
print(a)
“`
#### 解答例
“`Python3
li = [“good”, “morning”, “paiza”, “813”, “pa13”]
for ele in li:
print(ele)
“`

元記事を表示

paizaラーニング「要素数の出力 Python3編」

https://paiza.jp/works/mondai/array_primer/array_primer__string_output_step1
#### 私の解答
“`Python3
li = []
li.append(“Hello”)
li.append(“paiza”)
li.append(“1234”)
li.append(“pa13”)
print(len(li))
“`
#### 解答例
“`Python3
li = [“Hello”, “paiza”, “1234”, “pa13”]
print(len(li))
“`

元記事を表示

paizaラーニング「要素の挿入 Python3編」

https://paiza.jp/works/mondai/array_primer/array_primer__elm_insert
#### 私の解答
“`Python3
N, M, K = map(int, input().split())
A = [int(x) for x in input().split()]

A.insert(M-1, K)
for ele in A:
print(ele)
“`
解答例2とほぼ同じでした。
#### 解答例1
“`Python3
values = input().split()
N = int(values[0])
M = int(values[1])
K = int(values[2])

A = [0] * N
values = input().split()
for i in range(N):
A[i] = int(values[i])

A.insert(M – 1, K)

for a in A:
print(a)
“`
#### 解答例2
“`Python3
N, M, K = map(i

元記事を表示

requestsを使って自分なりに解説

# 前提
* 外部APIから値を取得する際にrequestsの扱いをggrことが多いので自分用に雑多に残しておきます。
* GETメソッドを使用する機会が多いのでgetを解説していますが他メソッドも渡すパラメータ数以外は同様のやり方でOK。

# 実施準備
①requestsは標準モジュールではないので pip にてインストールが必要
“`
$ pip install requests
“`

②各プロジェクト・モジュールの準備
“`
└── sandbox/
├── external_api.py
“`

③今回使用するAPI => [天気予報API](https://weather.tsukumijima.net/)

# requests 使用例(GET)
“`external_api.py
import requests

# 天気予報API(今回の外部API対象Webサイト)=>さいたま市をcity=110010の形で指定して取得
url = ‘https://weather.tsukumijima.net/api/forecast/?city=1100

元記事を表示

披露宴の席次決め問題に挑戦:数理最適化の厳密解法の部分適用

[数理最適化Advent Calender 2022](https://qiita.com/advent-calendar/2022/mathematical-optimization)の18日目の記事です。本記事は、9日目の記事「[披露宴の席次を Gromov-Wasserstein 最適輸送で決めた話](https://zenn.dev/akira_t/articles/seat-opt-via-gw)」で扱ったゲストの席次決めの問題を、13日目の記事「[非線形な問題を線形な問題に変換する方法:真理値表を用いた1点排除のテクニック](https://qiita.com/iwanaga-jiro/items/361976589916fdcd1a23)」の手法を使ってアプローチした結果を紹介します。本記事は[Akira Tanimoto](https://zenn.dev/akira_t)さんに特別な許可をいただいて執筆しています。感謝申し上げます。

# 1.はじめに
本記事を読む前にアドベントカレンダー9日目の[披露宴の席次を Gromov-Wasserstein 最適輸送で決めた

元記事を表示

PySpark Tips:Python と PySpark の名前衝突を避ける etc.

# Functions のインポートにエイリアスを使う
“`python
from pyspark.sql.functions import *
“`
上記のような import 文をたまに見ますが、やめた方がいいです。
これは、Python の組み込み関数である、`sum`, `count` 等と衝突します。また、`col` などのよく利用する変数名とも衝突しやすいです。

エラー例:
“`python
from pyspark.sql.functions import *
sum([1,2,3])
> Invalid argument, not a string or column: [1, 2, 3] of type . For column literals, use ‘lit’, ‘array’, ‘struct’ or ‘create_map’ function.
“`
回避策:エイリアスを使ってインポートし、`F.sum()` 等で利用しましょう。
“`python
from pyspark.sql import functions as F
“`

# d

元記事を表示

AutoGluonでテーブルデータの分析やーる

# はじめに

これやっていきます

https://auto.gluon.ai/stable/index.html

# 開発環境
– Windows 10 PC
– Python 3.9

# 導入

pip install autogluon

(※GPUで実行する場合)
pip install torch==1.12.0+cu113 torchvision==0.13.0+cu113 torchtext==0.13.0 –extra-index-url https://download.pytorch.org/whl/cu113

~~~
from autogluon.tabular import TabularDataset, TabularPredictor
train_data = TabularDataset(‘https://autogluon.s3.amazonaws.com/datasets/Inc/train.csv’)
test_data = TabularDataset(‘https://autogluon.s3.amazonaws.com/dataset

元記事を表示

MIDIに入門してDJプレイをざっくり監視してみる

普段、DDJ-400 というPioneer社製のDJ機材を使ってDJをしています。

「PCとDDJ-400の間では、MIDIという規格で通信が行われているらしいが、MIDIってなんだろう?」
「DJのプレイを記録して、自分の癖を知りたいな」

そういった経緯から、MIDIに入門してDJプレイをざっくり監視します。

# MIDI
MIDIとは
>Musical Instrument Digital Interfaceの頭文字を組み合わせた言葉で、電子楽器やコンピュータ等のメーカーや機種に関わらず音楽の演奏情報を効率良く伝達するための統一規格[^1]

だそうです。
機器ごとの差異を吸収してくれる感じですかね。

# DDJ-400

今回使うDDJ-400にも、MIDI周りについての仕様書がありました。

https://www.pioneerdj.com/-/media/pioneerdj/software-info/controller/ddj-400/ddj-400_midi_message_list_j1.pdf

この仕様書を読むと、本機→コンピューター

元記事を表示

認証にトークンを利用する API の単体テストを書く

この記事は [Django Advent Calendar 2022 – Qiita](https://qiita.com/advent-calendar/2022/django) の 12/18 の記事です。

## 前提

– Django REST Framework を利用していることを前提とします
– JWT で認証する API のことを書きますが、JWT についてや JWT をどのように作るかについては触れません

## JWT で認証する API を作成する

JWT トークンを認証に利用する Web API のエンドポイントを書いた。

このアプリは Django を利用しているが、 `django.contrib.auth` のユーザーモデルを利用していない。そのため、ローカルで立ち上げて動かす分には JWT を Authorization ヘッダーに載せてしまえばよい。こんなふうに。

“`sh
curl -H ‘Authorization: Bearer ${JWT_TOKEN}’ https://example.com/api/foobar
“`

認証クラ

元記事を表示

恥ずかしくないPythonの書き方

## はじめに
スタンバイのアドベントカレンダー2022のための記事です。
現在、スタンバイでは主にデータサイエンスや機械学習の領域でPython言語をよく利用しています。
ささっと小さいスクリプトを書くにはとても便利だったPythonですが、徐々に大きいサーバーサイドアプリケーションやデータ処理アプリケーションでも利用することが増えてきてしまったので、Pythonの書き方をおさらいしておこうと思います。

## 前提
人に見られてしまったときに、「なにこれ変なのー」と思われない程度のPythonコードが書けるようになりたい。

## まずPEP8から大事なところを抜粋
[pep8-ja](https://pep8-ja.readthedocs.io/ja/latest/#)
* インデントはスペース4
* トップレベルの関数やクラスは、行間を2行ずつ空けて定義する
* クラス内部では、行間を1行ずつ空けてメソッドを定義する
* ドキュメンテーション文字列は`”””`で囲み、`class`や`def`の行の後に置く([docstring](https://peps.python.org

元記事を表示

ゲームで一儲けしたいので、手始めにpyxelで作ってみた【未完】

# まえがき
ARISE analyticsの北サブ(@Toitu_Prince)です。
本記事は [ARISE analytics Advent Calendar 2022](https://qiita.com/advent-calendar/2022/arise-analytics) の18日目の記事になります。

# 作ったもの
(2022/12/15現在)
result.gif

# あらすじ
生きてきた中で皆さん一度は「ゲームを作って売って一儲けしたい・・・!」って思ったことありますよね?
ただ、ゲームを作るのってハードルが高いと思ってる方は少なくないと思います。僕もその一人です。ゲームはやるほうが楽しい。
パンピーがゲームを作る時の選択肢としては、UnityとかC#が思い浮かぶかなと思うのですが、Uni

元記事を表示

OTHERカテゴリの最新記事