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

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

献血者数を予測するモデルを作成して予測結果をWebサイトに掲載してみた

## はじめに

この記事では、私が初めて個人開発に取り組んだWebアプリケーションの紹介と制作過程を振り返ります。

### 制作背景
私は大学のボランティア部に所属しているのですが、献血ボランティアに参加した際、献血事業の現状を知る機会がありました。献血により提供された血液は、献血供給量が輸血需要量を超えて余ってしまった場合、保存期限を過ぎてしまうと廃棄処分となってしまいます。一方で、輸血需要量が献血供給量を上回る場合は、他県からの血液の融通が必要となります。このような状況を知り、何かできないかと考えました。
そこで私が取り組んだのは、献血者数の月次データを基に今後3か月間の献血者数の推移を予測するモデルの開発です。供給の過不足を軽減し、必要な血液量を適切に確保することに貢献できないかと思い、今回の制作に取り組みました。

## Webサイト概要
こちらが実際に制作したサイトになります。

https://kenketsu-navi-bvf7hwdne8gyaqav.japaneast-01.azurewebsites.net/

GitHubのリポジトリです。

https:/

元記事を表示

paizaラーニング問題集「最長部分増加列」を解いてみた

https://paiza.jp/works/mondai/dp_primer/dp_primer_lis_step0

▼感想

自分で色々考えて実装したものの、
なかなかスコアが100にならなかったため、
ヒントを見て理解し実装しました。
本記事の下部に理解した内容をメモとしてまとめました。

▼コード
“`py
########## 処理0(準備) インプット,リスト定義など ###########

n = int(input())

a = [0]*n

########## 処理1 漸化式の定義、計算、出力 ##########

dp = [0]*n

dp[0] = 1

for i in range(n):
a[i] = int(input())

for i in range(1,n):
dp[i] = 1
for j in range(i):
if a[j] < a[i]: dp[i] = max(dp[i],dp[j]+1) print(max(dp)) ``` ▼変数に関するメモ ・a=[

元記事を表示

【Python練習問題】range()編

下記記事の続きです。
リストではありませんが、
関連項目として抑えておくと覚えやすいです。

https://qiita.com/taimax/items/e7c056dba12542707a34

## 3.range()

### Q.3-1:次のコードを実行した結果を答えなさい

“`python
list = range(5)
for i in list:
print(i)
“`

### Q.3-2:次のコードを実行した結果を答えなさい

“`python
list = range(2,5)
for i in list:
print(i)
“`

### Q.3-3:次のコードを実行した結果を答えなさい

“`python
list = range(0,7,2)
for i in list:
print(i)
“`

### Q.3-4:次のコードを実行した結果を答えなさい

“`python
list = range(-1,3)
for i in list:
print(i)
“`

### Q.3-5:次のコードを実行した

元記事を表示

【Python練習問題】リスト操作編

下記記事の続きです

https://qiita.com/taimax/items/8530f272d4fb6a3d531b

## 2.リスト操作

### Q.2-1:次のコードを実行した結果を答えなさい

“`python
list = [0,1,2,3,4,5,6]
list[2:2] = [100,200]
print(list)
“`

### Q.2-2:次のコードを実行した結果を答えなさい

“`python
list = [0,1,2,3,4,5,6]
list[1:3] = [100,200]
print(list)
“`

### Q.2-3:次のコードを実行した結果を答えなさい

“`python
list = [0,1,2,3,4,5,6]
list.insert(2,100)
print(list)
“`

### Q.2-4:次のコードを実行した結果を答えなさい

“`python
list = [0,1,2,3,4,5,6]
list.append(100)
print(list)
“`

### Q.2-5:次のコードを実行した結果を答

元記事を表示

【Python練習問題】リストのスライス編

# Pyhonリスト練習

下記に関する練習問題です。
解答は各自、確認しましょう。

https://qiita.com/taimax/items/b2ebdd77a18a0e9b10ec

## 1.基本的な分割

### Q.1-1:次のコードを実行した結果を答えなさい(開始のみ指定した場合)

“`python
list = [0,1,2,3,4,5,6]
print(list[2:])
“`

### Q.1-2:次のコードを実行した結果を答えなさい(終了のみ指定した場合)

“`python
list = [0,1,2,3,4,5,6]
print(list[:3])
“`

### Q.1-3:次のコードを実行した結果を答えなさい(ステップのみ指定した場合)

“`python
list = [0,1,2,3,4,5,6]
print(list[::3])
“`

### Q.1-4:次のコードを実行した結果を答えなさい(ステップが負の場合)

“`python
list = [0,1,2,3,4,5,6]
print(list[::-2])
“`

元記事を表示

シンプルなPythonで100万レコードのサンプルデータをcsvとして出力する

# 概要
データ分析やシステムテストにおいて、大量のサンプルデータを生成することが求められることがあります。この記事では、Pythonを用いて100万レコードのサンプルデータを瞬時に、CSVファイルとして出力する方法を紹介します。

## CSVのカラムとルール設定

今回、生成するCSVファイルはサイト利用者との通話データを想定しています。
以下の3つのカラムが含まれ、それぞれのルールに基づいて生成されます。

1. **サイトCV日時**
– 顧客がWebサイトでコンバージョン(購入や問い合わせなど)した日時。
– **ルール**:
– 2024年9月1日〜9月30日のランダムな日時を設定。
– 例: `2024-09-10 12:34:56`

2. **初回通話日時**
– 顧客に対して初めて通話した日時。
– **ルール**:
– 50%の確率で値が設定され、残りの50%は`null`。
– サイトCV日時より後で、10時〜20時の間にランダムに設定。
– 例: `2024-09-10 15:00

元記事を表示

株価予測モデルの作成と投資シミュレーション

### はじめに
私はこれまで株式取引に興味を持ち、資産運用の一環として株価予測の分析を進めてきました。本プロジェクトでは、株価の予測モデルを作成し、ランダムフォレストを使用して株価の上昇・下落を予測することに挑戦します。また、この予測を活用した取引シミュレーションを行い、実際の投資における収益性を評価することを目指しています。

### 解決したい社会課題
株式市場では価格変動が大きく、投資家にとってリスク管理は非常に重要です。特に、短期的な予測が困難であり、個人投資家は適切な判断ができずに損失を被るケースも多々あります。このプロジェクトでは、株価予測モデルを用いて、短期的な株価変動を予測し、投資のリスクを軽減する手法を提案します。また、取引シミュレーションを通じて、予測モデルが投資判断にどのように寄与するかを検証します。

### 分析するデータ
yfinanceのライブラリを利用して、株価データなど分析に利用するデータを取得します。

### 実行環境
パソコン:MacBook Pro
開発環境:Spyder
言語:Python
ライブラリ:Pandas、Matplotlib、y

元記事を表示

Scoopで入れたWezTermを実行したときにコマンドプロンプトを出さない方法(CraftLaunch編)

これでうれしいのは自分くらいだろうという気もしますが、もしかしたらほかにも応用できるとおもうので書いておきます。

#### やり方
こんな関数を登録しておく
“`python
def run_wezterm(info):
subprocess.Popen([“start”, “/B”, “wezterm”], shell=True)
“`
呼び出すときはこうする。
“`python
window.launcher.command_list += [
:
(‘wezterm’, run_wezterm),
:
“`

#### 経緯
アプリをWin+Rから開くときにWindowsのコマンドプロンプトが開いてアプリが開くようなのがたまーーーにあります。

僕の場合はScoopでインストールしたWezTermでした。

で、それをCraftLaunchに登録して開くと、やっぱりコマンドプロンプトが開いてそのまま残ります。コマンドプロンプトを閉じるとWezTermを巻き込んで閉じます。うーーん、

元記事を表示

ローカルLLMの進化:Llama3.2で特許検索システムを再構築!

![aozora.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3784222/28600395-305e-c9dd-257e-c338c12cdbd2.jpeg)

# はじめに
今回は、「ローカルLLM」にリベンジします。以前、ローカル環境にLLMを構築した際、その過程を記事にまとめました。しかし、結果として応答に10分以上かかることが多く、実用には程遠い状況でした。(記事公開後も再度トライしてみましたが、1時間以上応答がないことも珍しくありませんでした…)

https://qiita.com/ogi_kimura/items/45dffc2bc8334561a432

諦めかけていたところ、@coitateさんの投稿を見て、もう一度挑戦してみることにしました。Meta社から**Llama3.2**が発表され、さらに軽量化されたという記事を読んだからです。@coitateさん、素晴らしい投稿ありがとうございます!

https://qiita.com/coitate/items/0ab96c3f0

元記事を表示

Generic Viewsとは?GenericAPIView, GenericViewSetとの違い | Django REST Framework

# Generic Views(ジェネリックビュー)とは?
Django REST Frameworkが提供するジェネリックビューは、よく使われるAPIパターンを簡単に実装できるように設計されています。
これにより、モデルに基づいたビューを迅速に作成できます。
Generic Viewsを使用することで、同じようなコードを書かずに、簡単にAPIエンドポイントを作成できます。

以下の例では、UserListクラスを使ってユーザーの一覧を表示(GETリクエスト)したり、新しいユーザーを作成(POSTリクエスト)したりできます。

“`python
from rest_framework import generics
from myapp.serializers import UserSerializer
from django.contrib.auth.models import User
from rest_framework.permissions import IsAdminUser

class UserList(generics.ListCreateAPIView):

元記事を表示

自作Webアプリを供養する話

## あらすじ

先日、アプリを実装してリリースをしようと準備をしていたのですが、関連するサービスの終了が発表されリリースできなくなってしまいました。簡単なサービスではありましたが、実装したアプリのアウトプットとしての説明兼供養としてこの記事を書きました。

## 開発に至る経緯

自分は毎期アニメを見るようなオタクなのですが、あのアニメいつ始まるんだっけ?🤔となることが多く、パッと放送開始日を確認できるものがあればラクだなあと思っていました。既存のサービスだと放送日以外の情報も載せていてごちゃっとしていて見にくかったりページが重いケースもありました。そのためそのサクッと確認できるものを作ろうと思い、実装してみるかと思い立ったのが経緯です。
アプリの画面はこんな感じです。

![IMG_3717のコピー.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/593692/7f65fdff-0a1f-e9a5-62e5-353127d50eb9.png)

## アプリの詳細

### アーキテクチャ

![放

元記事を表示

ABC373回答メモ

# 0.はじめに
 新ARCをちらっと見てみましたが、やはり難易度は高く
 レーティングからも外れているので、今後もチラ見するくらいにとどめようかと思いました。
 ABC373は、A~Cはカンタンでしたが、D以降は難しく、3問のみACにとどまりました。
 それでもレートは+2と微増でした。ここら辺がまぁ実力なんでしょう。

# 1.A – September
 9月用の問題。単純に文字列を12回読み込み
 それぞれ、文字列の長さと、読み込み回数を比較し
 一致していれば変数ansカウントアップし
 最後にansを出力して終了としました。

 https://atcoder.jp/contests/abc373/submissions/58182428

# 2.B – 1D Keyboard
 ピアノ系問題に通ずるものがあるなと思いつつとりかかり。
 それぞれの文字の位置を記憶しておき
 最初Aの位置を変数preにセットし変数ansを0で初期化
 その後、B~Zまで
  preとチェックアルファベットの位置の差をansに加算していき
  加算後preをチェックアルファベットの位置で置

元記事を表示

OOPの三大要素について

# はじめに
 オブジェクト指向(OOP)には3つの三大要素があります。クラス、ポリモーフィズム、継承がその三大要素です。順に概要とメリットを説明していきます。

# クラス
 クラスとは、変数とメソッドをまとめたものです。そのメリットは主に以下の3つです。

* まとめる
* 隠す
* たくさんインスタンスを作る

順に説明していきます。

 クラスによって変数とメソッドをまとめることで、コード全体が整理され、見やすくなります。また、グローバル変数の適用範囲を絞ることができ、グローバル変数に関してエラーが出た際、コード全体ではなくそのクラスの部分だけを確認すればよいので、対応が楽になります。

 次に「隠す」とは、クラス内で定義した変数またはメソッドを外部からアクセスできないようにすることです。こうすることで、変数に不適切な値が入った場合、その変数にアクセスできるのは同じクラスにまとめたメソッドのみとなり、問題の原因を特定しやすくなります。

 最後に、クラスを定義するとそのインスタンスをいくらでも作ることができ、同種かつ複数の情報を扱いやすくなるのがメリットです。

# ポリモー

元記事を表示

複雑なRLC回路の過渡応答解析

# はじめに
RLC回路がもしも直列接続だけで構成されていたら、過渡解析は比較的扱いやすいといえる。というのは、分岐がなく電流はどこを計測しても同じ値を示すからである。しかし、並列の場合は分岐が存在しているので、それぞれの枝に分担される電流は異なる。ただ、それらの和は最初の分岐前のときのものと等しくなるというキルヒホッフの第一法則の情報しかわからない。そこで、今回は並列回路を含む直列回路RLC回路の過渡応答を扱う。そのためにはまず回路条件より微分方程式を導出する。次に、現代制御理論によりそれを状態方程式に直す。最後に、数値解析の一種であるオイラー法よりも精度が高いルンゲクッタを用いることで微分方程式、つまり状態方程式を解きシミュレーションを行う。

![parallel_RLC.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1686019/d829d2c8-86de-8bec-3b31-4454a5022e66.png)

# 回路設定
回路設定としては、以下のような回路モデルで考える。

![i

元記事を表示

PythonとRustでAPIの叩き方を比較する

# PythonとRustでAPIの叩き方を比較する

## 前置き
今回比較する対象は[PokeAPI](https://pokeapi.co/)を叩くプログラムをPythonとRustで書きます。

ちなみに叩くポケモンはハバタクカミです。

~~本当は種族値まで表示したかったのですがちょっとRustでの型が難しそうなので妥協しました~~

# Rustで実装
“`rust:main.rs
// インポート関連
use reqwest::Client;

type Result = std::result::Result>;
#[tokio::main]
async fn main() -> Result<()> {
// APIを叩く
let client = Client::new();
let url = “https://pokeapi.co/api/v2/pokemon/987”;
let res = client.get(url).send().await?;

元記事を表示

AI屋さんの dockerと200万トークン全文入力 追加学習済み LLMの Webアプリをクラウドデプロイ 実践編

AI屋さんの dockerと200万トークン全文入力 追加学習済み LLMの Webアプリをクラウドデプロイ 実践編

多くのAI(≒python)屋さんは、
作ったサービスをデプロイする際、困っています。
そこで、簡単に下記の要素で解決しましょう。

 AI、LLM、NN、各種モデルに
 webアプリ、API(streamlit,gradio,flask)に
 DB(SQL,NoSQL)、ストレージに
 dockerに
 クラウド、サーバーレスなど

を使うことで、独りで開発・運用・保守を行えます。
現在、pythonを使える人は最強です。
過去の開発環境の黒歴史も関係なく、
最新の開発環境とツールとpythonのみで一気通貫 開発できます。

例:docker HUB経由でwebアプリをデプロイの図

![スクリーンショット 2024-09-29 8.36.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237930/d0d20aa6-7254-2205-3089-aff89064ed07.

元記事を表示

【個人開発】自宅の水槽温度を監視するIoTシステムを開発しました

## はじめに
初めての個人開発投稿です。
過去にRaspberry PiやAWS IoTCore、DynamoDBの学習をしてアウトプットをしてきましたが、これらを技術を使って自宅の熱帯魚を飼っている水槽温度を管理するIoTシステムを開発しました。

RasberryPiを使ったエッジデバイス開発からAWSサービスを使用したクラウド環境の構築、Webアプリケーションにおけるバックエンド〜フロントエンドまでフルスタックに開発を進めました。

## システム構成
主に3部構成に分けることができます。

– 水槽周りのローカルシステム
– AWSサービスを利用したクラウド
– Webアプリケーション

![スクリーンショット 2024-09-29 8.24.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3774903/6c4f2421-dc6c-d918-7954-8dbe82f918d5.png)

### ローカルシステム
Raspberry Pi と水温センサー(DS18B20)を使用して、水

元記事を表示

[Python] 最大公約数を求める

# 最大公約数とは
皆さんご存じのように、最大公約数とは**2つ以上の正の整数の共通の約数のうち最大の数**のことです。
# 愚直に求める方法
2つの整数をa、bとします。aの約数のリスト、bの約数のリストをそれぞれ作成し、2つのリストに共通する要素の中で最大のものを求めます。
~~~Python:gcd1.py
def gcd(a, b):
a_div = []
b_div = []

div = 1
while a > div:
if a % div == 0:
a_div.append(div)
div += 1

div = 1
while b > div:
if b % div == 0:
b_div.append(div)
div += 1

c, d = 0, 0
gcd_list = []
for c in a_div:
for d in b_div:

元記事を表示

AWS NLBを活用した自動メンテナンスモードの実装: EC2インスタンスの停止時にSorryページを表示する仕組み

## はじめに
本記事では、AWSのNetwork Load Balancer (NLB)を使用して、2台のEC2インスタンスが稼働するサービスにおいて、両方のインスタンスが停止した際に自動的にメンテナンス用の「Sorryページ」を表示する仕組みを解説します。

また、1台でもインスタンスが復旧した際に通常サービスに戻る自動化構成についても紹介します。

このシステムは可用性とメンテナンス性を向上させるために有効ですが、現在は検証を行っていないため、今後自分の環境で実施していく予定です。

## フロー全体の流れ
### 通常時のトラフィックフロー

“`css
クライアント

NLB

通常のターゲットグループ

稼働中のEC2インスタンス (通常サービス)
“`

:::note
**クライアント → NLB**
ユーザーがサービスにアクセスすると、リクエストはNLB(Network Load Balancer)に送信されます。

**NLB → 通常時のターゲットグループ**
NLBは正常に稼働中のEC2インスタンス(通常のターゲットグループ)にト

元記事を表示

WebRTC (Web Real-Time Communication)。ブラウザ標準機能でビデオ通話を実現。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3846020/92e2f713-f739-e507-b11e-1cca56e75587.png)

### WebRTC (Web Real-Time Communication) は、リアルタイムで音声やビデオ、データ通信をブラウザ間で直接行うための技術であり、ブラウザに組み込まれた基本的な機能です。

WebRTCを使ったブラウザアプリケーションは、JavaScriptを利用して実装されます。
WebRTCのAPIは、音声やビデオのストリーミング、そしてデータ通信を扱うために設計されており、RTCPeerConnectionなどの主要なオブジェクトを使います。
シグナリングサーバーは別途必要(使いまわしが効きます)ですが、ブラウザ間でのリアルタイム通信はブラウザ自体の機能として提供されています。
つまり、JavaScriptを使って、非常にパワフルでリアルタイムな音声・ビデオ通信やデータ転送を実現できるのがWebRTCの大きな特徴

元記事を表示

OTHERカテゴリの最新記事