Python関連のことを調べてみた2022年11月18日

Python関連のことを調べてみた2022年11月18日
目次

Databricks ( Spark ) にて前方一致したデータベース(スキーマ)を削除する方法

## 概要

Databricks ( Spark ) にて前方一致したデータベース(スキーマ)を削除する方法を共有します。

## 実践例

### 1. 削除対象のデータベースを作成

“`python
%sql
create database _test_1;
create database _test_2;
create database _test_3;
create database _test_4;
“`

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/d696f518-65b8-a50f-42ad-ba692b41a607.png)

### 1. 前方一致したデータベース(例:`_test`ではじまるデータベース)を DROP

“`python
db_prefix = ‘_test’

dbs = spark.sql(f”SHOW DATABASES ‘{db_prefix}*'”).select(‘databaseName’).collect(

元記事を表示

numpy の 型昇格(type promotion) がやばい話

結論: numpy ではちゃんとオーバーフローのめんどうを見ましょう

* `np.__version__ == ‘1.23.4’`
* 表は index * column の計算結果
* スカラーと `ndarray` で挙動が違う
* オーバーフローしたときの `RuntimeWarning` はスカラー同士の時にしか出ない
* [numpy.result_type](https://numpy.org/doc/stable/reference/generated/numpy.result_type.html) の結果が計算結果の `dtype` 、足し算と掛け算で同じ型を使っているため最悪死ぬ

| = i * j | 255 | np.uint8(255) | np.uint8([255]) | 257 | np.uint16(257) | np.u

元記事を表示

Python用語集

## オブジェクト指向
何かしらを作る時に、一気に作るのではなく、要素要素に分解してその要素を繋ぎ合わせて作る考え方の事

## 動的な
流動的に変化する

## 静的な
変わらない

## インタープリンタ方式
プログラミング言語の命令を一つずつ機械語に解釈しながら実行する方法
作成したソースコードをすぐに実行できるメリットがあるが、毎回解釈するため実行時間が長くなる

## バイナリ形式
データが、0と1で表現されているデータ形式のこと

## PyPy
動作を早くする時に使用されるインタプリンタ

## CPython
標準で使えるインタプリンタ

## 文字列リテラル
0以上の連続した文字列

## 組込み関数
初めから用意されている標準で使用可能な関数のこと

## シーケンス型
複数の要素をまとめて扱える型
例 : リスト、タプル、文字列など

## メソッド
class内で使用する関数 別名 : メンバ関数

## フォーマット済み文字列リテラル f-string
接頭辞 ‘f’ または ‘F’ の付いた文字列リテラル。これらの文字列には、波括弧 {} で区切られた式であ

元記事を表示

ディレクトリ内にある画像をリサイズするPythonコードを公開するよ!!

ディレクトリ内にある画像をリサイズしたいとき、いつも同じようなコードを作り直している気がするので、メモがてらQiitaに投稿しようと思う。

## 必要なもの

– Python 3.10
– OpenCV for python (opencv-pythonでインストールすると楽)

## 使い方

下記のどちらかのコマンドを実行するだけ!
srcdirにある画像をリサイズしてdstdirに出力します。

“`bash
# サイズを指定してリサイズ (サイズは`{width}x{height}`で指定する)
$ python3 image_resizer.py /path/to/srcdir /path/to/dstdir -s 320×240
# 割合でリサイズ
$ python3 image_resizer.py /path/to/srcdir /path/to/dstdir -r 0.5
“`

## ソースコード

“`python
import cv2
import argparse
import os
import sys
import numpy as np
fro

元記事を表示

pandasデータフレームの列にある例外表現を、正規表現で分割する

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2982344/8e522806-dc55-31d1-3e16-2c3a5913e66f.png)

このようなデータフレームの artist_namesの中にある文字列から、曲名とそれ以外に分割して、適切な列に格納したい。

“`python
# 例外の行を正規表現で分割しておく

#まず列の中のデータを正しい列にコピーして、元の列のデータを削除する。
df_tmp[‘song_title’] = df_tmp[‘artist_names’]
df_tmp[‘artist_names’] = “”

# (English Translation) もしくはその類似表現で分割する
df_tmp2 = pd.concat([df_tmp[‘index’], df_tmp[‘page_views’], df_tmp[‘artist_names’], df_tmp[‘song_title’].str.split(r’\(.+?nglish Tra

元記事を表示

Pythonでエージェントベースシミュレーション: バイアスのない伝達(Mesoudi, 2021)

この記事では、Alex MesoudiのRで書かれたチュートリアルをpythonに翻訳する。
下記の記事ではバイアスのない伝達についてのモデルが紹介されている。これは文化進化理論におけるモデルの一つで、世代間における情報の伝達をモデル化している。

https://bookdown.org/amesoudi/ABMtutorial_bookdown/model1.html#model1

モデルの概要としては、各エージェントは形質AかBのどちらかを持っており、各世代ごとにエージェントはN人いることになる。次の世代のエージェントはランダムで前の世代のエージェントの形質を継承することになるという感じだ。

まずは、必要なライブラリをインストールする。

“`python:python
import pandas as pd
import random
import math
import matplotlib.pyplot as plt
!pip install japanize-matplotlib
import japanize_matplotlib
“`

下記で、unbia

元記事を表示

汎用化AIの方向? ー 最先端の自然言語生成モデルGPT-3の解説

#

## シリーズのコンセプト

本シリーズのコンセプトは、自然言語処理の最先端の技術をわかりやすく解説することである。初心者でも理解できるように数式を使わずに自然言語処理の概念と用途のみ紹介する。

## GPT3モデルが誕生した背景

自然言語処理でタスクを解決する手段としては3段階的に進化してきている。GPT3は既に未来の第一歩を踏み出してきた。

![picture 19](https://res.cloudinary.com/jiang/image/upload/v1668697627/blog/e9232bed4c644dffc199eeb102f7310caec6eef547dc9334f1f2a8bbc9f426c7.png)

## GPT3モデルの概要
![picture 18](https://res.cloudinary.com/jiang/image/upload/v1668697572/blog/f30346adf0e441af9155aba3b0d17f9fe4b69dc4a37504b2648eb8198f2beec9.png)

G

元記事を表示

Qiita に投稿した記事の VIEW数 、いいねの数 、ストックされた数 を CSV に出力する方法(「Python + Qiita API v2」で作成)(100件以上)

# 前書き
以前、「[Qiita に投稿した記事の VIEW数 、いいねの数 、ストックされた数 を CSV に出力する方法(「Python + Qiita API v2」で作成)](https://qiita.com/yasushi-jp/items/5f10d5dcf21af07085a4 “Qiita に投稿した記事の VIEW数 、いいねの数 、ストックされた数 を CSV に出力する方法(「Python + Qiita API v2」で作成)”)」で、**Python** と **Qiita API v2** を使用して、Qiita に投稿した自分の記事の VIEW数 、いいねの数 、ストックされた数 を CSV に出力する方法を紹介しました。しかし、記事が **100件** を超えると取得できない作りになっていたので、今回は記事が **100件** を超えても取得できるように修正した内容を紹介します。

# 実行した環境
+ Windows 10(64bit)
+ Python 3.6.4 :: Anaconda, Inc.

# 100件超え対応後のプログラム

###

元記事を表示

load_iris(sklearn)

# 概要
静かな秋の夜に突発的に「そういえばsklearnってどうやってirisのデータ読み込んでいるのだろう」
と気になったので調べてみた。
(2022/11/17現在)

# 内容
早速load_irisのソースコードっぽいのをみてみる。([Github](https://github.com/scikit-learn/scikit-learn/blob/main/sklearn/datasets/_base.py))
## load_iris()
“`Python:datasets/_base.py
data_file_name = “iris.csv”
data, target, target_names, fdescr = load_csv_data(
data_file_name=data_file_name, descr_file_name=”iris.rst”
)

feature_names = [
“sepal length (cm)”,
“sepal width (cm)”,

元記事を表示

最近傍探索による測位座標の補正および取得

# Pythonで出発点と進む距離・方位から到達点の緯度経度を計算する方法
Pythonのpyprojライブラリを使用した。pypojは地球が楕円体であることを考慮して、地理的な位置情報を使った計算ができるライブラリです.
また,出発点と方位角・距離を与えて到達点の緯度経度を計算する方法がfwdメソッドを使えば簡単に求めることができる。

fwdメソッドには引数として出発点の経度・緯度、方位角・距離を与えます。戻り値は到着点の経度・緯度・逆方位角(到着点から出発点を見た時の方位角)です。

また最近傍探索を用い座標の補正を行うにあたり緯度経度と平面直角座標の相互変換を実装した。

“`
import csv
import numpy as np
from numpy.linalg import norm
import pyproj

grs80 = pyproj.Geod(ellps=’GRS80′)
coordinate_path = “coordinate.csv”
azimuth_path = “azimuth.csv”
azimuth_data = []

def write

元記事を表示

[GitHub Actions] 鬼の爆速実装!!!pytestのcoverageをPull Requestに表示させる

## この記事を読めばできるようになること
GitHub ActionsでpytestのcoverageをPRに表示させることができる
## 説明しないこと
– GitHub Actionsとは何か
– ymlファイルの記述方法

## 注意事項
これから紹介するソースはdockerを利用している

## 該当のyamlファイル
“`.github/workflows/coverage.yml
# タイミングを指定
on:
pull_request:

permissions: write-all

jobs:
pytest_coverage:
runs-on: ubuntu-latest

steps:
# リポジトリをチェックアウト
– name: Checkout
uses: actions/checkout@v2

– name: generate .env
run: chmod +x set-up-env.action.sh && sh set-up-env.action.sh

元記事を表示

Pythonの割り算

割り算の演算子をしょっちゅう忘れるので備忘録を作りました。

# 通常の割り算

“`python
# 8 ÷ 3 = 2.6666666666…
print(8 / 3)
“`
答えは小数で表示される。

“`python
# 4 ÷ 2 = 2.0
print(4 / 2)
“`
このように割り切れる場合であっても答えは2.0と小数で表示される。

# 割り切れるタイプの割り算の答えを整数で表示する

intで変換することにより可能。

“`python
# 4 ÷ 2 = 2
print(int(4 / 2))
“`
round関数を使って丸めることも可能

“`python
# 4 ÷ 2 = 2
n = round(4 / 2)
“`

なお、割り切れない割り算をする際には、第二引数に数字を入れることで小数何桁まで値を求めるか指定することもできる。

ちなみにround関数は四捨五入ではないらしい(丸めようとしている数字が5の時の挙動が違う)。

# 割り算の商を求める

“`python
# 商は2
print(8 // 3)
“`

# 割り算の余

元記事を表示

Pythonでベン図(matplotlib_venn)に画像を載せる

# 目的
– Pythonでカオスマップを作れないかと思い、ベン図に画像を載せる方法を調査・実験してみた

# 結果
– matplotlib_vennを使って下記のような図を作成できた
(元ネタは[こちら](https://eumag.jp/issues/c0916/))
![output.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109639/49da7b6c-b80b-a779-ed37-914073bd1034.png)

## 大まかな流れ
– [matplotlib_venn](https://github.com/konstantint/matplotlib-venn)を使ってベン図を描画
– 画像を各領域に配置する

コード整理中につき、現状のコード全文へのリンク・より詳細にご興味がある場合は[**こちらからどうぞ**](https://lethediana.sakura.ne.jp/tech/archives/steps-ja/1430/)

## ポイント:matplotlibで

元記事を表示

マシンラーニング関数(teradataml)

[Teradata® Package for Python Function Reference](https://docs.teradata.com/r/Teradata-Package-for-Python-Function-Reference/April-2022) [リリース番号:17.10 リリース日付:2022/4時点]の翻訳です。

> Python用ライブラリ(teradataml) シリーズのコンテンツです。

# マシンラーニング関数
(SQL MapReduce フレ

元記事を表示

テキストの写真を読み込んで音声ファイルにする簡単なアプリケーションの作成

Pythonの学習の整理として、簡単なアプリケーションを作成してみることにした。

受験の時欲しかった、過去問などの写真を撮ると、音声ファイルに変えてくれるアプリを作成して、デプロイしてみることにした。

全体の方針として、
・画像からテキストへはGCPのGoogleCloudVisionを使用。
・テキストから音声ファイルへの変換はGCPのTexttoSpeechを使用。
・インターフェイスはpythonのStreamlitを使用する。

という感じだ。

作成したアプリのコードは以下のようになる。

https://github.com/Sanban-curry/photho_to_speech

また、Herokuにてデプロイしたアプリはこちらになる。

https://phototospeech.herokuapp.com/

簡単に流れを言うと、GCPのAPIをそれぞれ有効化したあと、GCPのGoogleCloudVisionとText-to-Speechのクイックスタートをコピペして使う部分だけ残し、それぞれを書き加える。その後、きちんと動作するかを確かめたら、strea

元記事を表示

クラスインスタンスに読み込んだ設定を反映するメモ

# きっかけ
– PyYAMLで読み込んだ設定をクラスインスタンスに反映させる処理を汎化したかった

# YAMLファイル(test.yaml)の記述

“`
name: ‘Iceberg’
type: ‘double-handed sword’
element: ‘ice’
range: 1
“`

# ソースコード
– 下記の実行ファイルと前述のYAMLファイルは同じディレクトリにある前提

“`
import yaml

class TestClass():
def __init__(self):
self.name = ”
self.type = ”
self.element = ”

def load_config(self, config_path):
with open(config_path, encoding=’utf-8′) as file:
loaded_data = yaml.safe_load(file)

for

元記事を表示

希望調査をもとに参加者のグループ配属を最適化する(主に制約条件の書き方のメモ)

# この記事は?
pythonのpulpソルバを使用してグループ分けを実現するためのtipsを備忘録として残しておく.
本記事の内容は個人の学習記録であり,所属する組織とは無関係である.

# シチュエーション

内容の異なる複数のグループワークがあり,参加者はどれか一つだけに参加するシチュエーションを考える.
参加者の全てのグループの志望度(例えば10段階評価)の調査が完了している.

# 目的
参加者全体の達成志望度が最大になる班分けの実行.
その際に,各グループの定員などの制約条件も満たすようにする.

# 方法
pythonのpulpパッケージを使用する.
使用方法等の説明は[分かりやすい記事](https://qiita.com/mzmttks/items/82ea3a51e4dbea8fbc17)に譲る.

# データ
参加者IDをindexに持ち,各グループの希望度やグループ分けに使用する参加者の属性が格納された下記のようなデータフレーム(df 表1).下記条件のものを想定.
・各参加者の希望度は0以上の実数で合計値が参加者間で一定に調整されている.
・参加者の属性はバイ

元記事を表示

【PyTorch】畳み込みニューラルネットワーク(CNN)で転移学習・ファインチューニングをする方法(VGG16を題材に添えて)

# 0. はじめに
本記事では、タイトルの通り、VGG16を例にしてPyTorchで転移学習およびファインチューニングを行うためのコーディング方法を紹介します。
「どのような転移学習・ファインチューニングが正しいか?」まで踏み込んだ内容ではありませんのでご注意を!

学習や推論に関する全体的なコードまでは書きませんが、必要あれば以下の記事をご参照ください。
動作環境も基本的にこちらに準じます。

https://qiita.com/harutine/items/972cc5ff7868d6dec27b

ちなみにVGG16は画像認識で活躍しているネットワークで、「ImageNet」という大規模な画像データセットを学習させたパラメータが公開されています。
他のネットワークであっても、今回の記事内容を参考にすればある程度は転移学習やファインチューニングの操作ができるようになると思います。

# 1. 転移学習・ファインチューニングとは?
例えば他サイト様『[転移学習とファインチューニング](https://agirobots.com/transfer-learning-fine-tunin

元記事を表示

[ROS2 foxy] c++とpython共存パッケージのテンプレート

ROS2では,c++とpythonのパッケージの書き方は異なる.
実際には,同じパッケージ内で,どちらの言語も使いたいということがある.

表面的にチュートリアルをやっただけだと,共存の方法はわからなかった.

ということで,共存パッケージのテンプレートを作ってみた.
参考にして欲しい.

なお,今回のパッケージは以下のリポジトリにアップしている.

https://gitlab.com/ros2_tips/ros2_base_pkg

# パッケージ構成

一般的なROS2の構成と同様です.
cppのソースコードは,srcフォルダ,
pythonのソースコードは,scriptsフォルダに入れます.

“`txt:パッケージ構成
src/
cpp_node.cpp
scripts/
py_node.py
ros2_base_pkg/
__init__.py
import_module.py
include/
CMakeLists.txt
package.xml
“`

## import_module.py

“`py:import_module.

元記事を表示

AtCoder Beginner Contest(ABC) 275 – Pythonでのバーチャル参加結果と内容整理

# 1. 前書き
AtCoderBeginnerContest(ABC)の参加結果と内容の整理、および外部の解説記事を参考にした上で、自分なりに解法を整理していきます。
使用言語はPythonで行きます。本業ではJavaかRubyonRailsユーザーですが、計算速度の問題であったり、トレンドに乗っておくという意味でも(こちらが大きい)、Pythonに慣れていきたいと思います。

# 2. コンテスト内容
– コンテスト名
– AtCoder Beginner Contest 275
– 開催日時
– 2022/10/29(土) 21:00 – 22:40
– 実施区分
– バーチャル参加
– 2022/11/2(水)

# 3. 結果
|区分|結果|所要時間|実行時間|
|:–|:–|:–|:–|
|A問題|AC|9:42|24ms|
|B問題|AC|12:55|24ms|
|C問題|未提出|-|-|

# 4. 解説

## 4-1. A問題

### 4-1-1. 問題文
> AtCoder村にはN本の橋があり、i本目(iは1以上N以下の整

元記事を表示

OTHERカテゴリの最新記事