- 1. はじめに
- 2. 実装内容
- 3. 間違った実装
- 3.1. Pythonでクロージャではなくfunctools.partialを使うべきケース
- 3.2. [電子工作] Raspberry PiでSuicaタッチ音検出器を作ってみた
- 3.3. [Python]listをPandasに変換[Pandas]
- 3.4. 面倒なExcel作業をPythonで自動化してみた
- 3.5. TkinterでImage Viewerを制作
- 3.6. py2hy
- 3.7. covid19-mieのためのスクレイピングプログラムを書いた
- 3.8. OpenBlocks IoTのキッティングスクリプトを書いてみた
- 3.9. 行列の固有ベクトルを微分するときに気を付けること
- 3.10. 初心者のためのダイクストラアルゴリズム
- 3.11. Django メモ
- 3.12. Tabpy 1.0 (2020-01版)インストール方法
- 3.13. AscendingやDescendingを加味したDICOMからPNG変換
- 3.14. あまのじゃくな*りかちゃん*は素直に野菜を食べてくれるか?
- 3.15. ポケモンで多変量分析・主成分分析を始めよう! RとTableauの連携
pythonのifはどうやってTrue/Falseを判定する?
# はじめに
プログラミング初心者です。
[前回](https://qiita.com/aloabtshk/items/89a08526009ce0b0e90e)の記事を書いたときに、pythonのifはどのようにTrueとFalseを判定しているか気になったので調べてみました。
# 対象
Python初心者から中級者の少し手前ぐらいの方向けの記事だと思っています。
かなり回りくどい説明になってしまっている箇所もありますが、ご容赦ください。
# 前提
・Python 3.8.0
# \_\_bool\_\_()と\_\_len\_\_()
まず、公式ドキュメントの[真理値判定](https://docs.python.org/ja/3/library/stdtypes.html#truth-value-testing)を参照してみます。
>オブジェクトは、デフォルトでは真と判定されます。ただしそのクラスが \_\_bool\_\_() メソッドを定義していて、それが False を返す場合、または \_\_len\_\_() メソッドを定義し
【 2020/03/31まで ! 】インプレスで無料公開中の書籍をPDF化して読む!
## 概要
コロナウイルス対策で増えた在宅時間を生かすために、インプレスさんが「できる」シリーズなど44冊を2020/03/31まで無料公開してるよ!どの書籍も面白そうで全部読みたいけど、本気を出してもあと2週間では読みきれないし、保存してゆっくり読もうと思う:sunglasses:
## 警告
* ダウンロードした画像、作成したPDFは**私的利用に限定**してください。他人への販売や譲渡は犯罪です。
* この記事は、著作権法とimpressの利用規約を確認した上で、問題ないと判断して書いています。
* **自己責任**でお願いします。分かりやすく書きすぎてリテラシーがない人に悪用されると困るので、環境構築やパッケージのインストールは省略した上で、ステップごとに分散して書
[Treasure Data][Python] TD Clientを用いた、Treasure Data上にあるクエリの実行を行う
## 背景
GUIのTreasure Workflow上においては、“`yaml
+run_query:
td_run>: sample_query
“`
な感じで、Treasure Data上のquery名でクエリの実行ができます。
しかし、Python Client側には、ばっちりこのままの機能は存在しないっぽい。(あるかもしれない)## 結論
**run_scheduleを使う**“`python
import time
import tdclientif __name__ == ‘__main__’:
query_name = ‘sample_query’
with tdclient.Client(apikey=’hogehoge’) as td:
# get unix time
unix_time = int(time.time())
run_time = unix_time + 10# set schedule query
# run now!
【メモ】マーケティングの仕事をはじめる
# 4月からマーケティング職に転職する
– マーケティングのバックグラウンドは一切なし
– プログラミングのプの字も知らない
– これまではグラフィックデザインの世界で、デザイナーやったり営業やったりプランナーやったりデザインって見た目よりも情報設計が大事じゃないですか。
実際に手を動かしてデザイン作るのも好きでありつつ、お客さんと一緒に誰にどういう見せ方したいのか、今回の目的・目標は何なのか、なんて話をしているのがすごく楽しくて、そっちサイドに移ることにしました。## 身につけたいと思っていること
1. マーケティングの基礎知識
2. マーケティングの実務的な知識
3. 技術(WEB/プログラミング)
## そのためにやること
【1,2】
読書、読書、読書。
はひたすら読書&ぐぐってでてきた記事を読んでインプット。アウトプットができてない。
【3】
技術書読んで自分でもコード書いている。
現職での業務改善できそうなところもあるので自分なりに組んでみている。
インプットかつアウトプット。
Python Multiprocessingを使った並列処理でリスト型のデータをプロセス間で共有する
はじめに
PythonでMultiprocessingを使った並列処理を実装しているときに、配列型のデータをプロセス間で共有する処理に詰まったので備忘録としてメモを残しておきます。
実装した時のpythonのバージョンは3.7.1です。実装内容
実装内容は下記の2つの関数を並列処理にして引数にとるリストをプロセス間で共有する処理です。
①3秒ごとに引数として受け取ったリストを表示する処理
②2秒ごとに引数として受け取ったリストにaを追加する処理を並列処理プロセス間の状態管理にはManagerオブジェクトを使用しました。
間違った実装
“`python
from multiprocessing import Process, Manager
import time#3秒ごとにリストを表示する
def list_print(test_list):
while True:
print(str(test_list))
time.sleep(3)#2秒ごとにリストにaを追加する
d
Pythonでクロージャではなくfunctools.partialを使うべきケース
Pythonで「並列で500個のファイルをダウンロードする」ために以下のようなコードを書きました。
“`python
from time import sleep
from concurrent.futures import ThreadPoolExecutordef func(i):
# 実際にはファイルのダウンロード処理
sleep(1)
print(f”{i}\n”, flush=True, end=””)with ThreadPoolExecutor(max_workers=3) as executor:
for i in range(500):
# 0~499番のファイルを並列でダウンロードする
executor.submit(
lambda: func(i)
)
“`これを実行すると、以下のように「同じ数字で何度も処理が実行されてしまう」ような挙動になってしまいました。
“`
499
499
499
499
499
499
144
145
146
1
[電子工作] Raspberry PiでSuicaタッチ音検出器を作ってみた
# はじめに
もう5年くらい前(2015年頃)のことなのですが、耳の不自由な知人と飯に行ったときに
**(交通系ICカードの)Suicaのタッチ音が聞こえなくて、タッチできたか不安なときがある**
という話を聞きました。
当時、ちょうど秋葉原でRaspberry Pi(ラズパイ)を買ってみた頃で、何か工作のネタが無いかなと思っていたタイミングだったので、
**Suica(PASMOでもICOCAでも何でもいいけど)のタッチ音を拾ったらLEDを光らせるマシンとか作れないかな?**
と思い立って、作ってみたのでした。ということをふと思い出したはいいのですが、機材(配線)をすでに解体してしまったので、どう説明したものかなあという感じです。
ちなみに、この記事を書いた時点でそんな状況だったのに、さらに投稿まで2年間放置状態にしていました…。# 機材
[Python]listをPandasに変換[Pandas]
XMLをParseして取得したlistをPandas DataFrameに変換を試みたのですが、XMLによって要素数が異なるとエラーが出てしまったので対処方法を記載しておきます。
#失敗例
“`
# listにはXMLによって異なる数のデータが格納
Date = []
SerialNumver = []
TrendDate = []df = pd.DataFrame({‘Date’: Date,
‘SerialNumber’: SerialNumber,
‘TrendDate’: TrendDate})
“`
エラーコード“`
ValueError: arrays must all be same length
“`
listの要素をカウントしても同じ数値が出てくるので、八方塞がりでした。#成功例
DataFrameの記述を下記のように変更しました。“`
# listにはXMLによって異なる数のデータが格納
Date = []
SerialNumver = []
TrendDat
面倒なExcel作業をPythonで自動化してみた
# Excel作業は自動化しましょう
YouTubeで動画にしました。
[面倒なExcel作業をPythonで自動化してみた【複数ファイルからデータを一瞬で抽出】](https://www.youtube.com/watch?v=bgzHqKN6teo)たくさんあるExcelファイルから特定のデータだけ抽出したいことがあると思います。
簡単なプログラムを書いたので、ご自身の目的に合わせて適宜編集・活用していただければと思います。
# プログラム
JupyterLab上にPython3でプログラムを書きました。まずopenpyxlをインストールします。これは一回やればOKです。
“`python
!pip install openpyxl
“`
次に必要なライブラリをインポートしま
TkinterでImage Viewerを制作
#1.はじめに
前回の記事に、**[Tkinterのテンプレート化](https://qiita.com/kotai2003/items/fe9b5e59c7164a95ded8)**についてご紹介しました。
今回の記事では、このテンプレートを元に、Image Viewerのアプリケーションの作り方をご紹介します。###環境
Windows 10 64 bit
Python 3.7
IDE : Pycharm#2.Image Viewerの概要
次の図に、今回作成するImage Viewerアプリケーションのポンチ絵を示します。。
このアプリケーションの機能は、画像ファイルを選択し、その画像を表示することだけです。
そして、表示画面を消す機能とアプリケーションを終了する機能を追加します。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/208980/926322d5-9501-00c0-405a-2c22a1d4762e.png)
`写真の人物は、アメリカの免疫学の権威
py2hy
[py2hy](https://github.com/woodrush/py2hy) はpythonのプログラムをhyに変換するツール.古いバージョンのhyで書かれていたため最新版(hy ver0.18)のhyで動かなくなっていた.これを0.18で動くようにした.
https://github.com/woodrush/py2hy/pull/4
主な変更点は以下
– Makefileなどは不要でsteup.pyのみで py2hy.sh のスクリプトがインストールされるようにした.念のために古いファイルも残してあるが,大部分のファイルがいらなくなった.
– 古いhyでは lforがlist-compとリネームされているので,list-compがlforに置き換わるマクロを書いた.
– 変換したコードのインテンドを揃えるためにemacsをシェルから呼び出している変更できていない点は以下
– hyのimportの構文が変更されているが,変更される前の古いimport文が生成されてしまう.ここは手作業で変換する必要がある.
covid19-mieのためのスクレイピングプログラムを書いた
# covid19-mieのためのスクレイピングを書いた
– [三重県版の新型コロナウイルス感染症対策サイト](https://w1583988913-zxm664097.slack.com/archives/CVBCTLWUX/p1584113605240800)に関連した話
– 上記サイトのリポジトリ -> https://github.com/FlexiblePrintedCircuits/covid19-mie
– つくったもの -> https://github.com/sakurum/covid19-mie-getdata## 背景とか、自分について
[三重県版の新型コロナウイルス感染症対策サイト](https://w1583988913-zxm664097.slack.com/archives/CVBCTLWUX/p1584113605240800)の立ち上げに関わり、開発をしている者です。
鈴鹿高専の4年生です。pythonとc++は割と書けて、webは勉強中です。アドレナリンどばどばで作業してローンチまでたどり着いてちょっと一息つけそうなので記事を書いています
OpenBlocks IoTのキッティングスクリプトを書いてみた
IoTゲートウェイ向け超小型サーバ **OpenBlocks** を大量にキッティングすることになった。
![bx1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/236222/0c2e056e-a6f1-54bc-9dbe-0768726f9411.jpeg)
OpenBlocks IoTファミリには、ぷらっとホーム社が提供する専用のGUIアプリケーション、Web UI がインストールされている。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/236222/9a9ad4e3-01d6-4e31-8f81-ff7d8bdfd21c.png)
ぷらっとホーム社の[FAQ](https://openblocks.plathome.co.jp/products/obs_iot/bx1/faq3.html)によると、ネットワークの設定など Web UI から設定可能な項目に関しては Web UI 上から設定するこ
行列の固有ベクトルを微分するときに気を付けること
# まとめ
行列の固有値を微分するとき、固有値が縮退していると発散します。適宜対処しましょう。
# きっかけ
前回の記事
https://qiita.com/sage-git/items/1afa0bb8b3a7ee36600d
を書いて、固有値が微分できて最適化できるなら、固有ベクトルも同様にできて、欲しい固有ベクトルが得られる行列が得られるんじゃないかと思い、やってみました。
実際得られたのですが、ちょっとした問題があったので、対処しました。# 数学
導出はこちらのフォーラムを参考に。
https://mathoverflow.net/questions/229425/derivative-of-eigenvectors-of-a-matrix-with-respect-to-its-componentsある行列 $A$ に対し、固有値 $\lambda_i$ があって、それに対応する固有ベクトル $\vec{n}_i$ を考えて、これを微分することを考えます。
## 固有値の微分
“`math
\frac{\partial \lambda_i}{\par
初心者のためのダイクストラアルゴリズム
ダイクストラのアルゴリズムってあるじゃないですか?名前も覚えにくいしそもそも重み付きグラフの最短経路問題とか実務で実装することそうそうないのですぐ忘れちゃうんですよね。。。
# ダイクストラアルゴリズムとは
ダイクストラアルゴリズムとはグラフの最短経路を求めるアルゴリズムです。名前だけは聞いたことのある方も多いかと思います。やってることはイージーでシンプルなんですが少しとっつきにくいですが一つ一つ理解していけば割とわかりやすいアルゴリズムです。
重み付き出ない、迷路の探索などは幅優先探索で解けるのですが、各辺に重みがついてる場合は結局全通りを計算しないといけないことになります。全ての頂点を一回だけ通るとして、辺E個あるとすればO(E!)となり計算量は爆発してしまします。
これだと計算するにも少し厳しいです。そんな問題を効率的にといてくれるアルゴリズムそれがダイクストラアルゴリズムです。
ちなみに各辺のコストは非負の値(0以上)でなければなりません。負の数が含まれてる場合はベルマン-フォード法などを使用することになります。
# 手順
ダイクストラ法の手順はかなり単純です。
Django メモ
# py36ファイルをアクティベートする
“`shell
activate py36
“`# ファイルのを一覧で確認
“`shell
dir
“`# Djangoアプリを構築する
“`django
django-admin startproject プロジェクト名
“`# サーバーを起動する
“`django
python manage.py runserver
“`
# データの結合・統合を行う
“`django
python manage.py migrate
“`
# アプリケーションの追加
“`django
python manage.py startapp アプリケーション名(複数形の名前が良い)
“`
# 新しい定義ファイルを自動生成する
“`django
python manage.py makemigrations
“`
# データベースにアクセスする
“`django
sqlite3 db.sqlite3
“`
# Djangoの管理画面にアクセスするためにアカウントを作成する
“`django
python manag
Tabpy 1.0 (2020-01版)インストール方法
Tabpy 1.0 が2020-01に発表され、Tableauのサポートを受けられるようになったとのことで、本格的に利用が広まるのでは?ということで、改めてTabpyの導入方法(とっても簡単)をPython環境の導入(Windows)から、まとめます。安心してください。すぐ終わります。
※Tabpy1.0ではプリインストールの機械学習関数(エンドポイント)が利用できたり、ログ機能や、セキュリティの柔軟な構成が可能になったりとパワーアップしています。
※Tableau Prep BuilderからPython を呼ぶときにもTabpyが必要になりますので、利用シーンが増えていくかと思います。
① まずは、Anacondaを導入します。
こちらからダウンロ
AscendingやDescendingを加味したDICOMからPNG変換
#目的
– DICOMからPNGに変換
– ただし、被験者によっては撮像の順番(Ascending, Descending)がばらばら
– PNGのファイル名は、Decendingを基準として番号をふる詳細は、[こちら](https://www.aiprogrammers.net/entry/2020/03/13/212634)に記載しております。
よかったらご覧ください。
あまのじゃくな*りかちゃん*は素直に野菜を食べてくれるか?
# はじめに
女の子のチャットボットを作りたい。と思い、あまのじゃくなりかちゃんBOTを作りました。
りかちゃんは、小学1年生の女の子です。「野菜食べなさい。」「早く野菜食べて!」と言っても、素直に聞いてくれません。
さて、どうやってお願いすると、ちゃんと野菜を食べてくれるでしょうか?![rika_bot.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/248927/d1ed20fa-dec1-c95b-91c0-ccd3a76cd3c1.png)
(QRコード載せようか…。)
# できたもの
## あまのじゃくなとき
![IMG_3671.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/248927/934dda8a-e39a-8cc1-4d71-51f0fcded560.jpeg)
命令口調だと、言うことを聞いてくれません。## 素直なとき
![IMG_3672.jpg](https://qiita-
ポケモンで多変量分析・主成分分析を始めよう! RとTableauの連携
2015年の秋にPokemon Goが発表され、世界的に社会現象となったポケモンですが、今もなお、子供にも、大人にも絶大な人気があります。
ポケモンのキャラクターがユニークでバラエティに富んでいるということが、人気の理由なのではないでしょうか。
私も全くのポケモン初心者だったのですが、ポケモン・データから何か面白い分析はできないかと試行錯誤しています。
世界的データサイエンスのコンペサイト:Kaggleで公開されているデータセットの中にはポケモンに関するデータが結構あるようです。データサイエンティストにとってPokemonは興味深い研究課題のようですね!
ということで、今回はKaggleのデータセットからポケモンの属性データを主成分分析を使って、理解していこうと思います。
そもそも、ポケモンには、CP(Combat Point: 戦闘力)、HP(Hit Point:体力)、体重、身長 ・・・ などなど、いろいろな属性があるようです。
参考:
【ポケモンGO】CPとは?上限の上げ方と初期値/進