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

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

AWS Lambda を使ってFizzBuzzしたった

# Backgroud
AWS Lambdaを使ったサーバレスアプリケーションについての話を聞く機会が増えたので試しに作ってみた。

# Preparetion





# Development (l

元記事を表示

公的空間のイベント混雑状況をレーザー距離計で可視化する

## 概要 
* 公的空間で行われるマルシェの混雑状況を2日間に渡りカウントし可視化する実験を試みた
* 通行量、滞在人数、滞在時間を計測するには入り口、出口を絞る必要がある。今回は会場のあるポイントの人の通過量を混雑度と見なす
* イベントでの入場者数は貴重なデータである。無人でカウントがどこまでできるのかを試してみる
* 広島駅北口エリアのエリアマネジメントを行う、エキキタまちづくり会議 (https://ekikita.jp) にご協力頂いた。

【参考】
 エリアマネジメントについて(国土交通省)
 https://www.mlit.go.jp/common/001059393.pdf
 地方創生 まちづくり – エリアマネジメント – (内閣官房まち・ひと・しごと創生本部事務局)
 https://www.kantei.go.jp/jp/singi/sousei/about/areamanagement/areamanagement_panf.pdf

## 用意するもの
* Raspberry Pi3 Model B (4でもおそらく大丈夫)
* Raspberry Pi用

元記事を表示

IQ Bot カスタムロジック:テーブルの最後のn行を削除する

IQ Botを使って、テーブルの「最後のn行」を削除したいんですがどうすればいいですか? という質問を同僚から受けました。

同様のユースケースが他にどれだけあるのか不明ですが、備忘録がわりに載せておきます。

“`python:最後のn行を削除

#表の操作をするときに必ず入れるコード(最初)
import pandas as pd
df = pd.DataFrame(table_values)

# ここから先が今回の処理

n = 2 # 最後のn行を削除したい、そのnの数を指定。

for i in range(len(df)-n,len(df)):
df.at[str(i),”列名”] = “この行を削除します” # 「列名」はテーブルに存在する適当な列名

df = df[df[“列名”] != “この行を削除します”] # 「列名」は↑と揃える

#表の操作をするときに必ず入れるコード(最後)
table_values = df.to_dict()

“`

元記事を表示

Efficient GANをkerasで実装

#概要
業務で異常検知手法を調査していた時にEfficientGANという手法を見つけたのですが、著者のソースコードはライブラリのバージョンが記載なく実行に手こずったので、勉強も兼ねてkerasで実装してみました。
なお、実装したのはテーブルデータ用のネットワークのみで、推論時のロス計算の内”feature-matching loss”は未実装です。
※EfficientGANについてはこの記事で解説しませんが、分かりやすい解説記事が有りましたので、以下に記載しておきます。

ソースコード:https://github.com/asm94/EfficientGAN

↓参考にしたもの
元論文      :https://arxiv.org/abs/1802.06222
著者のソースコード:https://github.com/houssamzenati/Efficient-GAN-Anomaly-Detection
解説記事     :https://qiita.com/masataka46/items/49dba2790fa59c29126b

#実行環境
・Windows10 64

元記事を表示

Google Colaboratory に登録しているスニペット(PDFテキスト変換)

# PDFテキスト変換

## pdfminer

### コマンド

“`python
!pip install pdfminer.six
!python /usr/local/bin/pdf2txt.py -o data.txt data.pdf
“`
### Python

“`python
from pdfminer.high_level import extract_text

text = extract_text(“data.pdf”)
“`

## pdfbox

### コマンド

“`python
# 最新バージョンでURLが変わる
!wget https://www-eu.apache.org/dist/pdfbox/2.0.21/pdfbox-app-2.0.21.jar -O pdfbox-app.jar

# テキスト変換
!java -jar pdfbox-app.jar ExtractText -sort -encoding UTF-8 data.pdf

# 画像
!java -jar pdfbox-app.jar PDFToImage -i

元記事を表示

Google Colaboratory に登録しているスニペット(スクレイピング)

# Beautifulsoup4

## ベース
“`python
from urllib.parse import urljoin

import requests
from bs4 import BeautifulSoup

url = “http://example.jp”

headers = {
“User-Agent”: “Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko”
}

r = requests.get(url, headers=headers)
r.raise_for_status()

soup = BeautifulSoup(r.content, “html.parser”)

urljoin(url, “index.html”)
“`

## セッション
“`python
with requests.Session() as s:

r = s.get(“http://example.jp”, headers = headers)
r.

元記事を表示

[pandas] atメソッドでデフォルトのIndexラベルを指定するときは、””がいらない件

# はじめに

DataFrameを使っていて、表題のことを解説されているサイトが見つからなかったので、共有します。
デフォルトのIndexラベルを指定する方法です。

# 基本的なatメソッドの使い方

まずは、適当なDataFrameを準備します。

“`python
import pandas as pd
import numpy as np

df = pd.DataFrame(np.arange(12).reshape(3, 4),
columns=[‘col_0’, ‘col_1’, ‘col_2’, ‘col_3’],
index=[‘row_0’, ‘row_1’, ‘row_2’])
“`

↓こんなDataFrameが作られます。
![スクリーンショット 2020-11-16 18.16.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/330623/b6cf5fea-4630-58ef-40da-c1df

元記事を表示

PythonでXGBoostを実装する方法が2つあって混乱した話+全体的なメモ

#はじめに
XGBoostは,GBDTの一手法であり,pythonでも実装することが出来ます.
しかし,実装例を調べてみると,同じライブラリを使っているにも関わらずその記述方法が複数あり,混乱に陥りました.そのため,筆者の備忘録的意味を込めて各記法で同じことをやってみようというのがこの記事の趣旨です.
(XGBoostの詳しい説明等は省きますのでご了承ください)

#実装環境
* Windows10
* Anaconda3
* Python3
* XGBoostは以下のライブラリをインストールして実装

“`
pip install xgboost
“`

#実装内容
* sklearn付属データセットである**Boston house-prices**を用いて住宅価格を回帰する
* XGBoostによる回帰を2種類の記述方法で行う
* 回帰/評価/FeatureImportanceの表示 などをそれぞれできるだけ同じ条件で行う

#実装~共通部~

###データセットの読み込み

“`python3:import_boston_datasets.py
#今回使うライブラリを先に

元記事を表示

【Python】Python/Scikit-learnで初めてのSVM

# はじめに
Pythonを触っていると機械学習のライブラリが豊富とはよく聞きます。
自分自身も存在は知っていましたが実際に自分で手を動かしてやったことがなかったです。
ただ、[この記事](https://qiita.com/ryu1104/items/06a71d8f6956da889bb8)を読んで簡単にできそう!と思ったのがきっかけで機械学習、特にSVM(Support Vector Machine)をやってみたので投稿します。

ここでは、天気の**データの取得からとても簡単なデータの処理、学習、可視化**までを行います。

主に参考にしたのは以下の2つの記事です。
[【Python】pythonで簡単に機械学習入門(SVM)](https://qiita.com/ryu1104/items/06a71d8f6956da889bb8)
[[python 機械学習初心者向け] scikit-learnでSVMを簡単に実装する](https://qiita.com/kazuki_hayakawa/items/18b7017da9a6f73eba77)

# 環境
Windows 1

元記事を表示

PythonのnetCDF4読み込み速度とfor文のネスト

気象データを長期間に渡って異なる気圧面でプロットしようとすると、for文によるネストやnetCDFファイルの読み込みが自然と多くなる。

そこでfor文のネストの構造を変えることで、データの配列を得るのにかかる時間がどのように変わるのかを調べてみた。

# 検証コード1
 検証コードは[こちら](https://note.nkmk.me/python-timeit-measure/)を参考にした。
 データは[NCAR’s RDA](https://rda.ucar.edu/)から得た。データにはジオポテンシャルで、[時間, 気圧面, 緯度, 経度]の4次元配列である。なお、時間は0~23の24時間、気圧面は37となっている。

 `func_1`はデータを1回読み込み、3次元配列をaに格納している。その後、各気圧面におけるジオポテンシャルをbに代入している。
 `func_2`は各気圧面ごとにデータを読み込み、2次元配列をその都度得ている。

“`check1.py
import timeit
from netCDF4 import Dataset

def func_1():

元記事を表示

googleapiclientを使うプログラムでPyInstallerするとエラーがでた話

# 問題
Google Api(スプレッドシート)を使うプログラムをPyInstallerで実行ファイル化しようとしたら,コンパイルはできたが実行時にエラーが発生.
コンパイルしたプログラムは以下のようなもの

“`python:main.py
from googleapiclient.discovery import build
# 以下略
“`
ここで,

“`sh
pyinstaller –onefile main.py
./dist/main # コンパイルに成功し,実行ファイルができる
“`
さて,実行ファイルを実行すると,

“`
pkg_resources.DistributionNotFound: The ‘google-api-python-client’ distribution was not found and is required by the application
“`
:middle_finger_tone2::laughing::middle_finger_tone2:

# 解決方法
google-api-clientのバージョンを*

元記事を表示

総務省APIを使ってデータを取得する

# 総務省APIを使用してデータを取得

計量経済学のパネルデータを作成するためにPythonでデータをとってみました。(備忘録です)

## 準備
Python実行環境
総務省APIの取得
[こちら](https://www.e-stat.go.jp/api/api-info/api-guide)からユーザ登録して取得できます。

## コード

“`python:def_TakeData
import requests,urllib
import pandas as pd
import numpy as np
import json
def get_json(base_url,params):
params_str=urllib.parse.urlencode(params)
url=base_url+params_str
json=requests.get(url).json()
return json

def take_data(dataid):
appID=”appIDを入れます”
base_url=”http://ap

元記事を表示

pandas DataFrame で任意の値を含む行を削除 

#前提
データフレームのある列(ここではid列)について,特定の値が入っている行をすべて除去する必要がありました.行番号を取得したりいろいろ方法を検討しましたが,簡単に処理する方法があったのでメモしておきます.

#コード
“`python
import pandas as pd
data = pd.read_csv(“元データのパス”)

list = [1,2,3] ###消去したい任意の値

for i in list:
data = data[data[‘id’] != i]
“`
たったのこれだけで済みました.

元記事を表示

円周率の近似分数について

#円周率
円周率。ただの定数であるがただの定数でない魅力と謎が詰まっている偉大な数です。
証明は簡単でないが一番馴染み深い無理数であり超越数なのではないのでしょうか?

##円周率の値
様々な方法で求められてきた歴史があります。今回の記事とはそこまで関係がないので具体的な方法を述べたりしませんが, 普通のノートpcでも現代のスペックであれば100桁くらいは簡単に(秒で)求めることができます。なぜそれで求められるか?の理論は普通に難しかったりしますが計算方法さえ認めてしまえば簡単です。
一応値を述べておきますが
π=3.141592653589 793238462643 383279502884 197169399375 105820974944 592307816406 286208998628 034825342117 067982148086 513282306647…と続いていきます。

##円周率の近似分数
今回の本題の近似分数とはなんぞや。という話です。厳密にやろうとすれば大学数学で勉強する実数の(有理数, 無理数の)稠密性なんかを考える必要がありますが直感的な説明だけで

元記事を表示

Ubuntu 20.04でSSL接続エラー(ssl.SSLError: [SSL: DH_KEY_TOO_SMALL])が発生する際の対処法

Ubuntu 20.04でPythonのサードパーティAPIを用いてSSL通信しようとしたところ以下のエラーが発生。Ubuntu 20.04で起こるらしい。
>(Caused by SSLError(SSLError(1, ‘[SSL: DH_KEY_TOO_SMALL] dh key too small (_ssl.c:1123)’)

下記のQAを参考に解決した方法をまとめます。
https://askubuntu.com/questions/1233186/ubuntu-20-04-how-to-set-lower-ssl-security-level

# openssl.cnfの編集
以下コマンドでopensslコンフィグファイルの配置ディレクトリを確認。
>% openssl version -d

ちなみに一般的には”/usr/lib/ssl”配下にある。

ファイル冒頭に以下の1行を追記して保存。
>openssl_conf = default_conf

次にファイル末尾に以下を追記する。
>[ default_conf ]
>
>ssl_conf = ssl_sec

元記事を表示

【検証】pytorchの最適化関数で点群の位置合わせをしてみる その1

#はじめに
最近pytorchを覚えたので遊んでみます。

やることとしては、点群の位置合わせです。

目的としては、icpは局所解に陥りがちなイメージが個人的にはありますが、
pytorchの最先端な最適化関数なら結構いい線行くんじゃね?
というふわっとした期待の元やってみます。

流れは以下の通りです。

“`
for 点群Bの各ポイント
1.変換行列$P = [R|t]$を定義する。
このパラメータの最適化を行うことで位置合わせをする。
2.点群の最近傍を計算し、最も近いポイントの組を取得する。
3.変換行列$P$を適用した点群Bのポイントと、
点群Aの最近傍のポイント、この2つを損失関数で評価する。
4.最適化処理
最適化された変換行列$P$を適用してもう一度1から実行
“`

以下の流れで検証します。

“`
1.同じ点群を2つ用意して、移動だけ行う(3次元のパラメータの調整)
2.同じ点群を2つ用意して、回転だけ行う(9次元のパラメータの調整)
3.同じ点群を2つ用意して、回転・移動行う(12次元のパラメータの調整)
3

元記事を表示

PyCharmでpip installできないライブラリをimportする

# 実行環境
– Ubuntu 18.04
– Python 2.7
– PyCharm Community 2020.2

# 経緯
Ubuntuでweiliu89さんの[ssd-caffe](“https://github.com/weiliu89/caffe/tree/ssd”)を導入したのですが、Pythonインタープリタまわりが初心者だったためPyCharm環境でうまくimportできませんでした。解決したので記録を残しておきます。

今回はCaffeをimportしていますが、github等からcloneしたものは全般的に同様の手順でimportできるようになるはずです。

# 手順
## 1. PyCharmでインタープリタの設定をする
PyCharmを開き、ファイル -> 設定 -> プロジェクト:プロジェクト名 -> Pythonインタープリター
でインタープリタの設定ページに移動します。

defaultではPython2.7 /usr/bin/python2.7(灰文字)とかになっているのではないでしょうか。
ここを切り替えることでPythonのバージョンを変えた

元記事を表示

RXTE衛星PCA検出器でAGNの時間変動解析をgoogle Colabで簡単に行う方法

# 背景

RXTE衛星のPCAという検出器によって取得された 2-10 keV のフラックスのデータを用いてプロットする方法を紹介する。

RXTEはASMという全天モニターの検出器もあるが、AGNのような暗い天体の場合(mCrabレベル)は、PCAのポインティング観測で得られたデータを使わないとまともなデータ解析ができない。

このような長期のデータは、サンプル時間が非一様で疎らであるが、その場合にえいやっと内挿してパワースペクトルを生成する方法も紹介する。スパースなデータの扱いはこれでは不十分であるが、quickにトレンドや傾向をみたい場合には知っておいてたら得するテクニックではある。

コードを読めばわかる人は、私の [google Colab](https://colab.research.google.com/drive/16ci6ae_cJaja_lv-oALc4kJGFfU5m0RB?usp=sharing) を参考ください。

## 3C273とは?

[3C273](https://ja.wikipedia.org/wiki/3C_273) は、1959年に出版され

元記事を表示

[Blender×Python] ランダムをマスターしよう!!

今回は、オブジェクトを大量に、かつランダムに配置する仕組みを紹介していきます。

#目次
0.ランダムな数値を取得する方法
1.ランダムな位置に立方体を出現させる
2.関数をつくって処理をまとめる
3.サンプルコード
4.英単語
参考資料

#0.ランダムな数値を取得する方法

今回は、**numpy**というライブラリ(便利なコードの集まり)の中の“rand()“関数を使っていきます。

rand()関数は、**0から1までのランダムな値**を返します。
引数(パラメータ)には、幾つのランダムな数値を返すかを指定します。
rand(3)ならば、ランダムな数値を3つ返します。

“`.py
import numpy as np

#np.randomは右向きの矢印と考え無視して構いません。
np.random.rand(3)
“`
Point:**import numpy as np**
numpyというライブラリをコード中でnpという略称で表記するということ。

“`.py
array([0.90681482, 0.04813658, 0.47969033])

元記事を表示

ツイッタートレンド解析のためのプログラム(個人的メモ)

こんにちは。自分は現在駒澤大学**GMS学部の2年生**でタイトルにあるように**ツイッターのトレンドについて研究しています。**この記事では研究やコードや参考になりそうなものを紹介します。

元々、ツイッタートレンドに興味があり、1年生の頃から、PythonとTwitterAPIとMeCabを使っていましたが、**形態素解析して単語ごとに集計するという原始的なもの**でした。他に言語と位置情報や出現する漢字などで遊んでいました()

そしてN-gramの要領で例えば2-12単語節ごとに記録し、全てを集計する**簡易的なトレンド解析**ができました。補足として、単語節にはツイッターのトレンドにあるように助詞がどこにこないとか助動詞がどうとか、だいぶ手作業で規則を作りました。これが2年生最初の頃です

その後、何を研究するかとなった時に、**一日の中で変動する定常トレンドを定義してモデル化というアイデア**もありましたが、それをして何になるのかとか自分でも思っていて、某大学の先生からもその点と規則に人の手が入っていることを指摘されました。2年生夏頃です

少し彷徨っていましたが、h

元記事を表示

OTHERカテゴリの最新記事