- 1. Pythonを使ってみよう(マクロでやっていた自動化を実現してみる)データ収取編
- 2. atcoder練習(2024.11.15)
- 3. NBAデータをJSON形式で取得して分析するPythonスクリプト
- 4. atcoder練習(2024.11.15)
- 5. atcoder練習(2024.11.15)
- 6. atcoder練習(2024.11.15)
- 7. PythonでPowerPointスライドの背景を設定する方法
- 8. 仮想マシンを立てる時のパスワード作成ツール🔑
- 9. paizaラーニング問題集「移動が可能かの判定・複数回の移動」を解いてみた
- 10. Python のデータ重複削除処理あれこれメモ
- 11. A/BテストでCUPEDを使って分散を小さくする
- 12. Python初学者がFlask使ってみた話
- 13. 作ったパッケージを公開してみた
- 14. Pythonでコサイン類似性(Cosine Similarity)計算のまとめ
- 15. ロジスティック回帰と最急降下法
- 16. 【随時更新】Django・Pythonでよく使うコマンド一覧
- 17. iterrows() と itertuples() の違い
- 18. 【Cコード解析】コメントの削除
- 19. 正規表現を使った置換の魔法(葬送のフリーレン風に)
- 20. Kaggle HousePricesで上位9%に入るまで
Pythonを使ってみよう(マクロでやっていた自動化を実現してみる)データ収取編
### 今回で3度目のPython挑戦。
見本や教材があったので何とかなったが、今回は頼りにするのがこの2文。#### Pythonでは、目的ごとに便利な機能がまとめられたライブラリを使い、簡単にプログラムを開発できます。
#### 「openpyxl」というライブラリを使うことで、Excel操作の自動化を簡単に実現することができます。
まとめられているのか→まだ見てないからわからない???
簡単に・・・開発できます。→ほんとに???(実際にはパス指定するに4時間も躓いた)### Excelに話を移しますが、
最近のエクセルを見ていると自動化タブには「スクリプトツール」があり、
開発タブには「マクロ」
数式タブには「pythonの挿入」が入り
変化に富んでいます。以前のような「マクロ1択」ではなくなってきています。
時代は変わります。
### 話をPythonに戻して
とにかく上記2文
Pythonでは、目的ごとに便利な機能がまとめられたライブラリを使い、簡単にプログラ
atcoder練習(2024.11.15)
# キーワード
# 問題
https://atcoder.jp/contests/abs/tasks/abc085_bX 段重ねの鏡餅
(X≥1) とは、
X 枚の円形の餅を縦に積み重ねたものであって、どの餅もその真下の餅より直径が小さい(一番下の餅を除く)もののことです。例えば、直径
10、
8、
6 センチメートルの餅をこの順に下から積み重ねると
3 段重ねの鏡餅になり、餅を一枚だけ置くと
1 段重ねの鏡餅になります。ダックスフンドのルンルンは
N 枚の円形の餅を持っていて、そのうち
i 枚目の餅の直径は
d
i
センチメートルです。これらの餅のうち一部または全部を使って鏡餅を作るとき、最大で何段重ねの鏡餅を作ることができるでしょうか。制約
1≤N≤100
1≤d
i
≤100
入力値はすべて整数である。
入力
入力は以下の形式で標準入力から与えられる。N
d
1
:
d
N
出力
作ることのできる鏡餅の最大の段数を出力せよ。入力例 1
Copy
4
10
8
8
6
出力例 1
Copy
3
直径
10、
NBAデータをJSON形式で取得して分析するPythonスクリプト
## はじめに
NBAの試合データを取得し、分析するためのスクリプトを作成しました。このスクリプトでは、`nba_api`を使って特定のチームの試合データを取得し、チーム全体の統計や個人のパフォーマンスを**JSON形式**で保存します。
JSON形式で保存する理由は、ChatGPTなどのAIツールを活用して効率的にデータを分析できるようにするためです。この記事では、スクリプトの使い方や生成されたJSONデータをChatGPTで考察するためのプロンプト例も紹介します。
## 使用するライブラリ
このスクリプトでは以下のライブラリを使用しています:
– `nba_api`: NBAの公式データを取得するためのAPIクライアント
– `pandas`: データフレーム形式でデータを処理するため
– `json`: データをJSON形式で保存するため
– `numpy`: 欠損値処理のサポートライブラリがインストールされていない場合は、以下のコマンドを使ってインストールしてください:
“`bash
pip install nba_api pandas numpy
“`
atcoder練習(2024.11.15)
# キーワード
while,
# 問題
https://atcoder.jp/contests/abs/tasks/abc088_bN 枚のカードがあります.
i 枚目のカードには,
a
i
という数が書かれています.
Alice と Bob は, これらのカードを使ってゲームを行います. ゲームでは, Alice と Bob が交互に 1 枚ずつカードを取っていきます. Alice が先にカードを取ります.
2 人がすべてのカードを取ったときゲームは終了し, 取ったカードの数の合計がその人の得点になります. 2 人とも自分の得点を最大化するように最適な戦略を取った時, Alice は Bob より何点多く取るか求めてください.制約
N は
1 以上
100 以下の整数
a
i
(1≤i≤N) は
1 以上
100 以下の整数
入力
入力は以下の形式で標準入力から与えられる.N
a
1
a
2
a
3
…
a
N
出力
両者が最適な戦略を取った時, Alice は Bob より何点多く取る
atcoder練習(2024.11.15)
# キーワード
# 問題
https://atcoder.jp/contests/abs/tasks/abc083_b1 以上
N 以下の整数のうち、
10 進法での各桁の和が
A 以上
B 以下であるものの総和を求めてください。制約
1≤N≤10
41≤A≤B≤36
入力はすべて整数である
入力
入力は以下の形式で標準入力から与えられる。N
A
B
出力
1 以上
N 以下の整数のうち、
10 進法での各桁の和が
A 以上
B 以下であるものの総和を出力せよ。入力例 1
Copy
20 2 5
出力例 1
Copy
84
20 以下の整数のうち、各桁の和が
2 以上
5 以下なのは
2,3,4,5,11,12,13,14,20 です。これらの合計である
84 を出力します。入力例 2
Copy
10 1 2
出力例 2
Copy
13
入力例 3
Copy
100 4 16
出力例 3
Copy
4554# 回答
“`Python
N, A, B = map(int, input().split())l = sum([
atcoder練習(2024.11.15)
# キーワード
for# 問題
https://atcoder.jp/contests/abs/tasks/abc087_bあなたは、
500 円玉を
A 枚、
100 円玉を
B 枚、
50 円玉を
C 枚持っています。 これらの硬貨の中から何枚かを選び、合計金額をちょうど
X 円にする方法は何通りありますか。同じ種類の硬貨どうしは区別できません。2 通りの硬貨の選び方は、ある種類の硬貨についてその硬貨を選ぶ枚数が異なるとき区別されます。
制約
0≤A,B,C≤50
A+B+C≥1
50≤X≤20,000
A,B,C は整数である
X は
50 の倍数である
入力
入力は以下の形式で標準入力から与えられる。A
B
C
X
出力
硬貨を選ぶ方法の個数を出力せよ。入力例 1
Copy
2
2
2
100
出力例 1
Copy
2
条件を満たす選び方は以下の
2 通りです。500 円玉を
0 枚、
100 円玉を
1 枚、
50 円玉を
0 枚選ぶ。
500 円玉を
0 枚、
100 円玉を
0 枚、
50 円玉を
2 枚選ぶ。
入力例 2
PythonでPowerPointスライドの背景を設定する方法
Pythonを使用してOfficeドキュメント(例えばPowerPointプレゼンテーション)を自動化することは、効率や創造性を向上させるための重要な手段です。**PowerPointスライドの背景を設定する**ことで、プレゼンテーションの視覚的な魅力が高まり、特定の感情やメッセージを伝えやすくなり、視聴者の関心を引きつけます。プログラムでスライド背景を一括で変更することで、多くの手動作業を省き、プレゼンテーション全体のスタイルに一貫性を持たせることができます。また、頻繁に更新やカスタマイズが必要なプレゼンテーションを扱う企業にとって、Pythonを使用してスライド背景を設定することは柔軟で効率的な解決策です。本記事では、Pythonを使ってPowerPointスライドに**単色、グラデーション、画像の背景**を設定する方法を紹介します。
– **[PythonでPowerPointスライドに単色の背景を設定する](#pythonでpowerpointスライドに単色の背景を設定する)**
– **[PythonでPowerPointスライドにグラデーション背景を設定する](#pyth
仮想マシンを立てる時のパスワード作成ツール🔑
ウェブから仮想マシンを立てるときにユーザアカウントの強固なパスワードを作成できるお役立ちツール。
“`python
import random
from enum import Enum
random.seed(1)class Regulation(str, Enum):
SYMBOL: str = “@!_()[]@”def run(inputstr: str):
rngd = [random.randint(1, 100) for _ in range(10)]
rn = “”.join(map(str, rngd))
base = inputstr + rn + Regulation.SYMBOL
_tmp = list(base)
random.shuffle(_tmp)
password = “”.join(map(str, _tmp))
print(password)if __name__ == “__main__”:
run(input())
“`
paizaラーニング問題集「移動が可能かの判定・複数回の移動」を解いてみた
https://paiza.jp/works/mondai/a_rank_level_up_problems/a_rank_snake_mapmove_step3
▼考え方
この問題を解くために私が考えた内容1~3を以下に示します。
1. 現在向いている方角を示すneswと移動の向きdを関数caldistanceに渡して、y,x座標の移動距離を計算します。
2. 現在の座標(y,x)と1の戻り値(y,x座標の移動距離)を関数nextpositioncheckに渡して、移動が可能かどうかを判定します。題意の条件に合致した場合は”Stop”を出力します。
3. 移動後の向いている方角と移動後の座標を求めます。
▼コード
“`py
H,W,sy,sx,N = map(int,input().split())S = [list(input()) for _ in range(H)]
d = [input() for _ in range(N)]# nesw: 現在向いている方角を示す変数 0:北,1:東,2:南,3:西
nesw = 0# y: 現在のy座標を示す変数
Python のデータ重複削除処理あれこれメモ
# ユースケース1. 純粋な配列で重複した値を一つにまとめる
`Set` が使える言語ならこれでおk。
“`python
data = [1, 2, 3, 3, 5, 7, 13, 13]
list(set(data)) # => [1, 2, 3, 5, 7, 13]
“`# ユースケース2. エンティティのプロパティをキーにした重複削除
後勝ちする方法と先勝ちする方法がある。
“`python
from dataclasses import dataclass@dataclass
class Person:
id: int
name: str
“`というクラスがある前提で
“`python
persons = [Person(id=1, name=”foo”), Person(id=1, name=”bar”)]# 後勝ちするには
last_merge = {p.id: p for p in persons}
last_merge.values() #=> Person(id=1, name=’bar’)# 先勝ちするには
f
A/BテストでCUPEDを使って分散を小さくする
# はじめに
A/BテストやRCTと呼ばれるランダム化実験はウェブアプリをはじめさまざまなサービスで利用されている。
ここでは「**より少ないデータで、より正確に効果を測るための手法**」であるCUPEDについて紹介する。
CUPEDは”Covariate Using Pre-Experiment Data”の略で、簡単に言えば「実験前のデータを使ってA/Bテストの精度を上げる方法」だ。# A/Bテストのおさらい
A/Bテストは、ウェブやアプリの改善に欠かせない手法だ。
具体的には、ユーザーをランダムに2つのグループに分け、片方には従来のバージョン(**コントロール群=Control group**)、もう片方には新しいバージョン(**処置群=Treatment group**)を見せて、どちらが効果的かを検証する。A/Bテスト最大の利点は”**ランダム化**”にある。
比較する2つの集団にバイアスがあれば平等な比較はできない。
あるいは、同じユーザーにおける比較でも施策の”**前後**”で比較してしまうと季節性など
さまざまな影響を受けて正確な測定が難しくなる。
(
Python初学者がFlask使ってみた話
# はじめに
はじめまして、名無しと申します。初投稿なので、稚拙な文章かもしれませんが、どうかご容赦ください。
**HTML, CSS(Bootstrap)**: ほぼ未経験(授業でちょっと触ったくらい)
**Python歴**: 半年ほど
**Git, GitHub**: 最低限の操作は使えます。環境についてはGitHubにて公開していますので、環境構築時にご参照いただければと思います。
(そのため、環境構築編は割愛させていただきます)リポジトリのリンクはこちらです:
[GitHub リポジトリ](https://github.com/S4AK4N/Flask.git)
## 作品名1行掲示板みたいななにか
## 作品の概要
今回作成したWebアプリケーションは、1行掲示板のようなものです。
## 使用した技術
GitHubのREADMEにも記載していますが、こちらにも記述しておきます。
### 使用技術
– **フロントエンド**: HTML (Jinja2), CSS(Bootstrap)
– **バックエンド**: Python (Fl
作ったパッケージを公開してみた
# 主旨
OpenCV使いのみなさんも、作っているライブラリの中で、公開することが許されるものがあったら、テストして、リファクタリングして、パッケージにまとめて、PyPIに登録しませんか。## 開発しているとほしいものがでてくるよね
– まず探してみよう。
– なかったら、作るしかない。
– 役に立つ実装と利用例を作ってみる。
– 複数のプロジェクトで、使ってみる。
– 使えるものなったか。## pythonモジュール化する。
– モジュール名を決める。
– モジュールフォルダに`__init__.py` ファイルをおく。
– pyproject.toml を書く。
– [dependencies] に依存パッケージとバージョンを記入する。
– `python3 -m pip install .` をできるようにする。## testを書く
– mkdir test
– 動作検証するpythonスクリプトの中にassert を書く。
– 意味のまとまりを def test_関数名(): など関数に抽出する。
– pytest test_*.pyでテストが実行できるよ
Pythonでコサイン類似性(Cosine Similarity)計算のまとめ
# scikit-learn
“`python
from sklearn.metrics.pairwise import cosine_similarity
import numpy as npa = [2, 15, 3, 25]
b = [5, 25, 8, 28]array_1 = np.array([a])
array_2 = np.array([b])
cos_sim = cosine_similarity(array_1 , array_2)
print(cos_sim)
# 結果:
# [[0.9753719]]
“`
# NumPy
“`python
from numpy import dot
from numpy.linalg import norma = [2, 15, 3, 25]
b = [5, 25, 8, 28]cos_sim = dot(a, b) / (norm(a) * norm(b))
print(cos_sim)
# 結果:
# 0.9753719044721808
“`
ロジスティック回帰と最急降下法
# はじめに
ロジスティック回帰は、入力変数$x$が実数全域の値を取り、出力変数$y$が$0
【随時更新】Django・Pythonでよく使うコマンド一覧
Django・Pythonで使うコマンドをまとめました。随時更新していきますのでご活用下さい。
“`python
# 仮想環境関連$ python -m venv env
# 仮想環境を作成して依存関係を隔離$ source env/bin/activate # (Linux/macOS)
$ env\Scripts\activate # (Windows)
# 仮想環境を有効化し、パッケージ管理を簡単に$ deactivate
# 仮想環境を無効化$ pip install -r requirements.txt
# 必要なパッケージをインストールして環境を整える# Djangoプロジェクトの作成・初期設定
$ django-admin startproject プロジェクト名
# 新しいDjangoプロジェクトを作成$ django-admin startproject プロジェクト名 .
# プロジェクトディレクトリをルートに作成$ python manage.py startapp アプリ名
# 新しいアプリケーションを追加$ p
iterrows() と itertuples() の違い
#### iterrows()
– **戻り値**: 各行を (インデックス, Series) のタプルとして返す
– **速度**: 比較的遅い
– **使い方**: 各行を Series として操作したい場合に便利#### 出力例
~~~
import pandas as pddf = pd.DataFrame({
‘accession_id’: [‘A001’, ‘A002’],
‘type’: [‘RNASeq’, ‘ChIPSeq’],
‘experimental_fact’: [‘[“fact1″, ” fact2 “]’, ‘[“fact3″, ” \’fact4\’ “]’]
})for index, row in df.iterrows():
print(index, row[‘accession_id’], row[‘type’], row[‘experimental_fact’])
~~~
出力:~~~
0 A001 RNASeq [“fact1″, ” fact2 “]
1 A002 ChIPSeq [“fact3
【Cコード解析】コメントの削除
# コメントの記述を削除する
gccコンパイラを使ってプリプロセッサをかければいいじゃん。という話は置いといて、それをpythonで実現してみる。“`python
import regex
import globfilelist = glob.glob(“test.c”, recursive=True)
REGEX_PATTERN_BLOCK_COMMENT = r”/\*.*?\*/”
REGEX_PATTERN_LINE_COMMENT = r”//.*?(?=\n)”for file in filelist:
with open(file, “r”, encoding=”utf-8″) as file_obj:
filetext = file_obj.read()
filetext = regex.sub(REGEX_PATTERN_BLOCK_COMMENT, “”, filetext, flags=regex.DOTALL)
filetext = regex.sub(REGEX_PATTERN_LINE_COMMENT, “”, filetex
正規表現を使った置換の魔法(葬送のフリーレン風に)
## フリーレンの記録:正規表現の魔法の学び
旅を終えた後も、学びは続く。
魔法の書を手にしたのもつかの間、最近、フリーレンは自然言語処理の中で使われるという「正規表現」という魔法を発見した。
この不思議な文字列操作の力を、決して忘れることがないよう、ここに記録することにした。## replace関数は扱いやすいけど…
Pythonのreplace関数は、まるで初めて手にする杖のように、扱いやすく心強い。
何かを別のものへと変えるこの魔法は、たとえば簡単な言葉を別の言葉に置き換えるにはぴったりだ。
しかし、旅路で遭遇する多くの複雑な問題、たとえば電話番号や郵便番号のような特殊な書式には、replaceの魔法だけでは力が足りない。### 一応replace関数の使用方法
“`python
text = “Hello World”
new_text = text.replace(“World”, “Python”)
print(new_text) # Hello Python
“`↓↓↓replace関数の知識の泉はこちら(公式ドキュメント)↓↓↓
[https://do
Kaggle HousePricesで上位9%に入るまで
# House Prices – Advanced Regression Techniquesとは
House Prices – Advanced Regression Techniquesは、Kaggleが提供する人気のコンペティションの一つです。このコンペは、家の面積や状態など79個の特徴量を使って家の価格(SalePrice)を予測する回帰問題で、回帰分析の練習や特徴量エンジニアリングのスキル向上に役立ちます。私もこのコンペに取り組み、上位9%に入るために様々なアプローチを試行錯誤しました。# 本記事の概要
本記事では以下の項目の解説を行います。最後に学びと注意点もまとめているので、Kaggleコンペに挑戦する方や回帰問題に興味がある方の参考になれば幸いです。1. 上位9%に入るために行ったアプローチ
1. 簡単なデータ観察
1. オブジェクト型特徴量のラベルエンコーディング
1. 特徴量エンジニアリング
1. ハイパーパラメータのチューニング
1. 注意点
1. 他に検討したアプローチ
1. 重要度の高い特徴量の外れ値処理
1. ター