- 1. 【基礎から】PythonでExcel扱えるようにする(5)テキストデータの読み込み~エクセルに書き込み
- 2. 【Python】容量の大きなファイルを後ろから読み込む方法
- 3. ALOS-2 / PALSAR-2のSAR画像で災害状況を分析
- 4. 【基礎から】PythonでExcel扱えるようにする(4)テキストデータの読み込み
- 5. Terraformと生成AIでAWSインフラ構成図を自動生成する方法
- 6. 角度の平均を計算する
- 7. 【基礎から】PythonでExcel扱えるようにする(3)セルへのアクセス
- 8. wslでmanim
- 9. Python データサイエンティストのためのPandas技5選:パフォーマンス最適化とメモリ管理
- 10. 電磁気学
- 11. 「リーダブルコード」を身につける【第Ⅰ部】
- 12. 【時系列波形異常検知 part2】DAMPによる時系列ディスコードの探索 (Python実装例付)
- 13. 【GitHub Actions】自作Pythonパッケージを自動ビルドしてPyPIとGitHubリリースまで一気にデプロイする
- 14. Gradio APIを使ってCurlで画像ファイルを入力して推論を行う
- 15. 【データ分析】における基礎集計及びモデリングから考察までの流れを解説
- 16. 【Python】Seleniumで読み込み待ちができない場合の対処方法
- 17. OpenAI API Timeout処理の方法(2024/8/10現在)
- 18. python `operator.attrgetter` でオブジェクトの複数の属性を取得する
- 19. 【基礎から】PythonでExcel扱えるようにする (2) Excelファイルのデータ構造
- 20. PyOTPでAWS IAMのMFAを突破する
【基礎から】PythonでExcel扱えるようにする(5)テキストデータの読み込み~エクセルに書き込み
## 目的
テキストファイルから定型部分の取り込みからエクセルファイルへの書き込みをできるようにする。## step6:テキストファイルの読み込み~エクセルに張り付け
“`python:
import openpyxldef step06():
print(“step06”)wb = openpyxl.Workbook()
ws = wb[“Sheet”]# テキストファイルオープン(UTF-8形式)
with open(‘./lifedata_man_2023.txt’, encoding=’utf-8′) as f:# 1行読み込み(先頭行)
line = f.readline()
# コピーする行番号を1にする
num_line = 1
# データがあるだけ繰り返す
while line:
# 1行のデータを表示(改行部分を除く)
line_1 = line.rstrip(“\
【Python】容量の大きなファイルを後ろから読み込む方法
# この記事を読むとできること
下記のような場合に、メモリと時間を使い過ぎずにファイルを読み込むことができます。– 必要なデータは最後の方にある
– ファイルの容量が大きい
– 大量のファイルを処理する# はじめに
大学での研究で解析をしている際に**必要なデータは最後の方にある**かつ**大量のファイルを処理する**ので、ファイルを後ろから読み込み解析することで効率的に解析したいということがありました。ファイルの容量が小さい場合は下記のようにすべて読み込んで反対からループすれば良いです。
“`Python
with open(‘sample.txt’) as f:
lines = f.readlines()for line in reversed(lines):
print(l)
“`しかし、私が解析するデータはファイルの容量が大きく、すべて読み込むことは難しいです。
そこで、容量の大きいファイルをメモリを使い過ぎずに後ろから読み込むコードを作成しました。
# 本文
## コード全体
最初にコード全体を載せておきます。
処理の中
ALOS-2 / PALSAR-2のSAR画像で災害状況を分析
はじめて衛星画像を触ってみたので、ノートを兼ねて分析手順を書きます。
# 画像のソース
ALOS-2(だいち2号)のサンプル画像を使います。今回は1月に配布された能登半島のL2.1(GeoTIFF)データを使って分析します。L1.1のデータを使うと、バイナリファイルの処理といくつかの補正処理などが必要で、初心者向けではないので、一定程度の処理済みのL2.1を使います。
https://www.eorc.jaxa.jp/ALOS/jp/dataset/open_and_free/palsar2_l11_l22_j.htm
# 参考するソースコード
今回はTellusの記事を参考して、特に「2時期のSAR強度画像を用いたRGB疑似カラー合成画像による浸水範囲の推定」の部分の手順を再現してみます。
https://tellusxdp.github.io/start-python-with-tellus/tellus_disaster.html
# ファイルの中身を確認
ダウンロードしたzipは画像データのtifといくつか付随するファイルがあります。特にテキストファイルの中に重
【基礎から】PythonでExcel扱えるようにする(4)テキストデータの読み込み
## 目的
テキストファイルから定型部分の取り込みをできるようにする。## step5:テキストファイルの読み込み
“`python:
def step05():
print(“step05”)# テキストファイルオープン
with open(‘./lifedata_man_2023.txt’, encoding=’utf-8′) as f:
# 1行読み込み(先頭行)
line = f.readline()
while line:
# 1行のデータを表示(改行部分を除く)
print(line.rstrip(“\n”))
# 次の行を読み込み
line = f.readline()# 動作部
step05()
“`#### 動作結果(terminal)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com
Terraformと生成AIでAWSインフラ構成図を自動生成する方法
このガイドでは、Terraformの状態ファイルを解析して、AWSインフラストラクチャの構成図を自動生成する方法を説明します。
TerraformのAWSの構成図を可視化してみる④
DiagramsでPythonスクリプトをLLMに書かせてみた!
カスタマイズ性は向上するけど精度が。。。 https://t.co/UwpA8jKdYH pic.twitter.com/kJTcG2XG4d— Maki@Sunwood AI Labs. (@hAru_mAki_ch) 角度の平均を計算する
# 問題設定
角度を出力するセンサーがあるとします。
ただし、そのセンサーは完全に正確な値を出す理想的なセンサーではなくて、一定の誤差を含んだようなデータを出力する、現実世界のセンサーであるとします。
たとえば、本当の角度は60°なんだけど、そのセンサーで測定すると、データが58°, 59°, 63°, 61°, 57°, 64°, …と各測定で少しずつずれたデータが取得できる、という感じです。
こういった現実世界の角度センサーの出力値の平均値を求めてみましょう。
角度データは0°から360°の範囲で出力されるとします。
簡単な問題のようですが、意外な落とし穴があるものです。
# うまくいかない方法 : 足してデータ数で割る
平均というのは「足してデータ数で割る」。定義に従った実装はこんな感じでしょうか。
“`python
def mean_angle(angles: list[float]) -> float:
return sum(angles) / len(angles)
“`60°付近でブレのあるデータ
“`python
angles【基礎から】PythonでExcel扱えるようにする(3)セルへのアクセス
## 目的
OpenPyxlでセルへのデータ更新ができるようにする。## step1:新規ワークブックの作成
“`python:
import openpyxldef step01():
print(“step1”)# Excelファイルの新規作成
wb = openpyxl.Workbook()wb.save(‘input_file_step01.xlsx’)
wb.close()# 動作部
step01()
“`#### 動作結果(エクセルファイル:input_file_step01.xlsx)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/176596/b6d03928-054c-38dd-78ca-5ea3e20c260f.png)### シートでの座標関係
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1
wslでmanim
# 概要
wslでmanimやってみた。
開発環境構築編。# 環境
windows11
wsl(wsl2じゃない)
ubuntu 22.04# 手順
“`
>sudo apt update>sudo apt install build-essential python3-dev libcairo2-dev libpango1.0-dev ffmpeg
>sudo apt install python3-pip
>pip3 install manim
“`
# サンプルコード
“`
from manim import *class Test(Scene):
def construct(self):
func = lambda pos: np.sin(pos[0] / 2) * UR + np.cos(pos[1] / 2) * LEFT
stream_lines = StreamLines(func, stroke_width=2, max_anchors_per_line=30)
self.add(stream_lines)
str
Python データサイエンティストのためのPandas技5選:パフォーマンス最適化とメモリ管理
## はじめに
Pandasは強力なデータ操作ツールですが、大規模データセットや複雑な操作を扱う際には、パフォーマンスとメモリ管理が重要になります。この記事では、中級者から上級者向けのPandasテクニックを紹介し、効率的なデータ処理方法を解説します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2648069/3c58ff98-eeb8-eb43-554a-d03fa9a14e9b.png)
## 1. データ型の最適化
適切なデータ型の選択は、メモリ使用量とパフォーマンスに大きな影響を与えます。以下は、100万行のデータセットに対する最適化の例です。
“`python
import pandas as pd
import numpy as np
from datetime import datetime, timedeltadef mem_usage(pandas_obj):
if isinstance(pandas_obj, pd.DataFrame):
電磁気学
“`
import numpy as np# Constants
epsilon_0 = 8.854187817e-12 # Permittivity of free space (F/m)# Function definitions
def point_potential(q, b, d):
return (q / (2 * np.pi * epsilon_0)) * np.log(b / d)def cylinder_capacitance(b, d):
return 2 * np.pi * epsilon_0 / np.log(b / d)def combined_capacitance(a, b, c):
return 2 * np.pi * epsilon_0 / np.log(b / a) + 2 * np.pi * epsilon_0 / np.log(c / b)# Input parameters
q = 1e-9 # Point charge (C)
a = 0.01 # Inner radius of inn
「リーダブルコード」を身につける【第Ⅰ部】
# はじめに
リーダブルコード(オライリー)では、「読みやすさの基本定理」を下記のように定義している。
> コードは他の人が最短時間で理解できるように書かなければいけない。ここで、「他の人」とは、何週間後の自分自身も含む。また、「理解できる」とは、バグに気づき、コードの修正を行い、他のコードとの連携を設計することができることを指す。
本記事では特に、「表面上の改善」によるリーダブルコード達成方法を取りまとめる。
# 表面上の改善
コードの表面的な改善を行ううえで下記3項目に意識を向けると、十分に読みやすくなる。
1. [命名方法](#命名方法)
1. [コードの視認性](#コードの視認性)
1. [コメント](#コメント)
## 命名方法
### 情報を詰め込んだ名前
変数名、関数名、クラス名…に名前を付けるときは、簡潔かつ具体的に命名すべきである。
– デザインパターンだと…
– 適切に情報(変数の目的や値の意味)を伝えることができる(コメントが不要になる)
– バグの発見に役立つ
– アンチパターンだと…
– 長ったらしく、コードのレイアウト的に難あり
【時系列波形異常検知 part2】DAMPによる時系列ディスコードの探索 (Python実装例付)
>**[TL;DR] 以下の論文紹介とpython実装: Lu, et al. “Matrix profile XXIV: scaling time series anomaly detection to trillions of datapoints and ultra-fast arriving data streams.”,KDD2022.**
# §1. はじめに
[前回](https://qiita.com/k-kotera/items/ec621e2a73bf6e14b19c)は単変量時系列異常検知にて最強 [1] [2] の**時系列ディスコード**(Time Series Discords)の紹介と、その探索アルゴリズムとして**DRAG** [3] を紹介しました。しかしながら、DRAGは2007年に提案された方法であり、しばしばレトロ感があるため、今回は時系列ディスコード探索における令和最新版の**DAMP**(Discord Aware Matrix Profile) [4] と呼ばれるアルゴリズムを紹介します。名前からお察しの通り、DAMPは以前紹介した[*
【GitHub Actions】自作Pythonパッケージを自動ビルドしてPyPIとGitHubリリースまで一気にデプロイする
自作のライブラリをリリースするときに、ローカルでビルドして、TestPyPIにアップロードして確認して、PyPIにアップロードして、最後にタグ切ってリリースして・・・
面倒なのでGitHub Actionsでデプロイできるようにしました。## この記事で目指すこと
リモートにタグをpushした際に、自動でPyPIにパッケージをアップロードし、GitHubにリリースを作成する。
ローカルからtagをpushすると、、、
“`
git tag vX.X.X
git push origin vX.X.X
“`以下順番で自動的にデプロイされる
1. testPyPIへのアップロード
2. PyPIへのアップロード
3. GitHub上にリリースを追加しソースコードを配布下記画像のようなワークフローを作成します。
![Screenshot 2024-08-09 at 17.18.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1622041/55ba543a-d487-7349-eebe
Gradio APIを使ってCurlで画像ファイルを入力して推論を行う
ドキュメントが整っていなかったので手順をまとめました。
参考
How to curl a Gradio App
https://www.freddyboulton.com/blog/gradio-curl# コードの準備
以下のapp.pyファイルを作成する。
“`python
import gradio as gr
from transformers import pipelinepipe = pipeline(
task=”depth-estimation”,
model=”depth-anything/Depth-Anything-V2-Small-hf”,
)def estimate_depth(image):
return pipe(image)[“depth”]demo = gr.Interface(
api_name=’estimate_depth’,
fn=estimate_depth,
inputs=gr.Image(type=”pil”, label=”Input Image”),
o
【データ分析】における基礎集計及びモデリングから考察までの流れを解説
今回はデータ分析における流れを備忘録を兼ねて記録していきます。
**製作途中で公開していきますが、随時更新していきます。**
今回のもくじです。
1. データ確認
1. 今回使用するデータ
1. データ分析の目的
1. データ確認
1. データ説明
1. 欠損値確認
1. 異常値確認
1. 基礎集計
1. モデリング
1. tips# データ確認
## 今回使用するデータ
今回使用するデータは[Bank Marketing](https://archive.ics.uci.edu/dataset/222/bank+marketing)を使用させていただきます。こちらのデータはURLから詳細を閲覧することができます。
## データ分析の目的
今回の目的は**顧客が定期預金に申し込むかどうか**を予測することを目的としています。こうした目的の確認は見落としがちですが、非常に重要なプロセスになります。また、分析方針で悩んだ際や次の手が思いつかない場合にはこうしたところに立ち返り状況を整理することも重要になります。
## デー
【Python】Seleniumで読み込み待ちができない場合の対処方法
# はじめに
ページを読み込み終わる前に、後続の処理を実行してしまい、処理が失敗してしまう事象が発生した。
## 環境
Python 3.12.4
Selenium 4.23.1
Windows 10 22H2
# 起きた問題
ページの読み込みが終わる前に、後続の処理を実行してしまい、処理が失敗してしまう事象が発生した。
サンプルコードは、ログインを自動化する処理のコードである。
サンプルコードでは、ログインID入力欄、パスワード入力欄、ログインボタンが読み込まれる前に、ログインID・パスワードを入力し、ログインボタンを押下する処理が発生する。
## サンプルコード
“` python:auto_login.py
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_condition
OpenAI API Timeout処理の方法(2024/8/10現在)
## 概要
OpenAIでAPIリクエストを送っても,responseが得られずに固まってしまう現象に困っている方へ.Timeout時間を設定し,一定時間返答がなければリクエストをやり直すことで回避できます.
## 環境
python=3.8
openai=1.38.0## ChatCompletionのキホン
PythonでGPTを使いたければ次の型がキホンですね.
openaiライブラリのバージョンによって変わってくるので環境に注意です.
“`python
from openai import OpenAIclient = OpenAI() #必要に応じてapi_keyなど設定
messages = [
{“role”: “system”, “content”: “You are helpful assistant.”},
{“role”: “user”, “content”: “Hey ChatGPT, how are you?”}
]response = self.client.chat.c
python `operator.attrgetter` でオブジェクトの複数の属性を取得する
## はじめに
Pythonでオブジェクトの属性を取得する際、通常は直接 `object.attribute` のような形でアクセスします。しかし、複数の属性を動的に取得したい場合や、高階関数で属性を扱う場合には、`operator.attrgetter` が非常に便利です。この記事では、`operator.attrgetter` の使い方と、複数の属性を一度に取得する方法を紹介します。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2648069/6824dc5d-a18c-da15-3668-41af69f9b45d.png)
## `operator.attrgetter` とは
`operator.attrgetter` は、Pythonの標準ライブラリ `operator` モジュールに含まれる関数です。この関数は、指定された属性名(複数可)に基づいてオブジェクトから属性を取得するためのcallableオブジェクトを返します。
![image.png](https://
【基礎から】PythonでExcel扱えるようにする (2) Excelファイルのデータ構造
### 目的
OpenPyxlで扱うExcelファイルのデータ構造を示す。### データ構造図
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/176596/5ed2583d-4d18-f7be-63f5-1ef2fa146987.png)
### ワークブック(Workbook)
1) Pythonで扱っている間はRAM上にデータがある
2) 保存するときは、saveする
3) アクセスが終わったら、closeをする### ワークシート(Worksheet)
1) 異なるファイルのシートにはアクセスできない
2) 新規作成時は、”sheet”という空のシートが1つ作成される### セル(Cell)
1) 縦方向をrow, 横方向をcolumnで座標を示す
2) “A1″と(1,1)は同じ座標を指す
3) Cell内に属性を変更/更新することでデータが書き換わる#
[本編へ戻る](https://qiita.com/YossyIto/items/ae822beb7350
PyOTPでAWS IAMのMFAを突破する
# はじめに
MFAについて調べている過程でPythonのPyOTPというライブラリを見つけました。PythonからOTP(ワンタイムパスワード)の6桁の数字を生成するものです。https://github.com/pyauth/pyotp
これを使うとMicrosoft AuthenticatorやWinAuthなどを使うのと同じことがPythonでできることが分かりました。他のMFAにも利用できると思います。
OTP は RFC6238 という規格で標準化されている模様。
https://tex2e.github.io/rfc-translater/html/rfc6238.html
# 準備
Pythonを実行できる環境が必要です。今回はEC2にPythonを入れて利用します。
https://qiita.com/talomina/items/20fd7f1575fe30f9f23a
PyOPTを利用するために必要なライブラリを用意します。
“`bash:pyotpのインストール
sudo pip3 install pyotp
“`:::note
名