- 1. GUI操作でデータを手軽にグラフ表示するツールを作ったったった
- 2. 【Python】エクセル基本操作(読み込み、値書き込み、保存、最大列数、最大行数)
- 3. Python仮想環境作成コマンド
- 4. discord.pyでニコニコ生放送の放送開始通知をDiscordに投稿するbot
- 5. Python3 List/辞書型メモ
- 6. django oscar 簡易チュートリアル
- 7. Pythonの勉強
- 8. TypeError: argument of type xxxxxx is not iterableが出る場合
- 9. リスト内包表記
- 10. UnicodeEncodeError: ‘ascii’ codec can’t encode characters in position 5-12: ordinal not in range(128)が出る場合
- 11. pythonのスクレイピング(requests)でエラーが出た時
- 12. 複数の種類の例外を捕捉する
- 13. 高いバイオリンを買いました。
- 14. ONNX RuntimeをJetson TX2にビルドしたメモ
- 15. can’t pickle annoy.Annoy objectsの対処法
- 16. Pythonのasyncioを用いたUNIXドメインソケットでreadが終わらない事例
- 17. Redis の WebAPI を作成
- 18. Redis の WebAPI (python CGI)
- 19. Google Colaboratory上でBERTを使い、日本語文章の二値分類を行う。
- 20. 離散フーリエのプログラムを自作した
GUI操作でデータを手軽にグラフ表示するツールを作ったったった
データ分析の作業をしていると、データを数字で追うのとは別にグラフ等で視覚的にデータの特徴を確認することも多々あると思います。
そういった作業が多く、データの組みあわせを自由に変えながらグラフをすぐに表示できる「Glance」というツールを作ってみました。
GUI作成にはPythonの`tkinter`というライブラリを使用しました。ファイルは[こちら](https://gitlab.com/katsuki104/glance)にあります。
**※Windows環境で使う用に作ったのでMac環境だと多分別途修正が必要です…**# 概要
読み込んだデータから選択してグラフ表示するだけのシンプルなツールです。
実装した動作は大きく3つあります。1. ファイル選択からデータを読み込みそのカラムを一覧で表示する
![sample1.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/160512/394ea708-9f6d-4aec-bf7e-87f5d64b03e0.gif)2. データを選択して
【Python】エクセル基本操作(読み込み、値書き込み、保存、最大列数、最大行数)
# pythonでエクセルを扱う
Pythonでエクセルを扱う方法はいくつかあるが、ここでは**openpyxl**を使った方法を紹介する。“`python:sample.py
import openpyxl
“`
#新規エクセルファイルの作り方
ここでは、新規エクセルファイルの作り方を紹介する。“`python:sample.py
import openpyxlwb=openpyxl.Workbook()
ws=wb.active
ws.title=”シート名”
wb.save(“保存先のpath”) #エクセルファイルの保存
“`#既存エクセルの読み込み
次に既存エクセルの読み込み方を紹介する。● 読み込むために必要な物
・既存のエクセルファイル
・エクセルファイルまでのPATH“`python:sample.py
import openpyxlpath=r”読み込みたいファイルまでのpath”
wb=openpyxl.load_workbook(path)
ws=wb.get_sheet_by_name(“読み込みたいシート名”)
“`
Python仮想環境作成コマンド
# 仮想環境とは
開発するアプリケーションによっては特定のバージョンのソフトウェアを使いたいといったシチュエーションが出てくることがあります。そこで一般的には、他の開発環境から独立した環境で開発作業を進めることになります。それが仮想環境です。Pythonには標準パッケージとして”venv”というものが組み込まれているのでそちらを使っていきます。# 動作環境
Windows10
Python 3.8.1
Pycharm 2019.3.1 Community Edition (最強のPython IDE)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286189/8bb2e22f-71c3-fc8b-a977-80b0e6708453.png)# 仮想環境の作成
PycharmのTerminalでpythonが動く事を確認したら下のコマンドを入力“`terminal:terminal
python -m venv <ディレクトリ名>
“`今回はそのまま”venv”とい
discord.pyでニコニコ生放送の放送開始通知をDiscordに投稿するbot
# 初めに
Qiita初投稿になりますfctokyo1016ことリョウ(凌)と申します。 Twitter→[@fctokyo1016](https://twitter.com/fctokyo1016)
普段は主にPHPでの開発なんかを行ってます。
エンジニア歴数年のほぼ素人がなんとか作ったコードなので大目にみていただければ幸いです。# 作ろうとした経緯
– ニコニコ生放送[10名ほどが所属する企画チーム](https://ch.nicovideo.jp/boxtv)に在籍していて、各々が自由に同じコミュニティで生放送が行える状態
– ニコ生のアラートが仕様変更で使えなくなってしまったので、他のメンバーの放送を見る際にURLを探すのが煩わしい
– メンバー全員が入っているDiscordのサーバーに通知が来れば楽なのでは?
– TwitchやYoutubeLiveなどのサイトは既に既存のbotがあるがニコニコには未対応
– なんとかインチキ(自作)できんのかね?# 苦労した点
– 上記でも記載したがニコ生のアラート仕様変更でRSSもAPIもユーザー生放送には対応していない# ア
Python3 List/辞書型メモ
忘れないようにメモ。
# 型について
“`
# List型
sampleA = [[name,”Sato”],[age,1]], [[name,”Mori”],[age,20]]# Dictionary型
sampleB = {“apple”:1, “orange”:2}# 型を調べる
type(sampleA)
type(sampleB)#List型からKey/Valueを取り出す
for index, value in enumerate(sampleA)#辞書型からKey/Valueを取り出す
for index, value in items(sampleA)
“`
django oscar 簡易チュートリアル
ecサイトを一人でパパッと作る必要性が生じたので、パッケージやフレームワークをフル活用すればパパッとECサイトが完成する(はず)。てことで、ウェブフレームワークにDjango。そしてECパッケージにOscarを使用。
django-oscarの[django-oscar/Building your own shop](https://django-oscar.readthedocs.io/en/stable/internals/getting_started.html)を基本的になぞっているだけですが参考に。
最終的に決済機能のないECサイトを構築します。また、これはあくまでもチュートリアルです。
## 開発環境
– Mac OS X
– Python==3.8.0
– Django==2.2.9
– django-oscar==2.0.4## Setup
[ドキュメント](https://django-oscar.readthedocs.io/en/stable/internals/getting_started.html)では、`mkvirtualenv`か`virtu
Pythonの勉強
#python
勉強中なので学んだことをまとめていく。随時追加。
#リスト
辞書を宣言
`ListName = [Value1,Value2, ・・・] `
0番目の値を出力。[-1]で一番後ろの値、[-2]で後ろから2番目の値。
`print(DictioaryName[0]) `
リストの末尾に要素を追加
`team.append(“いぬ”)`
リストの要素を上書き
`team[0] = (“ねこ”)`
リストの要素を削除
`team.pop(0)`#辞書
辞書を宣言
`DictioaryName = {Key:Value, ・・・} `
出力
`print(DictionaryName)`
Keyに対応するValueを出力
`print(DictioaryName[Key]) `
TypeError: argument of type xxxxxx is not iterableが出る場合
#1. 概要
Pythonコード実施時、try:の範囲でエラーが発生すれば、exceptに処理が移る。
下記のコードでは、エラーコードが”sqlite3.IntegrityError”であれば、except以下の
コードを実施する流れになっている。“`python:test.py(関係あるコードのみを掲載)
if __name__==’__main__’:
try:
(略)except sqlite3.IntegrityError as ex:
if “UNIQUE constraint failed: STOCK_INFO.STOCK_NUM” in ex:
print(“ERROR:{}”.format(ex))
“`上記のコードを実施するとエラーが発生する。
“`console
root@2a1627805ea9:/home/stock# python3 sqltest.py 13
7
UNIQUE constraint failed: STO
リスト内包表記
“`py:1
t = (1, 2, 3, 4, 5)
l = []for i in t:
l.append(i)print(l)
“`“`:1の実行結果
[1, 2, 3, 4, 5]
“`
これをリスト内包表記で書くと“`py:1をリスト内包表記で
t = (1, 2, 3, 4, 5)
l = [i for i in t]
print(l)
“`“`:1をリスト内包表記での実行結果
[1, 2, 3, 4, 5]
“`3で割った余りが0の数字だけリストに入れる場合を考える。
“`py:2
t = (1, 2, 3, 4, 5, 6)
l = []for i in t:
if i % 3 == 0:
l.append(i)print(l)
“`“`:2の実行結果
[3, 6]
“`
これをリスト内包表記で書くと“`py:2をリスト内包表記で
t = (1, 2, 3, 4, 5, 6)
l = [i for i in t if i % 3 == 0]
print(l)
“`“`
UnicodeEncodeError: ‘ascii’ codec can’t encode characters in position 5-12: ordinal not in range(128)が出る場合
#1 問題点
Python3にて、データをcsvに書き込み実施時にエラーが発生する。
“`python:test.py(関係あるコードのみを掲載)
def db_dump(c):
sql_com=’SELECT * FROM STOCK_INFO ORDER BY STOCK_NUM ASC’
tmp=c.execute(sql_com)
with open(setting.CSV_DB_PATH,’w’) as f:
writer=csv.writer(f)
writer.writerows(tmp)“`
上記のコードを使い、データをcsvファイルに書き込みを行う時にエラーが発生する。
“`console:
root@2a1627805ea9:/home/stock# python3 sqltest.py 9
7
Traceback (most recent call last):
File “sqltest.py”, line 105, in
db_dump(cur)
pythonのスクレイピング(requests)でエラーが出た時
#[Errno 11001]について
社内でpythonを使ってスクレイピングしようとしたとき、[Errno 11001]が出た。プロキシ指定を行うと解決。
“`py
import requests
from bs4 import BeautifulSoupproxies = {
‘http’: ‘http://123.45.678.000:0000’,
‘https’: ‘http://123.45.678.000:0000’,
}url = ‘https://ja.wikipedia.org/wiki/Python’
res = requests.get(url, verify=False, proxies=proxies)
soup = BeautifulSoup(res.text)soup
“`“`
Python – Wikipedia
複数の種類の例外を捕捉する
“`py:1
import sys, tracebacknumber1 = 100
number2 = ‘a’print(‘strat’)
try:
answer = number1 / number2
print(answer)
except ZeroDivisionError as e:
print(‘0では割れません。’)
sys.stderr.write(traceback.format_exc())
except NameError as e:
print(‘未定義の変数を呼び出しています’)
sys.stderr.write(traceback.format_exc())
except Exception as e:
print(‘予期せぬエラーが発生しました。’)
sys.stderr.write(traceback.format_exc())
finally:
print(‘end’)
“`“`:1の実行結果
strat
予期せぬエラーが発生しました。
end
“`“`:
高いバイオリンを買いました。
#少し高いバイオリンを買いました!!#
あ、右がちょっといいやつね。(7万円)
左の今まで使っていた1万円前後のやつです。##高いバイオリンと安いバイオリンの違い##
+ 音の出やすさが違う
+ 各部がしっかり作られているのでチューニングがしやすい
+ 経年による音の劣化が少ない(らしい?)
+ なにより音の質が違う##音が違う。どれくらい違う?##
と、ここまでだと完全に音楽ポエムになるわけですが、実際のところどれくらい音が違うんですかね?
弾き比べた感じ、耳で感じる音はしっかり違いが確認できました。
というか、Dの開放弦の明るさと色合いに惚れて買ったので……***
じゃあ、実際にFFT(高速フー
ONNX RuntimeをJetson TX2にビルドしたメモ
# 概要
– [公式のビルドガイド](https://github.com/microsoft/onnxruntime/blob/master/BUILD.md)を見ながら導入しようとしたときにいろいろ躓いたのでメモ
– クロスコンパイルの方はどうにもうまくいかなかったので、Jetson TX2側でやる## cmakeのインストール(>=3.13)、ついでにpip最新化
最近のLinux系なら、たいていパッケージマネージャーに登録されてる`python3-pip`が入ってるはず。
これはこれで便利なんだけど、自分自身が結構な確率でうっかり`sudo pip3 install -U pip`とかやらかして環境壊す残念なタイプという………
なので、`cmake`を入れ替えるついでに`pip`も入れ替えてしまう。`cmake`内蔵の`curl`のバグ?で本体ビルド時に引っかかったので、OS側のを使うようにしておくのが無難っぽい。
“` bash
sudo apt remove python3-pip cmake -y
wget https://bootstrap.pypa.io
can’t pickle annoy.Annoy objectsの対処法
機械学習系のmodelは基本pickleで管理していたんですが,[Annoy](https://github.com/spotify/annoy)についてはpickleでの保存時に以下のエラーがでます.
“`terminal
can’t pickle annoy.Annoy objects
“`とりあえずググってHitしたissueをみてみます.
https://github.com/spotify/annoy/issues/367
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/437488/4cabd05c-3b48-a49f-48c3-b0846a63359b.png)
とのことです..
ちゃんと[Sampleコード](https://github.com/spotify/annoy#python-code-example)をみたら,loadメソッドとsaveメソッドが用意されていたんですね.
ということで,このサンプルコードの通り
“`Python
from
Pythonのasyncioを用いたUNIXドメインソケットでreadが終わらない事例
# 概要
+ Python3では、[asyncio](https://docs.python.org/ja/3/library/asyncio.html “asyncio — 非同期 I/O — Python 3.8.1 ドキュメント”)モジュールを利用することで**UNIXドメインソケット**による**プロセス間通信**(IPC)が可能である。
+ クライアントプロセスからソケットに書き込まれたバイト列を読み込む際に、書き込みが終わっているにもかかわらず**サーバープロセス側の読み込みが終わらない**という事態が発生した。
+ **書き込み終了時に`write_eof()`を呼び出す**ことでサーバープロセス側の読み込みが終了した。# 環境
+ Windows Subsystem for Linuxを使用
+ ホストOS: Windows 10 Home 64bit
+ ゲストOS: Ubuntu 18.04.3 LTS
+ Python 3.8.0#事例
Responderで作成するサイトと自作の計算プログラムのプロセス間通信にUNIXドメイン
Redis の WebAPI を作成
Redis の WebAPI をさまざまな言語、フレームワークで作成します。
まずは、仕様です。1)サーバーで Redis が動いていること。
key に対して、JSON 文字列を保存するという運用をします。
“`text
$ sudo systemctl status redis
● redis-server.service – Advanced key-value store
Loaded: loaded (/lib/systemd/system/redis-server.service; enabled; vendor pre
Active: active (running) since Tue 2020-01-14 12:03:10 JST; 1h 30min ago
Docs: http://redis.io/documentation,
man:redis-server(1)
“`2)作成する API は次の3つです。method は POST です。
> key を与えて値の読み出し。
> key と valu
Redis の WebAPI (python CGI)
こちらで定めた仕様を満たすサーバーサイドのプログラムです。
Nginx + fcgiwrap で動作を確認しました。“`py:redis_read.py
#! /usr/bin/python3
# -*- coding: utf-8 -*-
#
# test_dir/api/redis_read.py
#
# Jan/14/2020
#
# ——————————————————–
import sys
import os
import string
import json
import redis
import cgi
import cgitb
cgitb.enable()
#
# ——————————————————–
def get_key_proc():
ff=cgi.FieldStorage()
if “key” in ff:
value = ff.getfirst(“key”,””)
else:
Google Colaboratory上でBERTを使い、日本語文章の二値分類を行う。
この記事では、Google ColaboratoryのGPUを使用してBERTを動かし、日本語文章の二値分類を行います。
前回の記事の続きです。
詳細な説明は下記の記事で行なっていますので、初めての方に関しては、そちらを参考に進めてください。
[Google Colaboratory(GPU)上でBERTのチュートリアルを行う](https://qiita.com/Yuu94/items/e20373ecada2afa2cb4d)学習済みモデルは、GoogleDriveに保存し、GoogleColaboratoryにGoogleDriveをマウントして使用します。
***注意**
GoogleDriveに学習済みモデルとデータセットを保存するため、1.6GB以上の空きが必要です。
一度だけ試す場合は、GoogleDriveとGoogleColaboratory、を連携せず、GoogleColaboratoryのGPUインスタンス上にモデルやデータセットを保存する方が良いかもしれません。# BERTを使用した日本語文章の日分類
ここでは、BERTとBERT日本語学習済みモデル
離散フーリエのプログラムを自作した
離散フーリエ変換(DFT)のプログラムを自分で作ってみました。
フーリエ変換は大学3年生の時に授業でやったのですが、昔のことなので忘れてしまいました(sinやcosや積分が出たような気がする程度)。
化学系出身ということもあり、DFTといえば密度汎関数理論の方を思い浮かぶタイプの人ですが、google教授にいろいろ教わりながらやりました。
結論としては、だいぶ簡単でした。#離散フーリエ変換
wikipedia先生曰く
$$ F(t)=\sum_{x=0}^Nf(x)e^{-i \frac{2\pi tx}{N}} $$
ここで、Nは任意の自然数(データ数?)、eはネイピア数、iは虚数単位、πは円周率、tは周波数です。これをプログラムに落とし込んでいきます。
まずは適当に三角関数を足し合わせたものを作ります。
周波数が9で振幅1の正弦波と、周波数18で振幅2の正弦波を重ねました。
$$ y(x) = \sin(9×2\pi x)+2\sin(18×2\pi x)$$グラフ描画はpandasのplotを使いました。
“`python:dft.py
%matplotlib i