2018-01-01から1年間の記事一覧

Python Windows上でbatファイルを複製し、順次実行する

本記事では、例としてLinuxからWindowsへフォルダ単位でファイルをダウンロードする方法をあげます。まず、WinSCPと呼ぶコンピュータ間でファイル転送を行うソフトウェアを使用するのでインストールします。これはオープンソースであり無料です。 本記事のPy…

Python 「PandasのDataFrame・Series」,「numpyのndarray」,「list」の違い

'22/05/01更新: 本記事では、Pythonでデータ処理するために、ほぼ必須のPandasとNumpyとlistについて、その概要説明と雛形コードを載せました。それぞれの特徴を一言で述べると、pandasは行列データの加工が容易、numpyは行列計算が高速、listは1次元配列で…

Python scikit-learn付属の多目的用のデータ「Linnerud dataset」をcsvファイル化する

本記事のコードを実行すると下図のようなcsvファイルを作成する。 生理学的特徴と運動能力の関係 説明変数X 目的変数Y Chins Situps Jumps Weight Waist Pulse 懸垂の回数 腹筋の回数 跳躍 体重 腹囲 心拍数 ■本プログラム #!/usr/bin/env python3 # -*- cod…

Python 特定の末尾名のフォルダに対して処理する方法「glob」と「*」を利用

# '20/03/22更新…コードを見易く刷新しました。 本記事では下図のように複数のフォルダがある中で、例えば、フォルダ名の末尾が「*002」に対してのみ処理をしたい場合についての雛形コードです。 下図は本プログラム実行結果です。ファイル名「*002」だけ、…

必要なPCスペック「プログラミングの視点」と「PCゲームの視点」

結論的には、いつの時代でもミドルレンジ以上にしておくのが無難と思います。2018年8月現在、CPUはインテルの場合はCore i5以上、AMDの場合はRyzen5以上、メモリは8GB以上。PCゲームをする場合はグラフィックスカードGeForce GTX 1050 Ti以上です。 以降は、…

Python 指定文字列をファイル内で検出して開始行と終了行を取得する。そして、その区間の複数行を抽出する。正規表現「re」

'20/09/12更新:雛形コードの汎用性を高めました。 文字列を検出するには、正規表現reモジュールを使用します。・先頭文字列をマッチさせたい場合は re.match()・文字列の一部を部分マッチさせたい場合は re.search() 本コードの実施例を示します。下図は抽…

Python ランダムフォレスト分類でタイタニックの生存予測

'21/06/19更新:内容を刷新しました。利便性を考えて、JupyterLabのようにインタラクティブに使用できる雛形コードにしました。勿論、テキストファイルに保存してコマンドプロンプトで実行することも可能です。 本記事では、グリッドサーチも使用したランダ…

Python 各行データをリスト化し、そのリストを用いて別ファイル内の指定文字列を置換する方法

'20/08/13更新:読みづらかったので、記事構成を編集しました。 下図のように、行方向にデータが並んでいるcsvファイルがあるとします。1列目はインデックス名、2列目以降は各行の数値データです。このデータをpandasで読み込んでリストに格納したり、別フ…

Python scikit-learnのランダムフォレストによる回帰分析の実務的ver

'20/07/12更新:graphvizを使用しない(インストール作業が不要な)verです。 分析データはcsvファイルであれば良く、お試し用の作成例は右記参照Python scikit-learn 付属のボストン市の住宅価格データ(Boston house prices dataset)をcsvファイル化する …

Python 横棒グラフを作成する「matplotlib」

'21/02/26:刷新 本記事では、横棒グラフ化する雛形コードを載せました。下図左のような都道府県別の人口データのcsvファイルがあります。これを下図右のようにソート(並び替え)して横棒グラフ化します。 日本語が含まれてるデータをmatplotlibで扱う場合…

Python 行名を指定して行データをリスト化し、別ファイル内の文字を置換「pandas」

本記事の特記事項はpandasのインデックスのデータ処理について下記2点です。1. インデックス名(行名)を列名で指定して与える下記例では、一行目に列名IDの列がインデックス(行名)になります。df_s = df.set_index('ID')2. インデックス(行名)のその行のデー…

Python 指定列の要素に対して、部分一致によりデータをリストで抽出。それを用いて置換する方法「pandas」

'20/08/15更新:インデックス番号を1から振り直すコードを追記。また、備忘録の観点から、本記事の構成を再編集しました。 1. ある列を対象に部分一致したその行データを抽出したい場合 df[df['列名'].str.contains('部分一致にしたい内容')] 完全一致の場合…

Python replaceを利用して「指定した」空白を埋める

'20/03/20更新: コードが見づらかったので更新しました。 本記事では、replaceメソッドを使用していて、「指定した」空白箇所を埋める方法です。下図左のような文字列間に空白があるテキストファイルを下図右のように埋めます。 ▼本プログラムmain関数下で…

Python scikit-learnによる因子分析

本記事ではsklearnのFactorAnalysisを利用した。因子分析は主成分分析と同様に説明変数Xとは別の変数を定義して分析する手法である。結果的に次元削減を目的とする。 因子分析は既存の説明変数Xを分解して、「共通因子」なる仮定(想定)の変数での構成する次…

Python scikit-learnによる交互作用の項を考慮した重回帰分析

'20/02/15更新回帰分析後の相関性確認用のグラフ上に、y=axの近似式を入れる仕様にした 本記事では、回帰モデル(回帰式)の項に、相互作用項として「因子A×因子B」や「因子A×因子B×因子C」等が加えられます。 上図のように分析するcsvファイルがあればよい。…

Python scikit-learnによる主成分分析

本記事では、sklearnのPrincipal component analysis (PCA)を利用した。主成分分析の目的は次元削減であり、説明変数Xそのものではなく分散に着目した分析方法である。はじめに、全データの分散が最大となる方向に軸をとって第一主成分と呼ぶ。これは複数の…

Python scikit-learnのランダムフォレストによる回帰分析

本記事では、sklearnのRandomForestRegressorを用いた回帰分析について記載してます。ランダムフォレストとは、多数の決定木を作成して平均化する手法です。これは、1本の決定木の場合では階層が深くなると過学習してしまうことから考えられたアルゴリズムで…

Python scikit-learnによる重回帰分析(データの標準化/正規化含む)

重回帰分析と言ってもソルバーは複数ある。本記事では、sklearn(サイキットラーン)のLinearRegressionとSGDRegressorを用いた2つについて記載した。得られる回帰式は文字通り、Y=f(Xi)=a1x1+a2x2+…+aixi+eで表し、共にlinear_modelをインポートして利用する…

Bash if文とfor文の活用例5つ。ほぼコピペで利用可能

'20/09/21更新: 本記事では、Linuxのshell(シェル)のひとつであるBash(バッシュ)について、普段よく使用するif文3つ、for文2つの計5つの雛形コードを記載しました。 if文 1. 数値で判定して条件分岐する 次の例では、xが偶数の場合にx+1をset_numに代入し、…

Python 実験データを自作関数にフィッティングする「scipy.optimize」

本プログラム実行後のグラフを下図に示す。青点は実験データ(便宜上、手で作成)、赤線はガウス関数でのフィッティング後をプロットしている。 ▼本プログラム フィッテイングはScipyのoptimizeを利用しており、最適値は初期値の設定に依存する。他には、matpl…

VBA サブフォルダ内の全ての画像ファイルをExcelに貼り付ける

'18/05/19更新:フォルダ名/ファイル名の並びを各々ソートして取得する仕様にコードを更新した。本プログラムは、main関数を指定して実行するとダイアログが表示されるので、下図のように画像ファイルがあるサブフォルダの親フォルダの箇所でOKを押す。ちな…

Python ファイル内の最終行に指定文字列があるかを確認し、無ければ追記する。

表題の件を成すには最終行を取得する必要があり、その方法は下記2点です。lastrow = sum(1 for i in open([ファイル名])) # ファイル内の最終行の番号を取得lastrow_sen = linecache.getline([ファイル名], [指定行]) # ファイル内の指定行を取得 本プログ…

Python 指定ファイルの存在をチェックし、無ければファイルを作成する。有れば追記する。

'20/02/29/更新:コードの可読性を若干良くしました。os.path.isfile()を使用すれば楽である。指定ファイルが存在すれば真「True」、存在しなければ偽「False」を返す。その結果を、if文で、if True: や if not True: で分岐すれば良い。ちなみに、ファイル…

Python 再帰的にディレクトリを探索する。そして、指定ファイルを指定ディレクトリへコピー or カレントディレクトリにある指定ファイルを消去するスクリプト

'22/06/18更新:コピーする場合、もし、実行前にそのディレクトリがすでに存在すれば、自動的に一旦そのディレクトリを丸ごと削除してから作成します。 ▼仕様1. 再帰的にサブディレクトリ以下を探索し、指定したファイル名にマッチしたファイルをカレントデ…

Python 文字列を指定文字で分割してリスト化「split」。改行コードを除去する「rstrip」

'20/03/21更新:コードを見易く更新しました。 分割対象文字を左側から検索するsplit、右側から検索するrsplit、改行コードを除去するrstripメソッドを使用します。 本記事では、下図のように各行「文字列=数字」となっている。対象となるabcまたはghiを見つ…

VBA エクセルで水準表を作成する

水準表の作成ツールが、ググっても出てこないためExcelVBAのコードを公開します。 下図は本プログラム実行するための入力フォーマット「入力シート」です。まず、作業①因子名をB列4行目以降に入力します。数はいくらでも構いません。次に、作業②各因子の評価…

Python 指定列を対象に、抽出したい数値に近い値を抽出する「pandas」

'20/03/21更新:アルゴリズム変更とコードを見易く刷新した。 下図のようなcsvファイルで、3列目の列名「Out」に数値が昇順に並んでいる。抽出したい値が例えば2.5の場合、2.5に近い値を抽出することを目的とする。 No In Out abc 1 21 1.2 a 2 32 1.24 b 3 …

Python ファイル内の指定文字列を複数置換して、別名でファイル保存する

'20/07/18更新:書式が一部古かったのを更新 置換はreplaceメソッドを使用して、str.replace([置換したい文字列], [置換後の文字列])とする。折角なので、乱数生成の方法についても記載する。random.randint(下限値, 上限値) # 整数型の場合random.uniform(…

Python ファイル内に指定文字列があれば、その一行を書き換える

# '19/11/09更新:コードの可読性を若干良くしたファイル内を1行ずつ検索してゆき、予め指定した単語があればその行を指定文字列の1行で書き換える。本プログラムの仕様は、下図左を右のようにファイルを書き換える。 上書きしたくなければ、下記f2でopenす…

VBA 回帰式を用いて多数のデータを生成する

本記事は、実機評価もしくはシミューレーション等で得られたデータ分析ですでに回帰式が得られている場合に関する。本プログラムは、VBAで乱数を生成して、その乱数を回帰式へ代入計算して多数のデータを生成する。そのため、設計段階のマージン検証などに使…