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

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

【Python】積上げ式のAccessDBのうち、最新データのみ抽出する

# 課題
AccessのSQLではグループごとにソートする機能(ランク付け)が備わっていない。
Pythonの **groupby()** と **rank()** を活用し、AccessのDBに接続することで解決する。

# 現状
積上げ式のDBに下記のようなデータが入っているとする。
(履歴を残すために、1つのIDに対して複数データを積み上げる仕様になっている。)

|顧客ID|顧客名|開発担当|進捗状況|更新日|
|:–|:–|:–|:–|:–|
|1|A会社|青木|1.コーディング|2024/04/04|
|1|A会社|井上|2.テスト|2024/05/05|
|1|A会社|上野|3.リリース|2024/06/06|
|2|B会社|青木|1.コーディング|2024/05/05|
|2|B会社|伊藤|2.テスト|2024/07/07|
|3|C会社|相川|1.コーディング|2024/06/06|

# 目標
1つのIDに対して最新データのみを抽出したい。
キーは「顧客ID」、最新データは「更新日」で判別する。

|顧客ID|顧客名|開発担当|進捗状況|更新日|
|:–

元記事を表示

numpy arrayの文字列化でハマった話

# numpy arrayをlist経由で文字列化する理由

Python 3.8+NumPy 1.XからPython 3.10+NumPy 2.Xに移行する時の話です。一般にはあまりやらないことだと思うのですが、numpy arrayをあえてPythonビルトインの`list`にキャストして使いたい、という場面が時々あります。重宝していたのが**numpy arrayの文字列化**の時です。numpy arrayを直接文字列化すると、スペース区切りで要素が並んでしまって使い勝手が悪かった一方で、`list`を文字列化するとカンマ区切りで要素をリストしてくれました。少なくともPython 3.8+NumPy 1.Xの世界では。

“`python3.8
>>> import numpy as np
>>> a = np.arange(10)
>>> print(a)
[0 1 2 3 4 5 6 7 8 9]
>>> print(list(a))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
“`

# Python 3.10 + NumPy 2.X への移行

元記事を表示

Docker上で自作のwebアプリを動かす。(Flask)

自作のwebアプリが動く環境をdockerを使って構築します。
## まずメリット紹介
ライブラリインストールなど面倒な作業をスキップできる。
dockerで動かすアプリごとにリソース管理ができる。

## dockerインストール
インストールしてください。
win11を使っているので docker for windowsをインストールしました。
WSL2はONにしてください。

## まずライブラリインストールリストをつくる。(requirements.txt)
自分のwebアプリがあるディレクトリまで、cmdで移動してください。
“`
cd C:\Users\sharisa\Videos\ラズベリーパイIpad
“`
仮想環境があるならば仮想環境をアクティブにしてください。
requirements.txt作成コマンドを打ちます。
“`
(myenv_pai) C:\Users\sharisa\Videos\ラズベリーパイIpad>pip freeze > requirements.txt
“`
すると、、、C:\Users\sharisa\Videos\ラズベリーパイI

元記事を表示

テーブルデータの水増し手法について

# 1. はじめに

テーブルデータを扱っていて、「**何らかのアルゴリズムを用いた学習に最低限必要なサンプルサイズが足りない。何とかしたい**!」と思ったことはないでしょうか。
例えば、下記のようなデータを扱う場合にそう思うことがあるのではないでしょうか。

– ex.1. **プライバシー**などの機微な事情から、限られたデータしか利用できない[^1][^7][^14][^15][^5]
– ex.2. **データ加工が自動化・効率化できず**、限られたデータしか用意できない(実務でありがち)
– ex.3. 正解ラベルに属すデータが極端に少ない[^15]

本資料では、こうした場合に使えるテーブルデータ向けの水増し手法の外観を示します。

# 2. テーブルデータ向けの水増し手法

一般に、**テーブルデータの水増し手法は画像のものとは異なります**。そのため画像とテーブルデータとで、**水増しを表す英単語がそれぞれ異なります**。検索するときは要注意です。

– 画像データの水増し: **augmentation**
– 元画像の反転のみならず、拡大やノイズの追加

元記事を表示

医学生がなぜプログラミングをやるべきなのか

# はじめに
こんにちは、現在医学生をしている者です。この記事では、**医学生がプログラミングを学ぶべき理由**について、私自身の体験を交えながらお話ししたいと思います。医療とプログラミング、一見全く異なる分野に思えますが、実は非常に密接な関係があります。

## プログラミングを始めたきっかけ:班決めの自動化

私がプログラミングに初めて触れたのは、配属先実習の班を決める責任を任されたときでした。膨大なデータ量に加え、考慮すべき**さまざまな制約条件**があり、手作業では非効率でミスも起こりやすいと感じました。そこで「この作業をプログラミングで自動化できたら」と思ったのが最初のきっかけです。

当初は何から始めればよいのか全く分かりませんでしたが、インターネットで検索しているうちに、Pythonが初心者にも優しく、医療分野でも多く活用されていることを知りました。私は**Google Colab**というオンライン環境を使って、[Pythonの基礎学習](https://www.python.jp/train/index.html)に取り組むことにしました。

## 最初はエラーだらけ

元記事を表示

python仮想環境をコピーして別PCで動かそうとしたけど、動かなかった。

テストPCで動かしていたwebアプリを本番PCで動かす。
## 疑問
仮想環境ごと本番PCにコピペすれば、ライブラリのインストールなどを省けるのでは?
## やってみた
### 結論: 仮想環境をコピペするだけではwebアプリは動かない
まず本番PCにテストPCと同じpythonをインストール
そしてテストPCの仮想環境ごとwebアプリを、本番環境にコピペ。

↓これはテストPCの仮想環境のライブラリリスト
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3882753/f57f8f73-48b8-70de-82cc-741118cb67f4.png)

↓これは本番PCの仮想環境のライブラリリスト
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3882753/448a45b0-0cba-28f4-947a-12ee25a7f670.png)

仮想環境をコピペするだけでは、本番PCの仮想

元記事を表示

sentence-transformers を用いた情報検索システムについて

### 開発の動機

社内の規則などを記述した PDF のドキュメント群があり、それを一括して検索できるシステムを作ろうと考えた。

### 処理の手順

#### イントラウェブサイトから PDF ファイルを DL する工程。

今回、ウェブロボットのように、あるドキュメントからその中のリンクをたどって新しいドキュメントをダウンロードすることはしない。与えられた複数の URL の PDF ドキュメントを毎日ダウンロードする。

#### PDF をテキストファイルに変換する工程。

ダウンロードした PDF ファイルをテキストファイルに変換するのには、pymupdf を使う。

#### 変換したテキストファイルを sentence-transformers に読みこませる文章にする工程。

変換したテキストファイルは、一行が文章であったり、言い回しで完結するとは限らない。そこで、PDF から変換したテキストファイルを、spacy と ja-ginza を用いて、一行が文章になるように修正する。

#### テキストファイルを sentence-transformers に読み込ま

元記事を表示

Pythonで実習配属問題を解く(線形計画法 + Pulp)

—-
![20166_color.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3246879/7548f61b-2696-399b-c86c-b42a3697c185.png)
—-
## はじめに
今回の学生の配属問題において、効率的で公平な配属を目指してアルゴリズムを開発しました。この問題を解く際に、量的功利主義の考え方を参考にしました。量的功利主義とは、最大多数の最大幸福を追求する倫理理論であり、リソースや利益を最大化しながら全体の幸福度を高めることを目指します。
この投稿では、Pythonと線形計画法を使って学部配属問題を解決する方法を紹介します。`Pulp`ライブラリを使い、各学生の希望順位に基づいて配属する問題を解きます。また、配属先の定員やNGリストも考慮します。

## 数学的背景: ナップサック問題と線形計画法
このプログラムは、学生を効率的に割り当てるために、線形計画法を用いています。特に、この問題は**ナップサック問題**に類似しています。

### ナップサック問題と

元記事を表示

プログラマー畑から見たPower Automate for Desktop基礎

# はじめに
IT未経験者に PAD (Power Automate for Desktop)を教えるにあたって、システム開発と同じノリでやったら引っかかった点をまとめてみました。

# ノーコード開発とRPAは違う
ほぼここに集約されます。Power AutomateはあくまでもRPAです。システム開発ではなく、システムの自動化です。条件分岐でやら繰り返し処理やらが最小限出てきて、ちょいちょいプログラミング言語の気配を出してきますので勘違いしないようにしましょう。
できる限りPowerAutomateでは、”順番にシステムを起動させる” & “最小限操作でのデータ移動”だけにしましょう。

# 変数の宣言がない
設定はあっても宣言はないです。変数の設定はただの代入です。
宣言しなくてもいきなり使えます。宣言の為に1アクション使うのは無駄です。

# 変数の型が変幻自在
数値型にテキスト型を入れたらそれ以降テキスト型になります。テキストを数値に変換してもとの変数に戻せます。気持ち悪いですけど、型の維持より意味の維持に注力して、変数の絶対数を減らした方がフローはわかりやすいと思います。

元記事を表示

Pythonでの数値計算:NumPyを使った配列操作と演算

## はじめに
NumPyは、Pythonでの数値計算やデータ処理を行う際に使います。特に、多次元配列や行列の操作、科学計算、データ分析、画像処理など、色々な場面で活用することができます。では、NumPyの使い方を書いていきます!

### ・配列の作成
NumPyの基本的なデータ構造はndarray(N次元配列)です。配列はnp.array()を使って作成します。

#### 1次元配列の作成
NumPyで1次元配列を作成するには、np.array()を使用します。1次元配列は、リストのように並んだ一連の数値データを表します。
“`python
import numpy as np

arr = np.array([1, 2, 3, 4, 5])
print(arr)
# 出力: [1 2 3 4 5]
“`
ここで、np.array()関数にリスト形式のデータを渡すことで、NumPyの1次元配列を作成しています。arrは配列オブジェクトで、数値データが格納されています。リストと異なり、NumPyの配列は同じ型の要素が格納されており、数値計算に特化しています。

#### 2

元記事を表示

【注意】NumPy 2.0 におけるスカラーとの演算について

## 詳しくは

https://numpy.org/doc/stable/numpy_2_0_migration_guide.html#changes-to-numpy-data-type-promotion

こちらに書いてある通りです。スカラー演算した際の出力の型が変更されたので(ex. `numpy.float32`->`numpy.float64`)、出力の型が重要になるソースコードがある場合は注意してください。

## 変更内容

version 1.26.4の場合

“`python
import numpy as np

a = np.float32(3.0) * 3.
print(a.dtype) # float64

b = np.array([3.0], dtype=np.float32) * np.float64(3)
print(b.dtype) # float32
“`

version 2.0.0の場合

“`python
import numpy as np

a = np.float32(3.0) * 3.
print(a.dtype)

元記事を表示

【AWS,Python】LambdaのログをCloudWatchに残す

下記記事で行っているWEBスクレイピングのlambdaのログをCloudWatchに残します。

https://qiita.com/otaruit/items/837f2eacf69e5917dd1d

# CloudWatchの設定
ロググループ、「ロググループを作成」と進みます。

![Screenshot 2024-09-10 095839.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722467/c6e79306-946c-fd3d-bc79-cfa10382ac80.png)

# ロググループの設定
グループ名、保存期間を設定します。
![Screenshot 2024-09-10 100011.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722467/e3402706-3ceb-9704-0f35-b7678ff4b9eb.png)

#
# コード修正

ログを出力させるようにprint()で要

元記事を表示

Toxを活用したPythonプロジェクトの品質向上ガイド

## 第1章: Toxの概要と基本

Toxは、Pythonプロジェクトのテストを自動化し、複数の環境で実行するためのツールです。開発者は、Toxを使用することで、異なるPythonバージョンやライブラリバージョンでプロジェクトをテストし、一貫性を保つことができます。

Toxの基本的な使用方法は以下の通りです:

1. プロジェクトのルートディレクトリに`tox.ini`ファイルを作成します。
2. `tox.ini`にテスト環境と実行コマンドを定義します。
3. コマンドラインで`tox`を実行します。

以下は、簡単な`tox.ini`の例です:

“`ini
[tox]
envlist = py36,py37,py38

[testenv]
deps = pytest
commands = pytest
“`

この設定では、Python 3.6、3.7、3.8の環境でテストが実行されます。各環境で`pytest`がインストールされ、テストが実行されます。

Toxを使用することで、開発者はプロジェクトの互換性を簡単に確認でき、継続的インテグレーション(CI)プロセスにも容

元記事を表示

Python で作る協調フィルタリング入門:カレー推薦システム

## はじめに
カレー好きの皆さん、こんにちは!「もっと自分好みのカレーに出会いたい」「友達にぴったりのカレーを提案したい」と思ったことはありませんか?今回は、そんな夢を叶える魔法のような AI 技術、「協調フィルタリング」を使って、カレー推薦システムを作ってみましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2648069/f005a4c4-dd5f-d5ec-4c3e-effd421499ec.png)

## この記事で学べること

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2648069/bce95d9f-a829-e671-0e28-216652e7d403.png)

カレー好きの皆さん、協調フィルタリングを学ぶことで、こんな素敵な体験ができるんです:

1. **AIの実践的な使い方を知る**:
NetflixやAmazonなど、普段使っているサービスの

元記事を表示

Windows上でJupyter Notebookを実行してみる

## `Jupyter Notebook`の特徴と利便性
### 1. **対話的なコーディング**

– **セルごとの実行**: コードをセル単位で実行できるため、プログラム全体を再実行する必要がない。エラーや結果をすぐに確認し、必要な箇所だけ修正・再実行が可能。
– **即時フィードバック**: コードを実行するとすぐに結果が表示されるため、デバッグや検証が非常に効率的。

### 2. **リッチな出力のサポート**

– **グラフや図表の表示**: `matplotlib` などのライブラリを使って、コードの結果をグラフや図表として表示できる。画像、ビデオ、HTMLコンテンツなどもインラインで表示可能。
– **Markdown サポート**: セル内で Markdown を使ってテキストや数式、リンクを記述できる。これにより、コードに注釈を付けたり、ドキュメントとしても活用できる。

### 3. **ドキュメントとコードの一体化**

– **ノートの共有**: コードとその結果、説明、注釈を一つのファイルで保存できる。データサイエンスや教育現場で、実行例とともに文書

元記事を表示

データサイエンス統計

“`
import numpy as np
import scipy.stats as stats
import matplotlib.pyplot as plt

# Sample data
data = np.random.normal(0, 1, 1000)

# Statistical metrics
mean = np.mean(data)
variance = np.var(data)
std_dev = np.std(data)
skewness = stats.skew(data)
kurtosis = stats.kurtosis(data)
data_min = np.min(data)
data_max = np.max(data)

# Confidence interval (95%)
confidence = stats.norm.interval(0.95, loc=mean, scale=std_dev/np.sqrt(len(data)))

# Print metrics
print(f’Mean: {mean}’)
print(f’Varian

元記事を表示

個人的なツールの作成にPythonをよく使う2つの理由(+不満1つ)

自分は個人的に使うツールを作成する際にPythonをよく使います。
用途としては日常的な作業の自動化や、遊びで作成するアプリケーションなどです。

主に、数日で完成させた後はあまり更新しないような小さなプロジェクトを想定しています。
しっかり作り込んで公開するようなサービスはまた考え方が違ってきますが、小さいツールの作成に自分がPythonをよく使う理由を2つ挙げてみます。

## 理由1. 何でもできる

Pythonはなにかやりたいと思ったときに、そのためのライブラリがすでに存在していることが多いです。
以下に、個人で使ったことのあるPythonのライブラリの例を挙げてみます。

**自然言語処理**
– 以前Twitterボットを作成した際に、形態素解析エンジンであるMeCabを利用しました。
– 他にもGensimを使ってトピック分析を試したこともあります。
– Pythonで使える自然言語処理系のライブラリは多く存在します。

**機械学習**
– 機械学習系のライブラリはやはりPythonが最も充実しているのではないでしょうか。
– 自分は個人でディープラーニング系のモデル

元記事を表示

GitHubのスター機能からプログラミング言語のトレンドを見てみよう

### 1. はじめに
どんな言語が人気なんだろうと思ったことはありませんか?
人気なプログラミング言語はたくさんの指標で決めることはできると思いますが、
今回はGitHubのスター数を使って、
人気のプログラミング言語のトレンドを可視化してみました。
以下のPythonコードを使って、異なるプログラミング言語のリポジトリデータを取得し、
スター数を集計してグラフ化する方法をご紹介します。

具体的には2000件のリポジトリデータを取得し、
スター数を集計してグラフ化しています。

### 2. 準備

まず、以下のライブラリが必要です:

– `requests`: GitHub APIからデータを取得するために使用します。
– `csv`: データをCSVファイルに保存するために使用します。
– `pandas`: CSVファイルからデータを読み込み、データの処理や集計を行います。
– `matplotlib.pyplot`: データをグラフ化するために使用します。

これらは、Pythonの標準ライブラリ以外のライブラリなので、最初にインストールしておく必要があります。以下のコマ

元記事を表示

Pythonで〇×ゲームのAIを一から作成する その117 GUI の部分木への最善手の表示と最善手を着手し続けた場合の局面の表示

# 目次と前回の記事

https://qiita.com/ysgeso/items/2381dd4e3283cbed49a0

https://qiita.com/ysgeso/items/b5e388878fef195d8f2c

## これまでに作成したモジュール

以下のリンクから、これまでに作成したモジュールを見ることができます。

| リンク | 説明 |
|:–|:–|
| [marubatsu.py](https://github.com/ysgeso/marubatsu/blob/master/117/marubatsu.py) | Marubatsu、Marubatsu_GUI クラスの定義|
| [ai.py](https://github.com/ysgeso/marubatsu/blob/master/117/ai.py) | AI に関する関数 |
| [test.py](https://github.com/ysgeso/marubatsu/blob/master/117/test.py) | テストに関する関数 |
| [util.py]

元記事を表示

パラミコ (Paramiko) を使ってPythonでSSH接続を簡単に!

## はじめに

パラミコは、PythonでSSH接続を行うための強力なライブラリです。SSHプロトコルを純粋なPythonで実装しており、リモートサーバーへの接続やコマンド実行、ファイル転送などが簡単に行えます。この記事では、パラミコの基本的な使い方から応用的なテクニックまで、15章に分けて詳しく解説します。

## 1. パラミコのインストールと基本設定

パラミコはpipを使って簡単にインストールできます。まずは、仮想環境を作成してパラミコをインストールしましょう。

“`python
python -m venv paramiko_env
source paramiko_env/bin/activate # Windowsの場合: paramiko_env\Scripts\activate
pip install paramiko
“`

インストールが完了したら、以下のようにしてパラミコをインポートし、ログ設定を行います。

“`python
import paramiko
import logging

# ログの設定
logging.basicConfig()
l

元記事を表示

OTHERカテゴリの最新記事