python勉強記録

Python,Matlab,VBA主に自分用の備忘録

Python

plotlyできれいなグラフを作るplotly-go

import plotly.graph_objects as go #Figureオブジェクト作成fig = go.Figure() #traceを作成trace1 = go.Scatter(x=[1, 2, 3, 4], y=[1, 4, 9, 16]) #traceをFigureに追加fig.add_trace(trace1) #レイアウトの設定fig.update_layout(title='グラフのタイト…

outlookを操作 メール送信画面の表示

import win32com.client outlook = win32com.client.Dispatch("Outlook.Application") mail = outlook.CreateItem(0) mail.to = ''mail.cc = ''mail.bcc = ''mail.subject = ''mail.bodyFormat = 1mail.body = ''''''mail.Attachments.Add ("C:\\Users\\---\…

f文字列

import math val=700val2=4000 print(f"私の戦闘力は{val}です")print(f"円周率は{math.pi: .10f}")print(f"変数は{val2=}") 使いそうなものを3つピックアップ。 基本が一個目 :で書式を指示できる .10fは小数点以下10桁の意味 「変数=」と書くと val=1000…

lambda式

lambda 変数 : 関数 lambda x.y : f(x,y) 無名関数を定義する func = lambda x: x+x y=func(2)print(y) a=[2,3,4] z=list(map(lambda x:x+x, a))print(z) >>> 4[4, 6, 8] 簡単な関数ならこのように一行で定義できる。 ついでにmapの使い方としては map(関数 …

pythonでHDF5ファイルの読み込み

pip install h5py CSVよりも読み込みの速いファイル形式HDF5 ANACONDAなら初めから入っている

for文を逆に回す

reversed()関数を使う enumerate()関数との合わせ技も可能 しかしどちらもリストを引数にしてgeneratorを返り値にする点に注意する。 x = ["my", "unlimited", "sadness"]for i in reversed(x): print(i) x = ["my", "unlimited", "sadness"]for i, e in rev…

配列の要素から文字列検索

普通のやり方 str_match = [s for s in my_list if "ack" in s]print(str_match) __contains__を使ったやり方 str_match = [s for s in my_list if s.__contains__("ack")]print(str_match) 文字列が持つ特殊メソッド 文字列.__contains__("検索したい文字列)…

辞書の操作

リスト二つからzipを使って生成できる a=["john","tanaka","hanako"]b=[132,23,23] di=dict(zip(a,b)) print(di) >>> {'john': 132, 'tanaka': 23, 'hanako': 23} for文と辞書に関して 辞書のテンプレ。keyは文字列 d = {'key1': 1, 'key2': 2, 'key3': 3}fo…

Rubyでpycallを使ってpythonのライブラリを使用するときのtips

なぜかpyenvで入れたpythonをデフォルトにしているとできない。 rubyのほうはrbenvでインストールしたほうにしておくとできる。 まとめ pythonのほうはsystemにする rubyのほうはrbenvでインストールする。 pipでmatplotlibなど入れる

Ubuntuでpython環境構築

ubuntu 20.04 / 18.04 に pyenv をインストールする話 - Qiita ↑でpyenvを入れる。 このままだとpipが入っていないのでpipもインストールする。 pip: Python環境構築ガイド - python.jp

クラスの継承 コンストラクタの再利用

class A: def __init__(self): self.a = 100 class B: def __init__(self): self.b = 200 class C(A, B): def __init__(self): A.__init__(self) B.__init__(self) print("a + b = ", self.a + self.b) c = C() # => a + b = 300 クラス継承の時 super().__i…

ディレクトリを聞く(ミニマム)

fTyp = [("", "*")]iDir = os.path.abspath(os.path.dirname(__file__))file_name = tkinter.filedialog.askopenfilename(filetypes=fTyp, initialdir=iDir)

matplotlibで横線を引く

ax1.hlines(mean_1,0,20)ax1.hlines(sen_1_left,0,20)ax1.hlines(sen_1_right,0,20)ax2.hlines(mean_2,0,20)ax2.hlines(sen_2_left,0,20) ax2.hlines(sen_2_right,0,20) horizonの略 vlinesもある hlines(y座標,x_min,x_max)の引数

matplotlibで縦線を引く

ax1.axvline(x=sen_1_left , color="blue", label="meam±3sigma")ax1.axvline(x=sen_1_right , color="blue")ax2.axvline(x=sen_2_left , color="orange", label="meam±3sigma")ax2.axvline(x=sen_2_right , color="orange")

matplotlibテンプレ

# -*- coding: utf-8 -*- import matplotlib.pyplot as pltimport pandas as pdimport csvimport seaborn as sns sns.set_style("white")sns.set_style("ticks")sns.set_style({"xtick.direction": "in","ytick.direction": "in"}) #plt.rcParams['font.fami…

python3.10の不具合

エラー内容 pipでNumpyがインストールできない。 解決策 デフォルトpythonを3.9にしたら直った。 visualstudiocodeの左下のpython3.9とか書いてあるところをクリックするとpythonの選択ができる。 ANACONDAとの共存 ANACONDAをインストールするときにPATHを…

pandasでdfの行や列を取り出す

列 x=df.iloc[:,0]y=df.iloc[:,1] 行 y=df.iloc[1] 注意すべきはMATLABと違うところ。 行の場合はセミコロンがいらない。

サビツキゴレイフィルタ(savgol)

def savgol(y,n):#サビツキ-ゴレイフィルタ signed_y = signal.savgol_filter(y, n, 7, mode="mirror") return signed_y 結構お世話になっているフィルタ。 窓の長さは奇数にしないといけない。 参考にしたブログではデータ数/4 +1としていた。 n=len(list) …

移動平均フィルター

def move_average(y): #移動平均 param=15 v=np.ones(param) / param y=np.array(y) y_signed=np.convolve(y, v, mode='same') return y_signed

unzipは*zip

def data_range_csv_make_kai(self,file_name): with open(file_name, encoding="cp932") as f: lineral= f.read().splitlines() del lineral[0:320] #20行削除 data= for line in lineral: if line: data.append(line) else: break kara= for line in data:…

時系列データで初めて閾値超えた点の検出

#R開始点は閾値を超えたところとして定義する thresh=[] ; threshold=np.average(y[0:100]+100) for i,j in enumerate(y): if j>threshold: thresh.append(i) else: pass メモリの無駄遣いだが、thresholdを超えているなら空のリストに追加して、リストの先…

subplotするときにfor文を使う

def visualize_1(self,file_name): #結果を可視化する x=self.x ; y=self.y plt.rcParams["figure.figsize"] = (15, 8) plt.style.use('seaborn-whitegrid') fig=plt.figure() ax=[[0,0,0],[0,0,0]] for i in range(2): for j in range(3): ax[i][j]=fig.add…

大量のグラフを作成し保存

def picture_make(file_name): #画像保存用のディレクトリを作成しその中にグラフの画像を保存する picture_title=file_name[-8:-4] picture_box=os.path.join(path_loc,"picture") if os.path.exists(picture_box)==False: os.mkdir(picture_box) else: pas…

様々なフィルター

ピーク検出のために平滑化フィルタを使う場面があり、 移動平均フィルタとサビツキゴレイフィルタはよい結果を得た。 ローパスフィルタとHAMPELフィルタも試みたが微妙だった。 HAMPELフィルタ hampel · PyPI

ファイル名が短いファイルの頭に文字列追加

def mojisuu(file_names):#文字数が短すぎるとエラーになるからそれの回避、ファイル名の頭にAAAを追記 file_names_kai=[] for i in file_names: if len(i)<8: os.rename(os.path.join(path_loc , i) , os.path.join(path_loc , "AAA"+i)) file_names_kai.ap…

globの使い方

*などを用いてファイルを指定できる。 def osouji(path): for file in glob.glob(path): os.remove(file) osouji(os.path.join(path_loc,'*.csvkai')) 解説 tkのaskdirectoryで聞いた場所をglolbal変数(path_loc)にしておいて、それと*.csvkaiをパス結合する…

パスの結合と注意点

OSによって\\だったり\だったりする。 os.path.joinしたとき混ざってしまっていてエラーになることがある。 def asking_location():#保存先フォルダを選択 idir = '.' filetype=[("all file","*")] global path_loc path_loc = tk.filedialog.askdirectory(i…

ファイルの一覧を格納したリストの取得

def filename_get(): #フォルダ内のファイル名の一覧取得 #path=os.getcwd()+"\libra" global path_loc path_loc=Path.asking_location() files = os.listdir(path_loc) files_file = [f for f in files if os.path.isfile(os.path.join(path_loc, f))] 他 o…

tkinterでディレクトリを聞く方法

def asking_location(): main_win = tk.Tk() main_win.title("タイトル") main_win.geometry("400x300") label = tk.Label(text="コメント") message = tk.Message(text="コメント") label.pack() message.pack() idir = '.' filetype=[("all file","*")] gl…