Python関連のことを調べてみた

Python関連のことを調べてみた

# Python の文字列操作一例

 Pythonでは、文字列はリストのような性質を持ち、**リストと同じようにインデックスを使用できます**。但し、リストと違って変更できません。

 例えば、入力されたアルファベットが何番目かを出力するプログラムは次のようになります。**アルファベットの文字数は決まっているので後から変更する必要はありませんね**。(*もともと英語にJとかWがなかったように後から追加されるかもしれませんが…*)

下のコードでは、アルファベットの大文字以外が入力された場合は、エラーメッセージを出力するようにしています。
~~~Python:alphaindex.py

alphabet = “ABCDEFGHIJKLMNOPQRSTUVWXYZ”

a = input(“アルファベットの大文字を1文字入力してください”)

if a in alphabet:
print(alphabet.index(a) + 1)
else:
print(“入力されたのはアルファベットの大文字ではありません!!”)
~~~

検索にはfindメソッドを使います。該当文字列が見つからない場合は「-

元記事を表示

Python text utilities

In Python you always work with texts. And you want to do many things with texts. You want to join them, split them, transform them, search them, save them and load them.

Below are text related utilities I developed over time

“`python
import pathlib
import re
import logging
from typing import List
from collections import Counter
from gpwrap.utils.configdict.configDict import ConfigDict

def split_text_by_certain_substring_and_save(long_text, split_str, filepath: pathlib.Path):
lines = lon

元記事を表示

Pandas utilities

When working with pandas dataframes you may find below utilities useful. These perform things like converting all column names to lowercase, convert multi-level indices to columns, sort dataframes etc.

“`python
import pandas as pd
import logging
import re
from typing import List, Tuple

def make_column_names_unique(df: pd.DataFrame):
cols = df.columns.tolist()
cols_df = pd.DataFrame({‘col_idx’: cols, ‘col_name’: cols})
cols_count_df = cols_df.groupby(‘col_idx’)[[‘col_name’]].count

元記事を表示

Python list related utilities

Often in Python you work with lists and often you will be doing tasks like finding difference between two lists or intersection between two lists or their union. These are all set operations and all of these operations can be achieved with python sets. In addition you perform tasks like searching for items matching certain patterns within the list. Below are utilities that help with such tasks.

“`python
import itertools

def flatten_list_of_lists(list_of_lists):
return list(itertools.chai

元記事を表示

yfinanceで米国有価証券報告書のurlを取得

yfinaceは財務データや株価等を取得するライブラリですが最近更新があってsecfilling(有価証券報告書)も取得できるようになってました。

https://github.com/ranaroussi/yfinance/pull/2009

試しにaapl(アップル)の有価証券報告書のurlを取得してみました。

“`python
import pandas as pd
import yfinance as yf

# 企業のティッカーシンボルを指定してオブジェクトを作成
apple = yf.Ticker(“AAPL”)

# SECフィリングデータを取得
sec_filings = apple.get_sec_filings()

# データの整理:必要な情報をリストに格納
data = []
for filing in sec_filings:
# exhibits のそれぞれを別行にする
for key, value in filing[‘exhibits’].items():
entry = {
‘date’:

元記事を表示

Python 3 エンジニア認定データ分析試験に合格したので対策や勉強法など

## この記事について
この記事は【Python 3 エンジニア認定データ分析試験】受験しようとしている方に向けて書いています。試験合格した私の経験をもとにおすすめの勉強方法やこのレベルまでくれば受験しても良さそうといったことを書きます。

### 筆者のレベル
強み
・経験10年目のプログラマ
・仕事では主にコーディングをしている
・Pythonは仕事で2〜3年使っている
・半年前にPython 3 エンジニア認定基礎試験合格

弱み
・データ分析という分野は学んだことがない
・数学の知識がない

【試験結果 2024年9月受験】
![スクリーンショット 2024-09-24 13.41.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/308422/0a4daf4a-3d62-589a-bf96-73190d37fef4.png)

## 試験概要

◆受験方法
受験日:通年
試験センター:全国のオデッセイコミュニケーションズCBTテストセンター
受験料金:1万円(税別) 学割5千円(税別)

元記事を表示

コンテナ上のPythonコードをNeovimでデバッグ(nvim-dap)

コンテナで動作するPythonアプリケーションをNeovimの[nvim-dap](https://github.com/mfussenegger/nvim-dap)でデバッグする設定です。
VSCodeの記事が多い中、Neovimでの設定例が少ないため、シェアしておきます。

# 実行環境

– Neovim: v0.9.5

# プラグインの設定

さっそくですが[dein.vim](https://github.com/Shougo/dein.vim)の設定がこちらです。
他のプラグインマネージャを使用している場合は適当に読み替えてください。

細かな設定内容については説明を省略しますので、各プラグインのREADMEや `:help` を参照してください。

“`toml:dein.toml
[[plugins]]
repo = ‘mfussenegger/nvim-dap’

[[plugins]]
repo = ‘nvim-neotest/nvim-nio’

[[plugins]]
repo = ‘rcarriga/nvim-dap-ui’
depends = [‘nv

元記事を表示

DiscordBOTテンプレート with Python

2024/09時点で最新の実装まとめ

## Pipfile
– 現時点においてはPycordの利用を推奨
“`Pipfile
[packages]
python-dotenv = “*”
py-cord = “*”
tzdata = “*”
“`

## .env
“`.env
DISCORD_BOT_TOKEN=xxxxxxxx
TARGET_GUILD_ID=1234567890
LOG_DIR_PATH=.log
“`

## 実装
– 投稿用に1ファイルにまとめたので適宜分割を
“`Python
import os
from datetime import datetime
from zoneinfo import ZoneInfo

from dotenv import load_dotenv
from discord import Bot
from discord.commands import Option

# Initialize – start
load_dotenv()
DISCORD_BOT_TOKEN: str = os.getenv(‘DISC

元記事を表示

PythonのAllenNLPの初心者が躓かないチュートリアル!

## はじめに

この記事では、自然言語処理の強力なツールキットであるAllenNLPについて、詳しく解説していきます。初心者からエキスパートまで、誰もが楽しく学べる内容になっています。それでは、AllenNLPの旅を始めましょう!

## 第1章: AllenNLPとは

AllenNLPは、自然言語処理(NLP)タスクのための柔軟で使いやすいPythonライブラリです。Allen人工知能研究所が開発したこのツールキットは、最先端の深層学習モデルを簡単に構築、トレーニング、評価することができます。

研究者や開発者にとって、AllenNLPは夢のようなツールです。複雑なNLPタスクを簡単に実装できるだけでなく、カスタマイズも自由自在。さあ、AllenNLPの世界に飛び込んでみましょう!

“`python
# AllenNLPをインストール
!pip install allennlp

# 基本的なインポート
from allennlp.predictors import Predictor
from allennlp.data import Instance
from al

元記事を表示

AWS Step Functionsの実行結果をSlackへ通知する

# はじめに

AWS Step Functionsの実行結果をSlackへ通知する手順について、以下の記事では、Step Functionsの実行結果を取得し、Slackに通知する方法を紹介します。この記事では、SNS(Simple Notification Service)とAWS Lambdaを使ってStep Functionsの実行結果をトリガーし、Slackに通知を送信する流れを説明します。

# 構成
![Untitled Diagram.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1065841/9b1ef79f-827b-10b4-3062-575ed7ba49fa.png)

# 目次

1. [SlackのWebhookURLを取得](#SlackのWebhookURLを取得)
1. [SNSトピックの作成](#SNSトピックの作成)
1. [StepFunctionsの実行結果をSNSへ通知する設定

元記事を表示

スクリプト言語の自作(超簡易)

# 簡単な自作言語を作る
小規模な自作言語を作成してみます

## 言語仕様
言語の仕様を以下のように適当に決めます

– 1文はセミコロンで区切る
– 1行で構文を終わらせる(改行して文を続けることはできない)
– 関数定義の開始は `FUNCTION_BEGIN [関数名];` とし、 `FUNCTION_END;` で関数定義の終了とする
– 関数呼び出しは `CALL_FUNCTION [関数名];` とする
– 組み込み関数 AH があり実行すると 標準出力に Ah! と表示する
– 組み込み関数 YEAH があり実行すると 標準出力に Yeah! と表示する

引数の指定はできない、四則演算などは実行不可、IF文、ループ文は無い、と
こんな感じで、プログラミング言語といって良いのかというくらいやれることがありません

## ソースコードと解説

以下ソースコードとなり、ソース内コメントで解説していきます

“` python3

import re

# 組み込み関数 AH の実装
def embeded_function_AH():
print(“Ah!”)

元記事を表示

SlackBOTテンプレート with Python

2024/09時点で最新の実装まとめ

## Pipfile
“`Pipfile
[packages]
python-dotenv = “*”
slack-bolt = “*”
tzdata = “*”
“`

## .env
“`.env
SLACK_APP_TOKEN=xapp-xxxxxxxx
SLACK_BOT_TOKEN=xoxb-xxxxxxxx
TARGET_CHANNEL_ID=xxxxxxxx
LOG_DIR_PATH=.log
“`

## 実装
– 投稿用に1ファイルにまとめたので適宜分割を
“`Python
import os
import re
from datetime import datetime
from zoneinfo import ZoneInfo

from dotenv import load_dotenv
from slack_bolt import App
from slack_bolt.adapter.socket_mode import SocketModeHandler

# Initialize – start
loa

元記事を表示

Pythonでlistの中で一つ前のインデックスの要素との差を求める。

# はじめに
競技プログラミングで思いついたけど使わなかった方法を備忘録として残しておきます。

“`Python
[0,3,7,9,10]
“`
このような配列があった場合、配列の要素間の差は以下のようになります。

“`Python
#3,4,2,1
“`

これを求めるときいったんforで考えました。

“`Python:forを使った場合
A = [0,3,7,9,10]
ans=[]
for i in range(1,5):
ans.append(A[i]-A[i-1])
“`
実行時間 : 59ms

もっと早い方法がないかと模索してmapも試してみました。
“`Python:mapを使った場合
from operator import sub
A = [0,3,7,9,10]
B=A[:]
A.pop(0)
B.pop(-1)
ans = list(map(sub, A, B))
“`
実行時間 : 58ms

結果変わらず、、、
# まとめ
この後要素数を増やしたりして実行速度を測定しましたが、ほぼ同じ速度でした、今回の教訓はforもmapも同じよう

元記事を表示

植物の写真を認識するAIアプリケーション

# はじめに

1.プログラミングスクールで学習したディープラーニング(深層学習)のkerasを使った画像処理を学びました。
2.ここで学んだテクニックを使って、植物写真を認識して、それが何であるかを判定する機能を実装してみました。
3.いままで学んだことのまとめとしてQiitaの記事にしました。

# 解決したい課題

1.ユーザーの学習支援
植物の特徴や育て方、病害虫の対策などを学べる情報を提供することで、ユーザーの植物知識を向上させます。
2.パーソナライズされたアドバイス
ユーザーの特定のニーズに基づいて、植物の育成方法や手入れのアドバイスを提供します。

# 主な機能
1. 植物識別
ユーザーがアップロードした植物の写真を解析し、植物の種類を特定します。
今後さらに機能追加
2. 情報提供
植物の基本情報(学名、和名、生態など)や育成方法、適切な環境条件を提供します。
3. 病気診断
植物の病気や害虫の症状を識別し、適切な対策や治療法を提案します。

# データセット
「pl@ntNet_300k」のデータセットを利用します。
Pl@ntNet-300K は、1081

元記事を表示

Querying database in chunks

Sometimes you want to fetch data from a table using SQL like “SELECT * FROM some_table WHERE some_column in ()”. And you often have restrictions on how many records you can fetch at a time. For instance let’s say you have a table of equity prices and you want to fetch data for 10K equities but you can fetch data only for 500 equities at a time. You will want to split your 10K into chunks of 500 each and run the query iteratively to fetch batch of 500 records and in the end

元記事を表示

Date time utils

Below are some date time utils I found useful

“`python
import pandas as pd
import numpy as np
import datetime
from gpwrap.utils.date.dateUtil import to_str
from .util import calendar
import logging

def to_yyyymmdd(date):
return to_str(date, ‘%Y%m%d’)

def to_yyyymmdd_with_hyphen(date):
return to_str(date, ‘%Y-%m-%d’)

def to_mmddyyyy_with_slash(date):
return to_str(date, ‘%m/%d/%Y’)

def ppd_price_risk_date_strptime(strdate, date_pattern=’%m/%d/%y’):
return da

元記事を表示

Pythonにおける**辞書アンパック演算子の使い方

### **演算子の使い方
Pythonでは、辞書をマージしたり、キーワード引数を展開するために**演算子を使用することができます。特にFlaskを使ったアプリケーション開発において、これを活用することでコードの可読性を向上させることができます。

### 基本的な使い方
**演算子は、辞書を展開して、他の辞書や関数の引数に渡す際に利用されます。以下にその基本的な使い方を示します。

“`python
common_attributes = {
“attr1”: “value1”,
“attr2”: “value2”,
}

specific_attributes = {
“attr3”: “value3”,
“attr4”: “value4”,
}

merged_attributes = {**common_attributes, **specific_attributes}
print(merged_attributes)
“`
“`
# 出力: {‘attr1’: ‘value1’, ‘attr2’: ‘value2’, ‘attr3’:

元記事を表示

PythonでSQLiteを使ったデータベース操作

## はじめに
pythonでは標準ライブラリとしてSQLiteが組み込まれているため、外部モジュールを追加インストールすることなく、すぐにデータベース操作が可能です。データベースの接続から、データの作成、読み取り、更新、削除(CRUD操作)まで、シンプルで実用的なコード例を交えて解説していきます。

## 基本的な操作
### 1.データベースへの接続
最初に、SQLiteデータベースに接続する必要があります。Pythonではsqlite3モジュールを使って接続します。データベースはファイル形式で保存されますが、メモリ内で一時的に作成することもできます。

“`python
import sqlite3

# データベースファイルに接続(なければ自動的に作成)
conn = sqlite3.connect(‘example.db’)
“`
このコードは、example.dbというデータベースファイルに接続します。このファイルが存在しない場合、新しく作成されます。

### 2. カーソルの作成
データベース接続が確立されたら、次にカーソルを作成します。カーソルは、SQL文をデータ

元記事を表示

AF-GYSFDMAXBから読み込んだGPS情報をPCで描画してみた

# 動機

たまたま久しぶりに[`AF-GYSFDMAXB`](https://akizukidenshi.com/catalog/g/g109991/)に触れる機会があったので、PCにつないでGPS情報を描画してみようと思い立った。

[](https://akizukidenshi.com/catalog/g/g109991/)

# 環境

Windows、Mac、Linux での動作を前提に、言語は`Python`を使用。
ライブラリは、自由な座標に文字や図形を描画できる[`Pygame`](https://www.pygame.org/docs/)と、GYSFDMAXBとUART通信するために[`pySerial`](https://github.com/pyserial/pyserial)を使用した。

・ライブラリのインストール

“`terminal
$ pip install pygame
$ pip

元記事を表示

単純なのに間違える!?Pythonコードの落とし穴

# はじめに
Pythonは、初心者でも扱いやすいと言われる、シンプルで直感的な構文が特徴のプログラミング言語です。そのため、初心者から上級者まで幅広く使われていますが、シンプルだからこそ思わぬミスを引き起こすことも少なくありません。

本記事では、そんな「単純なのに間違えやすい」Pythonコードの落とし穴にスポットを当て、見逃しやすいポイントや、気をつけるべき注意点を解説します。具体的なコードを紹介するので、出力結果を予想してみましょう!

::: note
弊社Nucoでは、他にも様々なお役立ち記事を公開しています。よかったら、Organizationのページも覗いてみてください。
また、Nucoでは一緒に働く仲間も募集しています!興味をお持ちいただける方は、[こちら](https://recruit.nuco.co.jp/?qiita_item_id=29965f1915436f2cfc79)まで。
:::

# 落とし穴的Pythonコード
## 1. 最初の落とし穴:インデント
まずはPythonの最初の落とし穴、インデントです。早速ですが、以下のコードを実行するとどのよ

元記事を表示

OTHERカテゴリの最新記事