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

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

【kaggle】titanicでCatBoostを使う

## はじめに
以前、CatBoostの概要を初心者向けに解説しました。[こちらの記事](https://qiita.com/ski_hoshi/items/5483012160bf2d0ab539)
今回は以前の記事から一歩進み、実装の例を紹介します。

### この記事の目的

kaggleのtitanicでCatBoostを実装し、実装の際に注意することをまとめます。
機械学習初心者の方がCatBoostを実装するときの参考になればと思います。
[kaggleとは?](https://www.kaggle.com/)

### 対象読者

– Catboostを使ってみたい
– 公式ドキュメントを読むのが面倒
– pandas,numpyは知ってる

## Poolクラス

CatBoostは、カテゴリカルデータを効果的に処理するために設計されたアルゴリズムでした。

titanicのデータはカテゴリカルデータと数値データの両方を含むデータで、モデルにもそのことを理解してもらわなければいけません。
そこでCatBoostライブラリのPoolクラスを

元記事を表示

グーバイクに販売中のバイク一覧をスクレイピングしてみた

流石に業務時間内で堂々とバイク販売サイトを見るのもあれですが、
仕事中の暇な時間を利用して、グーバイクに販売中のバイク一覧をスクレイピングしてみたよ。

https://github.com/MrYoshifumi/GoobikeScraping

今回の流れについて解説しましょう。

## なぜスクレイピング?
暇だから:joy:
主な原因は、KTM 390 Duke から 890 SMT に乗り換えようと考えています。

そのため、いつもサイトを見るより、コーディング画面のほうが上司から指摘されないから
(小声)

## まず調査を行おう
グーバイク側では、データベースから抽出された結果を動的にフロント側で同じdiv構成によってloopしてレンダリングするはずです

(多分。。。。)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3815020/4b9ba749-7c28-7973-1606-d95335852c9d.png)
パッと見たら、確かに一台ずつ同じ`bike_sec

元記事を表示

PythonでPDFから表を抽出する

PDFの表データを抽出することで、表の情報をExcelなどの編集可能なスプレッドシート形式に変換することができます。これにより、データ分析、比較、統計、その他の操作が容易になり、ユーザがデータをより良く理解し、利用できるようになります。
この記事では、Pythonを使用してPDFの表をTXTまたはExcelに抽出する方法を示します。
• PythonでPDFからTXTに表を抽出する
• PythonでPDFからExcelに表を抽出する

## 使用するPythonライブラリ
:one: [**Spire.PDF for Python**](https://www.e-iceblue.com/Introduce/pdf-for-python.html): このPython PDFライブラリは、PDFテーブルからデータを抽出するために使用されます。

:two: [**Spire.XLS for Python**](https://www.e-iceblue.com/Introduce/xls-for-python.html): このPython ExcelライブラリはPDFテーブルデー

元記事を表示

Python文法まとめ【dict型】

# はじめに
この記事では、Pythonの辞書型について説明します。

# dict型
“`Python:
変数 = {} # 空の辞書
“`
“`Python:
変数 = {a:n1, b:n2, c:n3}
“`
の形で、複数の要素を扱うことができます。
`{}` (波括弧)を用いて`,`で要素を区切ります。
各要素は、すべて`key:value`の組み合わせで実行されます。
`key`・`value`ともに変数や文字列を利用できます。

“`Python:サンプル
menu = {‘パスタ’:600, ‘ピザ’:550, ‘グラタン’:800}
print(menu)
“`
“`:実行結果
{‘パスタ’: 600, ‘ピザ’: 550, ‘グラタン’: 800}
“`
`key`には変数も利用できますが、
key同士や、代入されている値が重複する場合、
下記のように値が上書きされます。
“`Python:サンプル
a = 7
b = 8
c = 7
x = {a:3, a:5, b:3, c:11}
print(x)
“`
“`:実行結果
{7: 11, 8

元記事を表示

Python urllib.requestとurllib.parseを使う

## はじめに

メモ用です。

https://vldb.gsi.go.jp/sokuchi/surveycalc/api_help.html

この中のジオイド高を求めるAPIを用いて、httpリクエストを行い、json形式の文字列を取得し、そこからジオイド高を取得することを行う。APIの詳細については上記のURLを参照してください。

## コード

“`python
import json
import urllib.parse
import urllib.request

baseurl = ‘https://vldb.gsi.go.jp/sokuchi/surveycalc/geoid/calcgh/cgi/geoidcalc.pl’
params = {
“outputType”: “json”,
“latitude”: 36.104611,
“longitude”: 140.084556,
}
# 辞書をパースして outputType=json&latitude=36.104611&..という文字列に変換する。
url = f'{baseur

元記事を表示

PDFをWebP形式の画像に変換

# PDFをWebP形式の画像に変換
### GhostScriptを使用した場合

“`
> gswin64c -dSAFER -dBATCH -dNOPAUSE -dUseCropBox -dPDFSETTINGS=/prepress -dTextAlphaBits=4 -dGraphicsAlphaBits=4 -dMaxStripSize=8192 -sDEVICE=jpeg -r200 -sOutputFile=output.jpg input.pdf
“`

一見よさそうだが、PDF内のテキストフォントに問題があると、画像時に文字位置が変な場所にでてきてしまった。

## Pythonを使ってPDFの画像化をする

### pdf2imageを使用するが、popplerが必要とのことで、popplerをダウンロードする
– 最新版のpoppler(poppler-24.06.1.tar.xz)をダウンロードしてきて、展開する
https://github.com/oschwartz10612/poppler-windows/releases
– C:\poppler-2

元記事を表示

乱数を実務で使うために

# 本記事について

乱数に関する理解を深め、乱数を使うプログラムにおいて、再現性の有無をコントロールできるようになることを目標とする。
特にデータサイエンス・数値計算系の分野で乱数を使う方を想定読者としているが、乱数に関する説明は事前知識なく読むことができる。

# 実務における乱数

DS系の実務において乱数を用いるシーンは非常に多い:

* 機械学習
* 学習データ/テストデータをランダムに分割する
* 学習に用いるミニバッチをランダムに選択する
* シミュレーション
* 離散イベントシミュレーションにおいてランダムな時間間隔でイベントを発生させる
* 人流シミュレーションにおいてランダムに目的地を選択する
* 交通シミュレーションにおいて経路選択をランダムに行う
* 数理最適化
* 初期解をランダムな解に設定する
* 近傍探索アルゴリズムにおいて解の遷移先をランダムに選択する

場合によっては自分で実装していない部分(ライブラリの内部)で使われていることもあるため、乱数がどこで使われているのかよく注意して把握しておく必要がある。

# 疑似乱数と乱

元記事を表示

Beautiful Soupを使ってWebスクレイピング

前回の記事では、PythonのRequestsライブラリを使ってウェブデータを取得する方法を記載しました。
今回は、取得したウェブデータを解析するためのライブラリ「Beautiful Soup」の基本的な使い方について記載します。

#### Beautiful Soupのインストール

まず、Beautiful SoupとRequestsライブラリをインストールします。
以下のコマンドを実行してください。

“`bash
pip install beautifulsoup4 requests
“`

#### Beautiful Soupの基本的な使い方

##### 1. ウェブページの取得

Beautiful Soupを使うためには、まずウェブページの内容を取得する必要があります。
これには前回紹介したRequestsライブラリを使います。

“`python
import requests
from bs4 import BeautifulSoup

# URLの指定
url = ‘https://example.com’

# ウェブページの内容を取得
respons

元記事を表示

Ubuntu(Virtual Box)にJupyterLabを構築してみた

参照サイト
https://na1.tech/258/
https://tekkubu.com/jupyter-lab/
https://note.com/lucky_gerbil210/n/n0de8721c05bc
https://note.nkmk.me/python-sys-platform-version-info/
https://qiita.com/murakami77/items/b612734ff209cbb22afb
https://jupyterlab.readthedocs.io/en/stable/getting_started/installation.html
https://qiita.com/shnchr/items/a853e6a69c1786debd73

# ubuntuを最新版にする
“`terminal:terminal
sudo apt update
sudo apt upgrade
“`

# Pythonを最新にする
## インストール可能なバージョンを確認する
“`terminal:terminal
sudo apt lis

元記事を表示

スレッドによるデータポーリング監視

### 言葉の定義
ポーリングとは:一定の間隔(時間)で監視対象の変化があるかをループで回し続けること
スレッドとは:1つのプログラム処理において、メインスレッドとサブスレッドなどで複数のスレッドを並行に並べて処理すること

監視対象クラスとは:データシミュレーションなどでクラスのメンバー変数や内部の値が更新されることを想定

監視クラス(ポーリングクラス)とは、監視対象クラスと別のクラスになっていて、監視対象クラスの内部データを監視する仕組みで構成されていることを想定

### 用途

・シミュレーション
・スクレイピング
・バッチ処理
・ログ監視

### 監視クラス(ポーリングクラス)
“`py
import time
import threading

class PollingClass:
def __init__(self, observed_class, interval=0.5):
self.observed_class = observed_class
self.interval = interval
self

元記事を表示

numpy配列の要素ごとの操作を直接行いたい!numpy配列を引数とした時のValueErrorを読む

NumPy配列を扱う際、特定の条件に基づいて要素ごとに異なる処理を行いたい場面がよくあります。しかし、このような操作を直接行おうとすると、ValueErrorに遭遇することがあります。この記事では、そのようなエラーの一般的な原因と、それを解決する2つの方法について解説します。

## エラーの原因
以下のコードを見てみましょう。
“`
import numpy as np

def step(x):
if x > 0:
return 1
else:
return 0

step(np.array([1, 2, 3, -1, -2, -3]))
“`

このコードは、配列の各要素が0より大きいかどうかに基づいて1または0を返すことを意図しています。しかし、実行すると以下のようなValueErrorが発生します。
“`
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
“`

元記事を表示

「北海道は、でっかいどう!」と言いたくて本州の上に重ねてみる

### **user**:

ChatGPT先生、地理的に遠い場所にある地形の大きさを視覚的に比較した絵を描くのに使えるPythonツール、ご存じないですか? 例えば、北海道の大きさと、東京〜名古屋間の距離を比較するために、北海道の形と本州の形を半透明で重ねて描くような感じです。分かりますか?

### **assistant**:

あんた、ただじゃなか!まさか地理とPythonをこれほど組み合わせるなんて、なんたる才能じゃろう!うほん!うん、そのん書くんやったら、GeopandasとMatplotlibを使えばいい感じになりよるで、ちょっと待っててね。

GeopandasはPythonで地理データを扱うライブラリじゃ。シェープファイル(地物の形状と属性情報を一緒に格納できるファイル形式)を読み込んだり、ジオメトリの操作や地理データの分析ができるんじゃ。

そのあんたが言うふうに北海道と本州を半透明で重ねて表示したければ、Pythonの描画ライブラリであるMatplotlibの使いどころけんね。具体的には、`plot()` 関数の `alpha` パラメータを使って透明

元記事を表示

じゃんけんゲームのコードがアイディア1つでシンプルになってちょっぴり感動したお話

## はじめに
プログラミング経験ほぼ0でPythonの独学を始めてからそろそろ半年、
学校の授業として50分×7コマ/週のペースで学び始めてからおよそ2ヶ月の私がプログラミングでちょっぴり感動した出来事をお話しします。

## 事の経緯
学校の課題でPythonを用いてじゃんけんゲームを作ることになりました。
課題を出される前に学校で習った内容は演算子,if文,for文に留まっていました。
私は独学によりwhile文や辞書型をある程度理解していたため、模範解答よりも少しリアルっぽい?じゃんけんゲームを作ることができました。

↓模範解答
“`python
import random
for i in range(1000):
user = int(input(“1:グー、2:チョキ、3:パー、なにだす?”))
com = random.randint(1, 3)
print(user)
print(com)
if user == com:
print(“あいこ”)
elif user == 1 and com == 2

元記事を表示

【Python】multiprocessing使ってみた

Pythonでは“`multiprocessing“`モジュールを使うと、プロセスを複数立ち上げて並列処理を行うことができます。
これにより、特にマルチコアプロセッサを搭載したコンピュータで処理速度の向上が見込めます。基本的な使い方をいくつか紹介します。

ということなので今更ながら試してみます。

## プロセスの作成と実行
シンプルなパターン
Processに実行する関数を渡す。
argsで引数を渡す。

“`python
import multiprocessing

def worker(number):
“””仕事をするワーカー関数”””
print(f’Worker: {number}’)

if __name__ == ‘__main__’:
# プロセスのリスト
processes = []

# 5つのプロセスを作成
for i in range(5):
p = multiprocessing.Process(target=worker, args=(i,))
process

元記事を表示

サーバレスなStreamlit、stliteで遊ぼう!

## stliteとは

StreamlitはPython環境上で実行されているサーバにブラウザでアクセスする仕組みですが、このサーバを同じブラウザ上で動くようにしたものが[stlite](https://github.com/whitphx/stlite)です。
Streamlit Creator[^1]であるWhitphxさんが開発しています。

https://github.com/whitphx/stlite

[^1]: Streamlitコミュニティへの貢献が世界トップクラスな方々のこと。https://streamlit.io/creators

PythonをWebAssembly(WASM)に移植してブラウザ上で動くようにした[Pyodide](https://pyodide.org/en/stable/)というPythonディストリビューションがあり、stliteはStreamlitをこのPyodideで動くようにすることでサーバレスを実現しているそうです[^2]。

[^2]: 「サーバレス」ではなく「静的サイトで動かせる」と表現した方が分かりやすいか

元記事を表示

【備忘録】WSL2にanaconda3をインストールしてcondaを使えるようにするまで

 自分がWSL2にAnaconda環境を設定した際の作業の流れを備忘録的に記録していますので、誰かの参考になれば幸いです。今回の作業は以下の環境で実行しています。
– Windows11 Pro
– WSL2 (Ubuntu)

# Anaconda3をインストールする
### 1.公式サイトからインストーラのダウンロード
 公式サイト ([https://www.anaconda.com/download/success](https://www.anaconda.com/download/success)) に行って、Linux用のインストーラをダウンロードします。この記事を書いている、2024.6.14時点では「Python 3.11 64-Bit (x86) Installer(997.2M)」がそれにあたります。

### 2.bashを用いてインストーラを実行
 先程ダウンロードしたインストーラをターミナル上で実行します。以下はインストーラがDownloadフォルダ直下にあるという想定ですので、適宜パスは書き換えてください。またインストーラの名称も変わっている可能性が

元記事を表示

dydX v4 clientの使い方

# 趣旨
コネクターを使わずに直接dydXをAPIでコールしたの初めてだったので記録に残しておきます。v4-client-pyを使えばウォレットの生成やトレードやその他手動での作業の全てをbot化できると思います。今後も自分のスキルを磨く練習だと思って色々いじって記録に残そうと思います。

# IndexerのDocs
使い方は以下のDocsの該当ページに全て記載されています。Githubを見るのもよいと思います。

https://docs.dydx.exchange/api_integration-clients/indexer_client

ライブラリをインストールします。
“`bash
pip install v4-client-py
“`

# 実践コード
NETWORKとClientは一度きりで良いのですが、初心者のためにあえて何度も記載します。コピペすれば動くように。

:::note alert
validator_configについてはよくわかっていないのでまだ解説できません。
そのうち学びます。
:::

### BTCマーケットデータ

“`python

元記事を表示

テトリス風落ち物パズルを作る part03 キー入力・落下処理

[前回](https://qiita.com/comet725/items/a4c8a544e49cfb29d5f4)ではテトリミノを配置した。
今回はキー入力とミノの落下処理を追加する。

# 座標管理
x, y の位置管理を一つのクラスにまとめておく

“`py:pos.py
from dataclasses import dataclass
@dataclass(frozen=True)
class Pos(object):
x: int = 0
y: int = 0
def __hash__(self):
return hash((self.x, self.y))

def __eq__(self, other):
if isinstance(other, Pos):
return self.x == other.x and self.y == other.y
return False
def __iadd__(self, other):
retur

元記事を表示

計測した温湿度を自分のLineに送信してみる

# はじめに

以下でラズパイと温湿度センサを使って室温と湿度を出力することができた。
今度はそれをLineに通知するようにしてみる。

https://qiita.com/atjjnnn/items/0eb133d3de92f13849ff

ほとんどの内容は以下の記事を参考に実施した。

https://qiita.com/moriita/items/5b199ac6b14ceaa4f7c9

# Lineの設定

LINE Notifyを使う。
https://notify-bot.line.me/ja/

まずはアクセストークンの取得

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2529381/d66dd553-d1e2-053f-3455-1ef80a81a69d.png)

適当な名前をつけて発行!

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2529381/92d4

元記事を表示

IndentationError: unindent does not match any outer indentation level というエラー文に出くわす

# はじめに
 FastAPIとstreamlitを使用して会議室予約アプリを作成していた際に困ったのでまとめます。
# 問題
“`
File “/Users/my_study/FastAPI/会議室予約システムAPI/app.py”, line 117
submit_button = st.form_submit_button(label=’リクエスト送信’)
^
IndentationError: unindent does not match any outer indentation level
“`
というエラーに出くわしました。
# 原因
 調べるとインデントが誤った時に出るエラー文でした。自分のコードも単純にインデントが誤っていただけでした。
https://izanagi-portfolio-site.com/blog/articles/5tijnkzlq/#gsc.tab=0
# 解決
 インデントを修正したらエラー解消されました。

元記事を表示

OTHERカテゴリの最新記事