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

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

indexのマージについて学んだので,復習します.

#はじめに
現在,UdemyでPythonを使ったデータ分析について勉強しています.今回は,勉強をしていて難しいと感じた『indexのマージ』について復習がてらに投稿してみました.(Jupiter notebookを使用)

#用いたライブラリ

“`python
import pandas as pd
from pandas import Series,DataFrame
import numpy as np
“`
#DataFrameを2つ用意する
“`Python
df_left = DataFrame({“key”:[“X”,”Y”,”Z”,”X”,”Y”],
“data”:range(5)})

df_right = DataFrame({“group_data”:[10,20]},index=[“X”,”Y”])

“`

#結果
“`Python
df_left
“`

||data|key|
|:—-|—-|:-:|
|0|0|x|
|1|1|Y|
|2|2|Z|
|3|3|X|
|4|4|Y|

“`

元記事を表示

Qiita から Hugo 用の markdown を生成するやつ

Qiita で書いていた記事を全部 Hugo で作ったサイトに移行するために Qiita の記事を Hugo 用の Markdown として出力するスクリプトを作りました。

# 作ったもの

– [michimani/qiita-to-hugo | Github](https://github.com/michimani/qiita-to-hugo)

標準ライブラリのみの利用で、必要なのは Qiita API を利用するためのアクセストークンです。
記事数が 100 までであれば、そのまま使えるはずです。

# 気をつけたところ
単に Markdown の生成だけではなく、記事内の画像もまるっと移行できるように画像の保存、記事内の画像パスの変更まで実施するようにしています。

# 詳細

– [Qiita に投稿していた記事を Hugo に移行してみた – michimani.net](https://michimani.net/post/blog-qiita-to-hugo/)

元記事を表示

PythonとC++の順列生成の方法

[この記事](https://qiita.com/DaikiSuyama/items/ee09c6d3dea1f3f49246)で解説したAtCoder073のD問題においてn!(n<=8)通りの順列を生成してそのそれぞれについて操作を行うという問題がありました。順列生成はAtCoderで良く出ますが、書き方を忘れがちなのでここでまとめておきます。 #[1]Pythonの場合 itertoolsモジュールにあるpermutationsを用います。 ここでは0~3が入った配列についてその順序を並べ替えた順列を全て生成させて考えます。 ```bash >>> import itertools
>>> t=[i for i in range(4)]
>>> itertools.permutations(t)

>>> list(itertools.permutations(t))
[(0, 1, 2, 3), (0, 1, 3, 2), (0, 2, 1, 3), (0, 2, 3, 1), (0

元記事を表示

CDSの変異情報から翻訳後のタンパク質の配列情報を取得する

# 遺伝子のコーディングシーケンス(CDS)上の変異の影響を見る

CDS上の塩基を変化させた場合に起こるアミノ酸への変異の影響を概観する

手順

– Refseq NMのIDから適当な方法でCDSを取得する
– 取得したCDSをアミノ酸の配列に翻訳する
– 取得したCDS上で変異を反映する
– 変位を反映したCDSをアミノ酸配列に翻訳する

## Refseq NMのIDから適当な方法でCDSを取得する

RefseqのIDからCDSのIDを取得するために[CCDSプロジェクト](https://www.ncbi.nlm.nih.gov/projects/CCDS/CcdsBrowse.cgi)のデータを利用する事とする

> CCDS プロジェクトはヒトとマウスのコンセンサスなコーディング領域の標準セットを提供するもの

### CCDSのファイルをダウンロードする

RefseqのIDからCCDSのIDを調べるために`CCDS2Sequence.current.txt`を取得

“`console
curl -LO ftp://ftp.ncbi.nlm.nih.gov/pu

元記事を表示

Pythonで、デザインパターン「Bridge」を学ぶ

GoFのデザインパターンを学習する素材として、書籍「[増補改訂版Java言語で学ぶデザインパターン入門](https://www.hyuki.com/dp/)」が参考になるみたいですね。

ただ、取り上げられている実例は、JAVAベースのため、自分の理解を深めるためにも、Pythonで同等のプラクティスに挑んでみました。

# ■ Bridge(ブリッジ・パターン)
Bridgeパターン(ブリッジ・パターン)とは、GoF(Gang of Four; 4人のギャングたち)によって定義されたデザインパターンの1つである。 「橋渡し」のクラスを用意することによって、クラスを複数の方向に拡張させることを目的とする。

![bridge.png](https://qiita-image-store.s3.ap-northeast-1.am

元記事を表示

言語処理100本ノック-89:加法構成性によるアナロジー

[言語処理100本ノック 2015](http://www.cl.ecei.tohoku.ac.jp/nlp100/)の89本目「加法構成性によるアナロジー」の記録です。
「加法構成性」ということでベクトル演算をして結果を求めます。有名な「王 + 女性 – 男性 = 王女」の計算ですね。「上司 – 有能 = ?」のような計算で、世の中のいろいろなことで試してみたい演算です。

# 参考リンク

|リンク|備考|
|:–|:–|
|[089.加法構成性によるアナロジー.ipynb](https://github.com/YoheiFukuhara/nlp100/blob/master/09.%E3%83%99%E3%82%AF%E3%83%88%E3%83%AB%E7%A9%BA%E9%96%93%E6%B3%95%20(I)/089.%E5%8A%A0%E6%B3%95%E6%A7%8B%E6%88%90%E6%80%A7%E3%81%AB%E3%82%88%E3%82%8B%E3%82%A2%E3%83%8A%E3%83%AD%E3%82%B8%E3%83%BC.ipynb)|回

元記事を表示

ゼロから始める Python 爆速環境構築(Mac)

– Python の環境構築は色々バリエーションがあって分かりづらいですが、今現在最も良いと感じている方法を提示します
– 具体的には `pyenv` + `Poetry`

## Pyenv

“`
brew install pyenv
“`

でインストール。

まず環境変数の設定をします。
パス `$HOME/.pyenv` として `PYENV_ROOT` を登録し、`$PYENV_ROOT/bin` を `PATH` に含め、シェル起動時に `pyenv init` させます。

例えば bash であれば

“`bash
echo ‘export PYENV_ROOT=”$HOME/.pyenv”‘ >> ~/.bash_profile
echo ‘export PATH=”$PYENV_ROOT/bin:$PATH”‘ >> ~/.bash_profile
echo -e ‘if command -v pyenv 1>/dev/null 2>&1; then\n eval “$(pyenv init -)”\nfi’ >> ~/.bash_profile
exe

元記事を表示

【Python】混合ガウスモデルを使ったクラスタリングの実装

[機械学習プロフェッショナルシリーズ『ノンパラメトリックベイズ 点過程と統計的機械学習の数理』](https://www.kspub.co.jp/book/detail/1529151.html)を読んで、本に書いてあるモデルをPythonで実装してみました。ノンパラメトリックベイズとは、混合ガウスモデルを拡張した手法です。本当はノンパラメトリックベイズを実装したいのですが、その準備として、混合ガウスモデルを実装します。

※Qiitaにて、同様のモデルや手法の説明、実装を説明されている記事がありましたので、紹介させていただきます。どちらも大変参考になりました。

– [『ベイズ推論による機械学習入門』Pythonのnumpyだけで実装するポアソン混合モデルの近似推論](https://qiita.com/ogi-iii/items/eb9280ab489e25edf6c9)
– [混合ガウス分布とlogsumexp](https://qiita.com/BigSea/items/1949b3ceefcec4fc32ea)

環境
元記事を表示

あえてseleniumを使わずにフォームに入力してみる

# はじめに
「あえて」というほどでもないのですが、Pythonでフォームの編集を調べているとseleniumが良く出てくるのでRequests+BeautifulSoupで実装してみました。

[以前投稿した記事](https://qiita.com/sssssssiiiiinnn/items/14f7035abe9ce4111323)の発展編としてちょうどいいのでQiitaのプロフィール文を編集してみました。

# 編集用関数
編集可能な多くの項目はtypeが[‘text’, ‘url’, ‘checkbox’]のいずれかであることがソースから判明したため、ほとんど手打ちする必要なく取得できました。
取得もれである’user[desctiption]]’を追加するついでに編集すればpost用データの完成です。なぜかemail公開のチェックボックスがデフォルトでチェック済みになっていたため0に修正しています。データの作成ができたらログイン時のセッションを使ってPostすれば完成です。

“`Python
def edit_profile(session):
profile_

元記事を表示

[Pythonアルゴリズム]深さ優先探索より、数独の答えを出力するプログラム

はじめに

皆さんこんにちは。
今日は深さ優先探索という方法を使って、数独の答えを出力するプログラムの解説をしていく。例題の説明からして難しいので、記事の不備等は、コメントにてご連絡いただけると嬉しい。

例題

nは自然数、N=n^2を満たす自然数とする。このとき横N行縦N列の計N^2個のマス目からなる盤面をつくり、さらに太線でそれぞれn行n列からなるn^2個の区画に分ける。

![a0.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/39145/f46ad306-bb0b-87d8-04d2-bd17db4baf79.jpeg)

このときそれぞれのマス目に1からNまでの数字を1つずつ書き込む。ただし、以下の3つの条件を全て満たすものとする。

  • (A)各行には1,2,3,…,Nが1回ずつ現れる
  • (B)各列には1,2,3,…,Nが1回ずつ現れる
  • (C)各区画には1,2,3,.
元記事を表示

Python#Snap7 Libray Import 問題

毎回も忘れ、毎回も時間かけて探し解決方法見つかる。
とりあえずメモしておく。

#Linux

https://stackoverflow.com/questions/24343557/cant-find-snap7-library-linux

– まずSNAP7ライブラリをダウンロードする(この例は1.2.1)
– wget http://sourceforge.net/projects/snap7/files/1.2.1/snap7-full-1.2.1.tar.gz/download
– 解凍する
– tar -zxvf snap7-full-1.2.1.tar.gz
– コンパイルする(arm_v6_linux.mk is used for RPI 1. For RPI 2 use arm_v7_linux.mk)
– cd snap7-full-1.2.1/build/unix && sudo make -f arm_v6_linux.mk all
– コンパイル後のライブラリをlib へ
– sudo cp ../bin/arm_v6-li

元記事を表示

学習記録 その22(26日目)

#学習記録(26日目)
勉強開始:12/7(土)〜

教材等:
・大重美幸『詳細! Python3 入門ノート』(ソーテック社、2017年):12/7(土)〜12/19(木)読了
・Progate Python講座(全5コース):12/19(木)〜12/21(土)終了
・Andreas C. Müller、Sarah Guido『(邦題)Pythonではじめる機械学習』(オライリージャパン、2017年):12/21(土)〜12月23日(土)読了
・[Kaggle : Real or Not? NLP with Disaster Tweets](https://www.kaggle.com/c/nlp-getting-started) :12月28日(土)投稿〜1月3日(金)まで調整
・Wes Mckinney『(邦題)Pythonによるデータ分析入門』(オライリージャパン、2018年):1/4(水)〜1/13(月)読了
・**斎藤康毅『ゼロから作るDeep Learning』(オライリージャパン、2016年):1/15(水)〜**

#『ゼロから作るDeep Learning』

元記事を表示

[Python3 入門 10日目] 5章 Pyの化粧箱:モジュール、パッケージ、プログラム(5.4〜5.7)

#5.5 Python標準ライブラリ

– Pythonには様々な」役に立つ仕事をしてくれるモジュールを集めた大規模な標準ライブラリがある。

##5.5.1 setdefault()とdefaultdict()による存在しないキーの処理

– 存在しないキーで辞書にアクセスしようとすると例外が生成される。辞書のget()関数を使って、キーが存在しない場合はデフォルト値を返すようにすれば例外を避けられる。
– setdefault()関数はget()と似ているがキーがなければ更に辞書に要素を追加するところが異なる。
– defaultdict()関数は存在しない全てのキーに対してデフォルトの値を設定するところがget()と異なる。**引数は関数である。**また、存在しないキーを用いた場合、そのキーが自動で生成される。デフォルト値引数を省略するとデフォルト値はNoneになる。

“`py

>>> periodic_table={“Hydrogen”:1,”Helium”:2}
>>> print(periodic_table)
{‘Hydrogen’: 1, ‘Helium’: 2

元記事を表示

python lru_cache

引数に対して戻り値をキャッシュしてくれるので重い処理をするときに役に立つ。

“`
import functools

class Sample():
def __init__(self):
self.num = 5

@functools.lru_cache()
def add(self, a, b):
print(“sample”)
return a + b

@functools.lru_cache()
def times(self, a):
return self.num + a

s = Sample()

s.add(5, 5)
s.add(5, 5) # 2回目はprint文が実行されない。

print(s.times(10)) # 戻り値は15
s.number = 3
print(s.times(10)) # numの値を変更しても戻り値は15
“`

結果

“`
sample
15
15
“`

単純に引数と戻り値の組み合わせを保存して、以前に

元記事を表示

電子ペーパーモジュールをToDoリストとして使う

#きっかけ
僕「電子ペーパーモジュール何かに使えないかな?」
僕「最近やること多くて忘れそうだからToDoリスト(メモ的な何か)として使おう」

※電子ペーパーのセットアップ(接続や画像の表示等)はこっちに書いてあります。
[Raspberry Piで電子ペーパーモジュールを動作させる
](https://qiita.com/_shin_/items/0e9e7804531368ff0e90)
今回は文字を電子ペーパーモジュールに表示させます

#用意したもの
・Raspberry Pi 3 model B+
・電子ペーパーモジュール (4.2inch e-Paper Module)
・スペーサー (お好みで)

#手順
こんなものをイメージ
・適当なテキストファイル(text.txt)にやること(文字)を箇条書きして保存
・Pythonでテキストファイルを読み出し、e-Paperに書き込み

pythonのソースコードを書く

“`write.py
#!/usr/bin/python
# -*- coding:utf-8 -*-
import sys
import

元記事を表示

python threading.Thread

新しいスレッドの作成方法。
Threadを継承したクラスのrunをオーバーライドして行いたい処理を書きます。
新しくインスタンスを作成しstartメソッドを呼べばrunメソッドの処理を新しいスレッドで行ってくれます。

“`
from threading import Thread
import time

class SampleThread(Thread):

def run(self):
# 通信処理や巨大なファイルの読み込みなど時間のかかる処理をする。
time.sleep(1)
print(“sub thread”)
time.sleep(1)

thread = SampleThread()
thread.start()

“`

元記事を表示

ジェネレーター内包表記 タプル内包表記

“`py:1
def g():
for i in range(10):
yield i

g = g()
print(next(g))
print(next(g))
print(next(g))
“`

“`:1の実行結果
0
1
2
“`
これを内包表記で書くと

“`py:ジェネレーター内包表記
g = (i for i in range(10))

for j in range(3):
print(next(g))
“`

“`:ジェネレーター内包表記の実行結果
0
1
2
“`

()で囲っているので一見、
タプルの様にも見えなくはない。
タプルの内包表記は下記の様になる。

“`py:タプルの内包表記
t = tuple(i for i in range(10))
print(t)
“`

“`:タプルの内包表記実行結果
(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
“`

“`py:ジェネレーター内包表記2
g = (i for i in range(10))

for j in g:
pri

元記事を表示

個人用メモ(python)

環境変数の確認をするには

“`
対話型シェルの起動
>>>python manage.py shell

>>> import sys
>>> print(‘\n’.join(sys.path))
“`

元記事を表示

VScodeでインテリセンスが効かなくなったので復活させた

##はじめに
プログラミング初心者です。
最近MacでDjangoの勉強を始めました。
VScodeでDjangoを書いていたらインテリセンスが効かなくなったのでその解決策を記載。
  
##前提条件
・Visual Studio Code for mac 1.41.1
・Python 3.8.0
・Django 3.0.2
  
##原因
仮想環境でDjangoをインストールしていたため、物理マシンではいらないと判断しDjangoをアンインストールしたせい(だと予想)。
  
##対策
いろいろ試しましたが以下の手順で復活しました。
1.物理マシンにDjangoをインストール
2.Djangoの格納場所を確認
3.VScodeの設定ファイルを変更

  
##手順
上の対策の1から3まで順に記載していきます。

  
####1.物理マシンにDjangoをインストール
仮想環境からdeactivateした状態で、コンソールにて以下のコマンドを実施。

“`
$ python
>>> pip install django
“`
  
  
####2.Djangoの格納場所を確認

元記事を表示

関数内で例外が発生した場合、呼び出し元へ伝わる2

“`py:1
def test_exception(num):
print(1)
try:
print(2)
answer = 100 / num
return answer
print(3)
except ZeroDivisionError as e:
print(4)
raise e
print(5)

print(‘start’)
try:
test_exception(1)
print(6)
except ZeroDivisionError as e:
print(7)
raise e
finally:
print(‘end’)
“`

“`:1の実行結果
start
1
2
6
end
“`

print(‘start’)を
最初に実行。

次に、
tryブロックを実行する。
tryブロック1行目のtest_exception関数に引数1で入る。
なので、
print(1)を実行し、
test_exce

元記事を表示

OTHERカテゴリの最新記事