Python関連のことを調べてみた2023年02月15日

Python関連のことを調べてみた2023年02月15日
目次

Databricksで医療画像データDICOMを活用する方法(1/2)

株式会社NTTデータ [Data & Intelligence事業部](https://enterprise-aiiot.nttdata.com/) の [nttd-saitouyun](https://qiita.com/nttd-saitouyun) です。
本記事は長文になってしまったため、2回に分けてお伝えします。

# はじめに
私は[Databricks](https://enterprise-aiiot.nttdata.com/service/databricks)のエバンジェリストとして活動しております。
その活動の中でお客様のデータ活用の課題や要望をお伺いすることが多いのですが、「DICOMデータを活用したい」とご要望をいただいた際に、私の不勉強でお役立てできなかったため、今回は勉強も兼ねて、**「DICOM」と「DICOMをDatabricksで活用する方法」** について調べた結果をご紹介します。

本記事では、「DICOM」と DICOMデータをPythonで扱うライブラリである「PyDicom」の基本操作と大規模環境における課題を説明します。[後編](xxx

元記事を表示

Rubyのdigをpythonでやる

## 課題
ネストされたdictから特定の値を取り出したいとき

## Rubyの場合
以下のように、nullチェックをしながらいい感じに取り出してくれる
“`rb
data_a = { ‘name’: { ‘first_name’: ‘yamada’, ‘last_name’: ‘taro’ } }
data_b = { ‘name’: { ‘last_name’: ‘taro’ } }

p data.dig(‘name’, ‘first_name’)
# => yamada

p data.dig(‘name’, ‘first_name’)
# => nil
“`

## Pythonの場合
digのようなメソッドはないので愚直にやると以下のような方法になる。
“`py
data_a = { ‘name’: { ‘first_name’: ‘yamada’, ‘last_name’: ‘taro’ } }
data_b = { ‘name’: { ‘last_name’: ‘taro’ } }

if ‘name’ in data_a and ‘first_name’ in

元記事を表示

wiresharkで保存したデータをpysharkで扱う

# はじめに
WiresharkでキャプチャしたデータをPythonで使いたい。
そんなあなたに「pyshark」。
結構探しても出てこなかったのでまとめておきます。
# インストール
インストールはこれだけ
“`:コンソール
$ pip install pyshark
“`

# 使ってみる
Wiresharkで保存したデータを読み込んで一つ目のパケットを覗いてみる。
“`python:main.py
import pyshark
capture = pyshark.FileCapture(“Wiresharkで保存したファイル.pcapng”)
print(capture[0])
“`
上記のコードを実行すると、
“`
Layer ETH:
Destination: 00:00:00:00:00:00:00
Address: 00:00:00:00:00:00

Layer IP:
0100 …. = Version: 4
…. 0101 = Header Length: 20

元記事を表示

n週連続 推薦システム関連の論文読んだシリーズ4週目: ユーザが同程度に好きなアイテムにおいて人気のあるアイテムにより高いスコアを与えてしまう**model-bias**を、BPR損失関数+正則化項を用いて低減する論文を読んだ

# Countering Popularity Bias by Regularizing Score Differences

published date: 13 September 2022,
authors: Wondo Rhee, Sung Min Cho, Bongwon Suh
url(paper): https://dl.acm.org/doi/fullHtml/10.1145/3523227.3546757
url(presantation slide): https://dl.acm.org/action/downloadSupplement?doi=10.1145%2F3523227.3546757&file=Countering+Popularity+Bias+by+Regularizing+Score+Differences.pdf
(勉強会発表者: morinota)

## どんなもの?

– 多くの推薦システムでは、人気のアイテム(=”short-head”なアイテム)は頻繁に推薦され、人気のないニッチなアイテム(“long-tail”なアイテム

元記事を表示

[備忘録][python][競プロ]Leet文字のプログラムを6通りで書いてみた。

# はじめに
競プロとかアルゴリズムのお勉強をしていると、文字列をleet文字列に変換するプログラムを書く機会がありました。ちょっと調べてみるだけでも6通りほどの書き方を見つけて、結構知らない知識を得られたので備忘録として記事に残します。

# leet文字とは
以下の表の変換規則に則って文字列を書き換えるものです。簡単にいうとアルファベットを似た形の別の文字に置き換えることです。

入力文字|変換後文字
:–|:–
O|0
I|1
Z|2
E|3
A|4
S|5
G|6
T|7
B|8
P|9

# 実装
## 実装1 : 力技
“`python
s = str(input())

ans = ”

for i in s:
if i == ‘O’:
ans += ‘0’
elif i == ‘I’:
ans += ‘1’
elif i == ‘Z’:
ans += ‘2’
elif i == ‘E’:
ans += ‘3’
elif i == ‘A’:
ans += ‘4’
elif i == ‘S’:

元記事を表示

Django テンプレートタグに空白を入れると認識してくれません

# 目的

こんなことで時間を使わないようにしましょう。という意味合いで投稿します。
この投稿の内容は **Djangoのツボとコツがゼッタイにわかる本[第2版]** を元に作成しています。

# 画面遷移がうまくいかない

本書では本棚アプリ作成することを目標としています。
個別に用意された本のページから一覧、編集、削除画面へ遷移することができる。

**全体**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/837411/26fc67c7-d14a-37ed-29cc-15683618c83a.png)

**個別ページの例**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/837411/cd1e6735-d839-b0ec-4408-1c91820bf5d1.png)

個別ページにて各ボタンを押下してもPage not found (404)が発生

“` console
Pag

元記事を表示

Pythonツール配布の手段として、WinPythonの実行環境に向けて一時的にpathを通すbatファイルが便利だった

# 前提
– Python言語で書いたソースコードファイルをpyファイルということにします。
– 主にpyファイルで作成したプログラムをPythonツールということにします。
– WinPythonはOSがWindowsであることを前提としたPython実行環境となります。

# 要点
:::note info
– Pythonツールを実行するにはPythonの実行環境が必要
– Pythonの実行環境を用意する手段として、Pythonをインストールするのが常套
– 配布先のPCにはPythonがインストールされていないこともあるため、インストール無しで実行できる手段が欲しい時がある
– Pythonツールからexeファイルを生成してPythonをインストールしないで実行できるようにする手段もあるが、実際にやってみると大変
– WinPythonというPythonの実行環境を1つにまとめたフォルダが配布されている
– WinPythonとPythonツールを配布し、配布先でWinPythonの実行環境に向けて一時的にpathを通すbatファイルを作ればPythonツールを簡単に実行でき

元記事を表示

こんにちは?

皆さんはじめまして
僕の名前はkojakeです
好きな食べ物は肉?です
僕はメンヘラxcodeとかでアプリを適当に作っている人です

たまに投稿すると思うので、是非見てください♪

元記事を表示

ChatGPT風に会話が成り立つLINEボット on AWS Lambda

# はじめに
ChatGPTのもとになっているOpenAIを使ったチャットボットを作ってる人はたくさんいるものの、ステートフルに会話を成り立たせてる例がなかったので作ってみました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/85204/3292c6fa-d1c5-c6dc-d7e4-25bd4cae38b3.png)
会話をデータベースに保存しないと実現できないので、割と面倒ですが、LambdaとDynamoDBを使えばそこそこシンプルに実現可能です。
“`mermaid
sequenceDiagram
User ->> LINE: Message
LINE ->> Lambda: UserID, Message
Lambda ->> DynamoDB: UserID
DynamoDB ->> Lambda: 会話
Lambda ->> OpenAI: 会話 + Message
OpenAI ->> Lambda: Response

元記事を表示

エージェントシミュレーションで野球の二番強打者理論を簡易検証してみた

– 一時期話題になっていた二番に強打者を置くことで得点力が上がるという理論について検証してみました
– 巨人でいう二番坂本とかヤクルトでいう二番山田みたいなやつです
– だいぶ簡略化してシミュレーションしています

## 打者エージェント

– 打者エージェントは一打席ごとに打撃の結果を返すだけのエージェント
– inputは打率:`BA`、出塁率:`OBP`、長打率:`SLG`のみで、1打席ごとの戻り値は、単打:`single`、二塁打:`double`、三塁打:`triple`、本塁打:`homerun`、アウト:`out`、四球:`walk`のみで他の結果は想定しない
– 打撃結果は、インプットである打率、出塁率、長打率のみに依存し、守備側の影響は無視する
– 厳密には出塁率−打率=四球率にはならないことは理解しているが、簡易化のためそのように扱う
– また安打数に占める単打と本塁打の割合は`IsoP`(=長打率−打率)と相関が強いので、回帰分析をして確率を計算(算出過程は省略しています)
– 三塁打はどの打者も安打数に占める割合が低く2022年度シーズンの規定到達者の平均

元記事を表示

Discord のメンションを LINE に通知する Bot

## はじめに
Discord の自分宛てのメンションを LINE に通知してくれる Bot を作成しました。LINE の通知をスマートウォッチに通知させ、Disocrd のメンションに気づくという流れになります。作成した経緯としては以下になります。
1. PC を立ち上げてないときでも Discord にメンションされたら気づきたい
2. Discord の通知を全てスマートウォッチに通知させるのはうるさい(メンションのみを通知させることも可能だが、通常のメッセージの通知が来なくなるので実用的でない)
3. ほとんど通知が来ない LINE へメンションされたことを通知すればいいのでは(連絡のやり取りは基本 Discord で LINE はメインで使用しない前提)
4. LINE の通知をスマートウォッチに通知させる

## 環境
* Raspberry Pi 4 Model B
* CentOS Stream 8
* Python 3.11.0
* discord.py 2.1.0
* LINE Notify

Raspberry Pi に C

元記事を表示

Discord.py の Intents について

## はじめに
Discord.py ver2.0 以降から、Bot と Discord を接続する際に必須となったパラメータ __Intents__ についてまとめてみました。

## Intents とは
Intents とは Discord.py Ver1.5 で実装され、Ver2.0 から Bot が Discord に接続する際に必須のパラメータとなりました。Intents を利用することで、”どのイベントを受信し、どのイベントを受信しないか” を Bot が選択できるようになります。不必要なイベントを取得せずに済むため Bot の負荷低減が見込めます。

## 使い方
一部の Intents には制約が設けられており、コードに記述した上で手動で有効にする必要があります。これらの Intents をまとめて __Privieged Intents__ と呼びます。
有効化の手順は以下の通りです。
1. Discord Developer Portal にログインします。
2. アプリケ

元記事を表示

Repl.it を使った Discord Bot の構築と運用

## はじめに
無料で使えるホスティングサービスである Repl.itDiscord.py を用いた、Discord Bot の構築と運用についてまとめてみました。Uptime Robot と併用することで課金せずに常時稼働してくれる Bot の運用が可能になると期待していました。しかし、検証としてダウンタイムを計測してみたところ、課金せずに常時稼働させるのは難しいという結果になりました(私の検証が正しければですが…)。ダウンタイムを気にしないのであれば Repl.it と Uptime Robot を使って Discord bot を運用してもいいでしょう。

## Repl.it とは
Repl.it とはクラウド上の IDE(総合開発環境)です。自分でサーバを用意する必要がなく、Web ブラウザさえあれば、開発、実行、デバッグが可能となります。ほとんどのセットアップは不要で、依存関係など(Python のライ

元記事を表示

Data Frameを結合する方法

# 目的
dfを横方向に連結して表示したい。

# 結論
連結なので今回はcontact()を使用する。
横方向に連結したいので、axis=1とする。

https://www.yutaka-note.com/entry/pandas_concat_join_merge

# お試し
“`py
import pandas as pd

df1 = pd.DataFrame({“名前”: [“田中”, “佐藤”, “鈴木”],
“出身地”: [“北海道”, “青森”, “秋田”],
“チーム”: [“チームA”, “チームB”, “チームB”]})
df2 = pd.DataFrame({“test1”: [“田中”, “佐藤”, “鈴木”],
“test2”: [“北海道”, “青森”, “秋田”],
“test3”: [“チームA”, “チームB”, “チームB”]})
print(pd.concat({“Data

元記事を表示

Django タグ付け機能

Twetterなどで使われているタグ付け機能を作ってみようと思い作成してみました。
とりあえず機能として成り立てばいいかなと思い作成したので、改善点などがあればコメント等で教えていただけたら嬉しいです。

# タグ付け機能をつけるモデル
~~~python:models.py
class Tag(models.Model):
name = models.CharField(max_length=50, unique=True)

class Notes(models.Model):
title = models.CharField(max_length=255)
content = models.CharField(max_length=500)
tags = models.ManyToManyField(Tag)
favorites = models.ManyToManyField(Users, blank=True, related_name=’favorite_notes’)
user = models.ForeignKey(‘ac

元記事を表示

フロントエンド技術がなんもわからんプログラマがPythonでMarkdownをHTMLにレンダリングしてCSSを適用してみた

## 概要

### やること

– MarkdownファイルをHTMLファイルに変換して、HTMLタグへの理解を深める
– CSSの基本的な扱いに慣れる

### 想定読者

– Pythonはなんとなくわかる
– Markdownは普通にわかる
– HTML, CSSはよくわからない

### 背景

– 筆者は普段Pythonでデータ加工処理やRPAを作っている。Webアプリ開発も手を出し始めた。
– ブラウザを自動操作をするにせよ、Webアプリを作るにせよ、フロントエンドがわからないとつらい。
– Markdownには慣れている。そういえば、MarkdownってHTMLを読み書きしやすくするというコンセプトで作られたものでは…?
– MarkdownからHTMLを生成するツールを使えば、自分が書いたMarkdownとの対応がよくわかるのでは!!?

## 詳細

### ツール候補

なんやかんやでPythonを選びました。

#### Visual Studio Code 拡張機能 Markdown All In One

なんかムチャクチャファイル内の文字が多くなっ

元記事を表示

Poetryプロジェクトのテンプレートを作ってみた

# 概要
新しいプロジェクトを作るとき、毎回一から環境構築するのは面倒だし、ミスがあるかもしれないし、そんな反復作業をするより開発に時間を回したい!
ということで、Python用のパッケージ管理ツールの一つである「[Poetry](https://github.com/python-poetry/poetry)」を使ったPythonプロジェクトのテンプレートを作ってみた。
自分用ではあるけど、基本的な構成ではあるため他の人も使えるように公開している。

https://github.com/torippy1024/poetry-template

構成はざっと以下の通り。
* poetry (パッケージ管理ツール)
* flake8 (リンター)
* black (フォーマッター)
* pytest (テスト)
* taskipy (タスク定義)
* pyinstaller (実行ファイル化)
* .vscode/settings.jsonでファイル保存時自動フォーマット

## 本記事で説明すること
* つかいかた
* 内容解説

## 本記事で説明しないこと
* poetryのイン

元記事を表示

2次元配列の列ごとの和の配列

アウトプットの練習も兼ねてメモ

プログラミングを一から学ぶつもりで色々やっています。趣味って言えるくらい楽しめるようになりたいです。
初歩的なことばかりですが温かい目でご覧ください。

# map関数を用いて
~~~
l = [[1, 0, 1],
[1, 1, 1],
[0, 0, 1]]

#各列の合計
columns_sum = list(map(sum, zip(*l)))
print(columns_sum)

#出力
#[2, 1, 3]
~~~

# リスト内包表記を用いて
~~~
l = [[1, 0, 1],
[1, 1, 1],
[0, 0, 1]]

#各列の合計
columns_sum = [sum(i) for i in zip(*l)]
print(columns_sum)

#出力
#[2, 1, 3]
~~~

書きやすそうなのは後者かも。

元記事を表示

Pythonの文字列検索で、対象の左の文字を入手する方法

eva=”~~~○gouki~~~” ←○の中に毎回ランダムな数字が入るとして、その数字を入手する方法

対象の右は探しやすいけど、左は情報が無かったので置いときます。
正規表現を学ぶと理解が進むぞ!

“`python:search&getleft
import re

# ○には毎回ランダムな数字が入る処理
eva = “くぁwせdrf○goukitgyふじこlp;@:「」”

# 正規表現で探したい文字列を記述する
evasearch = r’.gouki(.*)’

evacode = re.search(evasearch,eva)
evanumbers = evacode.group(0)
evanumber = evanumbers[0]

print(evanumber)
“`

元記事を表示

「ゼロから作る Deep Learning」 1章 学習内容アウトプット 2日目

学んだことをアウトプットしています。完全に自己満足ですので悪しからず。
以下の点を確実にアウトプット
①何で学んでるか
②日々の学習内容
③学びのポイント
④制作物
⑤+αで参考にした記事
⑥+αでやってみたこと

①1章 Python入門


 ・Pythonスクリプトファイル
  ⇒Pythonインタプリタは対話的に実行できるモードで簡単な実験には向いているが、
   まとまった処理を行うのは面倒。そのような場合にはPythonプログラムをファイルとして保存し、
   そもファイルをまとめて実行する。
 ・ファイル保存
  ⇒テキストエディタでコード保存(今回はVisual Studio Code)
   コマンドプロンプトで
   cd ディレクトリ
を入力し、
   python ファイル名
   で実行
 ・クラス
  ⇒ここだけの説明だけだと正直意味不明のため、ここで一旦ProgateのPythonコースを受講することにした。

③なし
④コマンドプロンプトでコードの試し打ち
⑤なし
⑥なし

元記事を表示

OTHERカテゴリの最新記事