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

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

Pythonでフォルダ名やファイル名を一括変更

# 全てのファイルやフォルダの名前の後ろに文字を加える
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/165847/64ff9abc-4a99-ad73-3f0a-64bfc4b29701.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/165847/4c56f160-aafb-1b7b-2173-fed3b78406c9.png)

“`python
import os
dir_path = “./dirname”
dir_list = os.listdir(dir_path)
for i in range(len(dir_list)):
new_file_name = dir_list[i] + “様”
os.rename(os.path.join(dir_path,dir_list[i]),os.path.join(dir_path,new_file_n

元記事を表示

最強の言語モデルLUKEを固有表現抽出(NER)用にファインチューニングして公開してみた

こんにちにゃんです。
水色桜(みずいろさくら)です。
今回はLUKEをファインチューニングして、固有表現抽出タスク(Named Entity Recognition, NER)を解くモデルを作成していきたいと思います。
作成したモデルは[こちらのサイト](https://huggingface.co/Mizuiro-sakura/luke-japanese-base-finetuned-ner)で公開していますので、もしよろしければ使ってみてください。
今回も初心者でもたった2ステップ(ステップ1:必要なライブラリのダウンロード、ステップ2:コードのコピペ)で簡単に使えるようにしてあります。

https://huggingface.co/Mizuiro-sakura/luke-japanese-base-finetuned-ner

# 環境

torch 1.12.1
transformers 4.24.0
Python 3.9.13
sentencepiece 0.1.97

**transformersのバージョンが古いとMLukeTokenizer, LukeForQuest

元記事を表示

Pythonチートシート – List型の使い方一覧

仕事や学習の時に役立つちょっとしたチートシートを作ってみることにしました。今回は個人的にPythonの学習で一番使う機会の多い、List型の使い方をまとめてみました。

## コレクションとコンテナについて
データ型の中でも、複数の値を束ねるための仕組みをコレクション・コンテナと呼びます。Pythonにおけるコンテナは、シーケンス・セット・ディクショナリーの3型があります。
– シーケンス – 順に並んだ値を扱う。中身の重複・異なる型をあつかえる。いわゆる配列
– セット – 順序を持たず、値の重複ができない。数学の集合に近い
– ディクショナリー – キー・値の仕組みで要素を管理する。キーは重複不可・値はOK。

## シーケンスについて
シーケンス型にはlist, tuple, range等の型があります。シーケンス型の要素には、インデックス値を使ってアクセスすることができます。

listが扱えるのはイテラブルな型で、`list(iterable)`という宣言でインスタンス化することができます。他にもリスト内包表記や、`sorted(), split()`といったメソッドがlis

元記事を表示

AWS Lambdaを使って特定ログを通知する

# Index
1. [挨拶&背景の話](#1-挨拶–背景の話)
1. [構成](#2-構成)
1. [実装](#3-実装)
1. [感想](#4-感想)

# 1. 挨拶 & 背景の話
こんちには、アプリケーションエンジニアで働いてます。キムでございます。
この前、運用してるアプリケーション内で発生するとあるエラーを検知する処理を入れたことがあります。
そこまで素晴らしい構成ではないが、この構成を作るときに、なかなか私と似てる状況の例文がなくてここに少しでも似てる悩みがある方に役に立てれば…と思って記録して残します。

# 2. 構成
#### 前提条件
– Cloudwatch Logsを使う
– FILTER機能はすでに別処理で動いてる
– 必ずリアルタイムでキャッチアップする必要はない
– 1日1回のアラームぐらいでも構わない

要するに、Filterがすでに他のもので機能してるので、追加でなにかしたくて今回の構成を作りました。
正直Filterをもう少し汎用的に改善して運用することもいい案になったかもしれませんが、このような使い買ってもどうかなと思います。

![i

元記事を表示

Pythonの関数デコレータ

## 概要
– ラップする関数への呼び出しの前後で追加コードを実行可能
– 入力の引数や戻り値にアクセスして値を変更したり、例外を送出可能
– デバッグ、関数登録などに役立つ
– 自作でデコレータを定義する場合はfunctoolsのデコレータwrapsを使用
– 使用しない場合はhelpなどが意図しない振る舞いを行う

## functoolsのデコレータwrapsを未使用
“`python:example.py
#!/usr/bin/env python3
# -*- coding: utf_8 -*-
“””関数デコレータ
functoolsのデコレータwrapsを未使用
“””

def trace(func):
def wrapper(*args, **kwargs):
result = func(*args, **kwargs)
print(f”{func.__name__}({args!r}, {kwargs!r}) -> {result!r}”)
return result

return

元記事を表示

【NumPy】多次元配列の単一要素を参照するときは括弧を一つで指定しよう

# はじめに
NumPyで2次元配列の単一の要素を参照するとき、何気なく“array[y][x]“のように“[][]“を二つ使っていませんか?

実は、多次元配列を使うときは、“array[y, x]“のように“[]“を一つで書いた方が処理速度が速いです。本記事では、その事について実際に計測して比較しました。

# 実装
Google Colabで作成した本記事のコードは、[こちら](https://colab.research.google.com/drive/1r1r9hy4COyxg8AnO5uawGdca4jSf3Z1r?usp=share_link)にあります。
## numpyのインポート
“`python:
import numpy as np
“`
NumPyのバージョンは1.21.6で実装しています。

# 結果
Google Colabのセル内を[timeit](https://docs.python.org/3/library/timeit.html)で計測しました。100ループ(“-n 100“)を10セット(“-r 10“)した結果

元記事を表示

【python】bit全探索を実装する3通りの方法

# はじめに
この記事ではbit全探索というアルゴリズムを3通りの方法で実装します。
具体的には、bit全探索を用いると解ける次の問題を3通りの方法で解いていきます。
[C – たくさんの数式](https://atcoder.jp/contests/abc045/tasks/arc061_a)
この記事ではbit全探索がどのようなアルゴリズムであるかの説明はしませんので、わからない方は適宜調べてください。個人的には以下の記事がわかりやすいと思います。

https://drken1215.hatenablog.com/entry/2019/12/14/171657

# これから解く問題「[C – たくさんの数式](https://atcoder.jp/contests/abc045/tasks/arc061_a)」について
この問題は次のようにして解けます。
1. 入力で与えられる`S`の文字と文字の間に、`+`を挟む方法は$2^{N-1}$通りある。
1. それらすべてを列挙するためにbit全探索を行う。
1. for文で回したbitの1が立っている場所を、`+`を挟む場所と対応

元記事を表示

綺麗なインペインティング Pytorch-MADF の使い方

# ランキングに入る高品質モデル

**input**
![cased7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/235259/e1ba53c0-7324-0bd3-282f-f0a24f79f1ed.png)
**mask**
![case7_mask.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/235259/5fec2d6d-585b-6c4c-aacc-600d15a05a42.png)
**result**
![0ed06863-445a-4cce-8ee9-38285f7344f5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/235259/a12426bd-773f-daca-b76f-6b9fbe4e6bef.png)

Paper with code places2インペインティング部門でLamaに次ぐ第4位に入

元記事を表示

Dataplex(Data Catalog) でカスタムエントリを更新する – カラムの description を変えてみる

[Dataplex](https://cloud.google.com/dataplex)(統合前の[Data Catalog](https://cloud.google.com/data-catalog)) では、[BigQuery](https://cloud.google.com/bigquery) などのスキーマ情報は自動的に登録されますが、これに加えて外部のサービスのメタデータも任意に管理対象とすることができます。例えば、RDBMS のスキーマ情報や Hadoop/Hive の Hive Metastore のスキーマ情報などです。

これらのスキーマ情報は、Dataplex の[カスタムエントリ](https://cloud.google.com/data-catalog/docs/how-to/custom-entries#python)というものを使うことで管理できます。API が用意されているのでそちらを利用して任意に運用ができます。一方で、いくつかの特定のデータベースに対しては、Connector が用意されていてそれを利用することで簡単にスキーマ情報を Datap

元記事を表示

Pythonで書くBuilderパターン

## 概要
– コンストラクタに対して数多くのパラメータをセットする必要がある時に、代わりに使うことが推奨されている実装方法
– メジャーな実装方法
– GoF
– Effective Java
– Javaで書かれることが多いので今回はPythonを用いて実装

## Builderパターンなし
“`python
#!/usr/bin/env python3
# -*- coding: utf_8 -*-
“””builderパターンなし
“””

class People:
def __init__(self, name, sex, age):
self._name = name
self._sex = sex
self._age = age

def __repr__(self):
return f”People(name = {self._name}, sex = {self._sex}, age = {self._age})”

if __name__ == “__main__

元記事を表示

AWSで実現した不動産新着物件情報のサーバレス巡回通知システム

# 不動産新着物件情報のサーバレス巡回通知システム

![名称未設定.drawio.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1042708/f4a4dd67-98fd-fc6e-c3f6-c6d70830bee3.png)

[掲載元](https://github.com/PGtanuki/reproject)

AWS各サービスを連携させ、SUUMOの検索結果を巡回して新着物件情報を通知します。
https://suumo.jp/
※requestsを用いたクローリングは直接的に利用規約違反にはなりませんが、負荷をかけることは禁止されています。新着物件情報は頻繁には更新されないので、1時間に1回以上か、朝昼晩くらいの感じにしましょう。AWS無料枠の範囲に抑える観点からもそのほうが適しています。

## 使ったAWSサービス
+ EventBridge Scheduler
+ Lambda
+ SNS
+ DynamoDB(SUUMOのみならRDSでOK)

## EventBridge

元記事を表示

scikit-learn カリフォルニア住宅価格データの前処理に関する見解(コピペ利用可)

scikit-learnのボストン住宅価格のデータをインポートすると、以下のメッセージが出力されます。倫理的な問題があり、scikit-learnとしてはカリフォルニア住宅価格データの利用を推奨しています。したがって今後は、カリフォルニア住宅価格データの活用が増える可能性があります。そこで、この記事では、カリフォルニア住宅価格データの前処理について見解を述べたいと思います。

[![Image from Gyazo](https://i.gyazo.com/3a30c72c126c57792170df02b18e42c8.png)](https://gyazo.com/3a30c72c126c57792170df02b18e42c8)

## カリフォルニア住宅価格データは、どのようなデータか?
scikit-learnからカリフォルニア住宅価格データを取得し、DESCRキーの情報を確認します。

“`py
import pandas as pd
import seaborn as sns
from sklearn.datasets import fetch_california_h

元記事を表示

pymysql.err.programmingerror inf can not be used with mysql 対策

## pymysql.err.programmingerror inf can not be used with mysql というエラーがでた場合

例えばデータフレームのカラムの pct_change() などで予想外の値が生じて
MySQLのテーブルに格納できない場合など、、、

“`
df = df.replace([np.inf, -np.inf], np.nan)
“`

正負の inf を replace

元記事を表示

pythonメモ

# mipでエラーが出る (M1 Mac)
https://zenn.dev/ohtaman/articles/install_python_mip_m1

元記事を表示

PythonでFizzBuzz問題をいろいろな書き方で表現してみる

# はじめに
プログラミングは専門ではなかったとはいえ、FizzBuzz問題というのがあるのを今更知って、面白そうなのでいろいろ考えてみたメモです。

### FizzBuzz問題とは
プログラミング言語で初歩的なプログラムを作成する能力があるかを見分ける簡易な試験としてよく知られているそうです(私は知りませんでしたが…)
ルール
「1から100までの数字を画面に表示する」
「3の倍数のときは数字の代わりにFizzと表示する」
「5の倍数のときは数字の代わりにBuzzと表示する」
「3かつ5の倍数のときは数字の代わりにFizzBuzzと表示する」

https://ja.wikipedia.org/wiki/Fizz_Buzz

# コード
## 一般解
もっとも一般的な回答
“`Python:
for i in range(1, 101):
if i % 15 == 0:
print(‘FizzBuzz’)
elif i % 3 == 0:
print(‘Fizz’)
elif i % 5 == 0:

元記事を表示

【Python】Excelと密に連携可能なpandas.DataFrameのサブクラス【Pandas】

# はじめに
昨日、Jupyter上にExcel風のスプレッドシートを作成する記事を拝見しました。
そして思いました。
**シームレスに本家Excelとデータを受け渡しできれば、それが一番最強なのでは**
と。

つまり「Excelでインタラクティブにデータを触りたい場合にはExcelにデータを渡して、Excelで編集したデータをPythonで使用したい場合にはExcelからデータを受け取る。」この当たり前の動作を、ファイル入出力などの面倒な操作を介さずに即座に行えれば非常に捗りそうです。

![Desktop 2023.01.17 – 17.35.21.05.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/501281/f15f218e-bd54-ca5d-c3aa-a7cee55713d7.gif)

# どうしたか
Pythonで表形式のデータを扱う定番といえばPandasのDataFrameです。このクラスを継承して、Excelとの連携機能を追加します。

# 実装例
`win32com`は日時

元記事を表示

AtCoder Beginner Contest 285 C問題解説(Pythonコード付き)

# はじめに 

 本記事はPythonでAtcoderにチャレンジしているけど、Pythonはコード例がないため解説がわかりにくい!と感じている方を対象としています。
 私自身大してレートも高くないので、不備等あるかもしれませんがご了承くださいm(_ _)m
 質問や指摘などもコメント等に書いてくださったら対応していきたいと考えていますのでどしどしコメントしてください。(内容がわかりにくいぞ!みたいな文句でもオールオッケーです笑)
# AtCoder Beginner Contest 285 [C問題]
 問題のURLはこちらです。[AtCoder Beginner Contest 285](https://atcoder.jp/contests/abc285/tasks/abc285_c)
# 使う手法 
今問題ではN進数の考え方を利用していきます。 
N進数とは、あらかじめ定められたN種類の記号や数字を列べることによって数を表す方法です。
普段私たちが使っている数は、0~9の10個の記号(数字)を用いているため、10進数です。
今回の入力「S」はアルファベット26文字で

元記事を表示

LightsailのPythonをアップデート

## 環境
VPS:AWS Lightsail
OS:Debian 11.5
git:2.30.2
## pyenvをダウンロード
“`
$ git clone https://github.com/pyenv/pyenv.git ~/.pyenv
# pyenvをclone

$ echo ‘export PYENV_ROOT=”$HOME/.pyenv”‘ >> ~/.bashrc
$ echo ‘export PATH=”$PYENV_ROOT/bin:$PATH”‘ >> ~/.bashrc
# 環境変数を定義

$ echo -e ‘if command -v pyenv 1>/dev/null 2>&1; then\n eval “$(pyenv init -)”\nfi’ >> ~/.bashrc
# pyenvの初期化処理を追記

$ exec “$SHELL”
# シェルの再起動
“`

## 不足パッケージをインストール
下記は「Ubuntu/Debian/Mint」の例ですが
その他のOSの場合は下記から確認できます。
https://github.com/

元記事を表示

noxで環境変数を消して実行

[Nox](https://nox.thea.codes/en/stable/index.html)で環境変数を消してコマンドを実行するにはどうしたら良いか?

既存の環境変数を上書き指定するなら`session.run(env={‘FOO’: ‘bar’})`が使えますが削除はできません。`session.run(env={‘FOO’: None})`はエラーになります。

また`os.environ`で消しても効果はありません。コマンド実行時に適用される環境変数は`session`の中に保存されているためです。

`session`の中に保存されている環境変数を直接操作することで、実行時に適用される環境変数を、削除も含めて自由に編集できるようです。

“`py
@nox.session
def good(session):
“””環境変数FOOを削除してコマンドを実行。”””
session.env.pop(‘FOO’)
session.run(‘/usr/bin/printenv’, external=True)
“`

元記事を表示

SSIMオートエンコーダでMVTecのtileを学習

# SSIMを構築して結果を確認した

ここでMVTecのタイルを使用してSSIMオートエンコーダでの検証を行う。
https://www.mvtec.com/company/research/datasets/mvtec-ad

正常の入力

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3079535/67f469a7-754f-825f-0669-cb4c32c14969.png)

異常の入力

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3079535/5e744f2c-17bc-23e0-1911-b7cbed689403.png)

とする。
googlecolabのGPUを使用するので、グレースケール変換して実行する。

## 結果
図の見方
縦軸 上から入力、出力、差分となっている
横軸 枚数 となっている

### 正常
![image.png](https://qi

元記事を表示

OTHERカテゴリの最新記事