Remrinのpython攻略日記

python3に入門しました。python3についてあれこれとサンプルコードとか。

テストデータ(3) アミノ酸 コドン表

m-RNAからアミノ酸へのコドン表 bases = "UCAG" codons = [b1+b2+b3 for b1 in bases for b2 in bases for b3 in bases] aminoacids = "FFLLSSSSYY**CC*WLLLLPPPPHHQQRRRRIIIMTTTTNNKKSSRRVVVVAAAADDEEGGGG" codon_dict = dict(zip(codons, aminoacids)) pri…

map(), filter()

pythonのmap(), filter()の使い方について。 map() Definition : map(func, *iterables) リストなどの全要素に関数を適用し、イテレータを作る。 もとのリストは保存され、非破壊的。 mapオブジェクトを生成するので、中身を見たければlist化など。 list1 = …

バーンスレイのシダ

○バーンスレイのシダ 4種類の変換をそれぞれ、85%、7%、7%、1%の確率で選んでいきます。 # -*- coding: utf-8 -*- import numpy as np import matplotlib.pyplot as plt def transform1(p): x, y = p[0], p[1] x1 = 0.85*x + 0.04*y y1 = -0.04*x + 0.85…

matplotlibでアニメーション

matplotlibでアニメーションを作ります。 # -*- coding: utf-8 -*- import matplotlib.pyplot as plt import matplotlib.animation as ani def create_circle(): c1 = plt.Circle((0, 0), 0.5) return c1 def update_radius(i, c1): # i:フレーム番号 plt.cl…

matplotlibで図形

matplotlibで図形を描く方法。 plot()関数が呼ばれると背後でfigure()が呼ばれ、続いてaxes()が呼ばれてfigureの中に軸をつくる。 plot()関数を呼ばずにfigure()やaxes()で図、軸を設定できる。 import matplotlib.pyplot as plt c1 = plt.Circle((0, 0), ra…

csvライブラリ

csvモジュールの使い方について。 以下の内容のtest.csvを準備しました。 1,20 2,30 3,40 4,50 ○csvファイルの読み取り (1)各行はリストとして読み込まれる。 import csv with open("test.csv", "r") as f: data = csv.reader(f) print(data) <_csv.reader object at 0x...> for i in d</_csv.reader>…

matplotlibの色名一覧

matplotlibの色名一覧 この色名一覧はpythonで書かれていて、同じページにコードも載っています。 あとでゆっくりコードを読んでみようと思います。 # coding: utf-8 from __future__ import division import matplotlib.pyplot as plt from matplotlib impo…

matplotlibで散布図

matplotlibで散布図を描く方法について。 Definition : plt.scatter( x, y, # x座標, y座標の配列 s=None, # マーカーのサイズ c=None, # マーカーの色 marker=None, # マーカーの形 cmap=None, # cがfloat型のときのカラーマップ norm=None, # cをfloat型配…

エラー

構文解釈時のよくあるエラーについて。 AttributeError: ・'~' object has no attribute '~' 属性名、メソッド名などが間違っている。存在しないのに呼び出した。 lとrや大文字小文字などスペルミスを見直す。 ドットを打ち込んで属性の候補一覧からTAB補…

pythonで統計

pythonを使って統計処理をします。 ○1変数の基本統計量 要素数 平均mean 範囲 最頻値mode 中央値median 分散variance 標準偏差standard deviation # -*- coding: utf-8 -*- from collections import Counter def mean(seq): return sum(seq) / len(seq) # 平…

pythonで円周率を求める

pythonで円周率を求めるアルゴリズム ○ライプニッツの方法 収束が遅い。 100万回計算して、6桁くらい。 pi4 = 0 for i in range(1000000): pi4 += (1 / (i * 4 + 1) - 1 / (i * 4 + 3)) print(pi4 * 4) # 3.141592153589902 ○区分求積を使う。 収束が速い。 …

pythonの集合型 set

pythonの集合型setの使い方について。 ・重複のない配列。 ・順序がないのでs[1]のようなインデックス指定ができない。 ・inメソッドによる検索が高速 ○生成 # coding: utf-8 s1 = set() # 空のset print(s1) # set() print(type(s1)) # <class 'set'> s2 = {1, 1, 2, 2, </class>…

はてなブログ用の表組みの自動生成

少量のデータなら手打ちでいいですが、大量の表形式のデータをブログに書く手間を省きたいものです。ということで、サンプルです。 ○例1 百人一首のを収めたテキストファイルから、はてなブログ用の表組みを出力します。 ここのページにデータがあります。 …

pandasの使い方(4)ファイルの読み込み

pandasを利用したファイルの読み込みについて。 HTMLの表組み(TABLE)をDataFrameオブジェクトのリストで取得。 Definition : read_html(io, match='.+', flavor=None, header=None, index_col=None, skiprows=None, attrs=None, parse_dates=False, tuplei…

pythonでファイルの読み書き

pythonでファイルの読み書きです。 python3で外部ファイルを開くときはcodecsモジュールは不要です。 パスが通ったディレクトリにhyaku.txtがあることを前提にしています。 なければ、メモ帳などで適当に複数行の文字を書き込んだりで。 今回は百人一首を書…

pickleライブラリ

python用のデータをファイルに保存する。 Python オブジェクトの直列化および直列化されたオブジェクトの復元。 バイナリ形式でpython固有のフォーマット。 長所: ・ほとんどの組み込み方やクラスも保存できる。 (lambda関数などはpickle化できない) ・型…

pandasの使い方(1)

pandasライブラリの使い方。 pandasはSeries(1次元)とDataFrame(2次元)という2つのデータ構造を持つ。 今回はまずSeriesの使い方。 ○シリーズ(1次元配列)を作る。 import pandas as pd l = [3, 4, 5, 6, 7] series = pd.Series(l) print(series) # 0 3 # …

python開発環境の準備とspyder

anacondaを使う人が多いようですが、私はWinpythonを使っています。 名前的にwindows向けな気がしただけで選びました。 パソコンは5年くらい前のVAIOで、OSはWindows7です。Winpythonはspyder、ライブラリも同梱でインストールも楽でした。 かなりの数のラ…

collectionsライブラリ

標準ライブラリのcollectionsには便利なデータ型があります。 namedtuple() タプル風 名前付きフィールドを持つタプルを作成するファクトリ関数 deque リスト風 両端における append や pop を高速に行えるリスト風のコンテナ ChainMap 辞書風 複数のマッピ…

BeautifulSoup4の使い方

htmlの構文解釈のライブラリです。 ○htmlの準備 # -*- coding: utf-8 -*- import urllib.request from bs4 import BeautifulSoup url = "http://python-remrin.hatenadiary.jp/" f = urllib.request.urlopen(url) html = f.read().decode('utf-8') soup = Be…

urllibライブラリの使い方

urllibはURLにアクセスするライブラリです。 urllibモジュールは、Python 3 で urllib.request, urllib.parse, urllib.error に分割されて名称変更されました。 ・urllib.request は URL を開いて読むためのモジュールです ・urllib.error は urllib.request…

pythonのdict型

・辞書型。マッピング型とも言う。 ・シーケンスに似ているが、順序なし。 ・key:valueのセットで辞書登録。key…識別子。indexがわりに使う。 ・keyでも、valueでも、key:valueでもiteration可能。 ・keyはimmutable(数値、タプル、文字列など)だが、valueは…

pythonのタプル

pythonのタプルについて・シーケンス型の1つ。 ・リストと似ているが、タプルはcount, index以外のメソッドがない。 ・リストは[]、タプルは()または括弧なし。 ・immutableな型で、値の変更ができない。 ・要素を変更できない。ソートもできない。 ・index…

matplotlibで棒グラフ

matplotlibで棒グラフの描き方 Definition : bar(left, #それぞれの棒の左端の配列 height, #高さの配列 width=0.8, #棒の太さ bottom=None, #複数の棒グラフを積み上げるときの土台を示す。 hold=None, # data=None, # **kwargs) ○基本 import matplotlib.p…

pythonでの数値

python3の数値は整数(int型)、小数(float型)、複素数(complex型)の3つ。 論理型(bool型)も数値の1つと言える。(True=1, False=0) ○整数型 桁数は無限 16進数 先頭に0x 8進数 先頭に0o 2進数 先頭に0b(b:binary) ・int関数 文字列や小数を整数に直す関数…

matplotlibでヒストグラム

matplotlibでヒストグラムを書く。Definition: hist(x, #データ。yなし。 bins=None, #bin(棒)の数。省略すると10 range=None, #binの表示範囲をタプルで。 normed=False, #Trueとすると正規化(合計値を1とする) weights=None, # cumulative=False, #True:累…

python記事の目次

python記事の目次 python導入など ・pythonの導入とspyder ・pythonのバージョン ・ソースコードの貼り方 pythonの使い方 ・変数の型 ・数値 ・文字列操作 ・文字列の削除 ・日本語文字列操作(ひらがな判定など) ・リスト操作 ・タプル ・辞書型 dict ・集…

日本語文字列操作 ひらがな判定など

日本語の文字列の操作について。英字に比べて非常に扱いにくい印象です。文字列をソートしたり、ひらがな・カタカナ判定、ひらがな・カタカナ変換などを作ってみました。 # coding: utf-8 hiragana = "ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすず…

python3の変数の型

python3の変数の型について数値型:int, float, complexの3つ 論理型:bool 文字列型:str コンテナ型:list, tuple, dict, set シーケンス型:list, tuple, 文字列、rangeimmutable≒ハッシュ可能 int, str, tuple, frozenset整数変換 int()関数 小数変換 f…

pythonの文字列

python3での文字列の操作など ・シーケンス型の1つ。 ・シングルクオーテーション('abc')、ダブルクオーテーション("abc")のどちらでも。 ・シングルクオーテーションの中では「"」は文字として扱える。逆も。 ・immutableなのでs[2]="a"のような代入はでき…

文字列の削除 split(), strip(), replace(), translate(), re.sub()

pythonでの文字列の削除の方法 ○split() 区切り文字(delimiter)を区切りとして、文字列を分割しリストを返す。 maxsplit=1のように、オプションで最大分割回数を指定できる。 区切り文字を指定しないときは、空白文字で区切る。 その際、連続した空白文字は…

range()

pythonのrange()の使い方python3では、rangeは0から始まり、指定値未満の連続整数を生成するジェネレータを返す。 要素を確認したいときはlist(range(3))などとする。 type(range(3)) #class 'range' range(3) #range(0, 3) range(3.5) #TypeError :小数は扱…

allとany

pythonのallとanyについて。 ○all(iterable) iterableがすべてTrueのときのみTrueを返す。 iterableが空(empty)のときはTrueを返す。○any(iterable) iterableが1つでもTrueを含むとTrueを返す。 iterableが空のときはFalseを返す。基本例 all([True, True, T…

テストデータ(2) アンスコムのカルテット

pythonプログラムの動作テスト用です。 ○アンスコムのカルテット x1 y1 x2 y2 x3 y3 x4 y4 10.0 8.04 10.0 9.14 10.0 7.46 8.0 6.58 8.0 6.95 8.0 8.14 8.0 6.77 8.0 5.76 13.0 7.58 13.0 8.74 13.0 12.74 8.0 7.71 9.0 8.81 9.0 8.77 9.0 7.11 8.0 8.84 11.…

テストデータ(1) 百人一首

pythonプログラムの動作テスト用です。 import pandas as pd url = 'http://python-remrin.hatenadiary.jp/entry/2017/04/23/000000' ## DataFrameのリストを得る。header=0のオプション指定で、最初の行をheader扱い。 fetched = pd.io.html.read_html(url)…

pythonのリスト操作

pythonのlist型はよく使うのに覚えることがたくさん。 調べる手間を省きたいので備忘録です。 list型の概要 ・シーケンス型の一つで、iterable ・numpyのndarrayなどの配列と違い、バラバラなメモリに紐つけで末尾追加が可能。 ・要素(element)は数値に限ら…

matplotlibで折れ線グラフ

計算結果をビジュアルで見るには、やはりグラフを描くのが一番ですね。 ということで、matplotlibの使い方を簡単に紹介します。 import matplotlib.pyplot as plt listx = [1, 2, 3, 4] listy = [1, 3, 4, 2] plt.plot(listx, listy) たったこれだけで、折れ…

pythonでクイックソートのアルゴリズム

pythonでクイックソートのアルゴリズムを考えてみた。

三角形の内接円、外接円、面積、角度

pythonで外接円の中心と半径を求めるプログラムを作ってみた

pythonのライブラリ

pythonを使うメリットの1つに豊富なモジュールがあります。 私が使ったモジュール、気になったモジュールです。(1)標準ライブラリ(python標準ライブラリ) モジュール 内容 math 数学関連 三角比、π、切り上げなど decimal 小数や大きな数の正確な計算 fr…

pythonと英語

pythonの学習では英語での表現も多く、pythonと同時に英語の勉強にもなりますね。 ということで、よく使う単語や表現などを挙げて行きます。 (1)算術・数学 English Japanese average 平均、代表値 mean, median, modeなど axis 軸 x axis:x軸 coordinate…

pythonのバージョン

pythonは2系と3系で文法が異なっていて、互換性はありません。 私もpythonに入門しようと思い、いくつかののサイトを巡ってみると初心者むけのサイトほどpython2系のみに対応しているなど、混乱を招きやすい状態です。サンプルコードをコピペしてもエラーを…

ソースコードの貼り方

1 編集モードを「見たまま」から「はてな記法」に変更する。 2 ソースコードを >|python| と ||□>|python| □ソースコード □||□ ただし、>|python| と || pythonのソースコードに応じた色をつけてくれる。 list1 = [3, 2, 1] list2 = [4, 5, 6] z =list(zip…