python

Windows10でのPythonの一時ファイルtempfile.NamedTemporaryFileへのアクセス ~ Windowsではいったん閉じないと駄目

次のようにして、tempfileへアクセスしようとしたらエラー。 file = NamedTemporaryFile(suffix='.xlsx', delete=False) s3.Bucket(bucket).download_file(key, file.name) 悩んで仕様を注意深く読むと。。。。 docs.python.org file = NamedTemporaryFile(s…

OSError: [Errno 30] Read-only file system: ~ AWS Lambdaは/tmp/配下のファイルにしか書き込めない

AWS Lambdaでは/tmp配下のファイルにしか書き込めないので、一時ファイルを用意してそこに書き込んでから最後に元のファイルにコピーしようとしたけど、コピーも書き込みだから駄目だった。 エラーが出てから、そりゃそうかと思ったw。 これは、使いづらい…

いつも忘れるpandas.DataFrameの備忘録

全然覚えられない。 #欠損値NaNが含まれる行/列を削除する(how="all"とすると全て欠損値の行/列を削除する。デフォルトはhow="any"。axis=1とすると列削除) result_df = df.dropna(how="all", axis=1) # DataFrameのindexを振り直すreset_index(drop=True…

ある文字列において、特定の文字がX文字以上連続した場合に限り、その連続した文字列で元の文字列を分割する

「ある文字列において、特定の文字がX文字以上連続した場合に限り、その連続した文字列で元の文字列を分割する」ことを考えた。 まずこれはどういうことか。具体例を示す。例えば、何らかのテキストファイルを1行ずつ読み込んで処理をする場合に、特定の行…

pandasのDataFrame新規作成時のエラー:If using all scalar values, you must pass an index

pandasで新規にDataFrameを作成しようとしたらエラー。 If using all scalar values, you must pass an index 問題のコードは次のようなコード。data1とdata2は数値。 df = pd.DataFrame({ 'col1':data1, 'col2':data2 }) これを次のように1つだけlistにし…

pythonのparamikoを使用したSFTPで、GETしたときに「PermissionError: [Errno 13] Permission denied: windowsのフォルダ名」

久しぶりに大ハマリ。。。pythonのparamikoというライブラリを使用してSFTPダウンロードしたファイルをwindowsに保存するだけのプログラムなんだけど、「PermissionError: [Errno 13] Permission denied: フォルダ名」というエラーになってしまう。Windows10…

pandasメモ

#1列目取得(列番号指定) df.iloc[:, [0]] ← DataFrameで取得 df.iloc[:,1] ← Seriesで取得 #1行目取得(列番号指定) df.iloc[0,:] #1〜3行目取得 df[0:3] #データフレームdfの2列目にKeyWordが含まれるかを調べてbooleanのDataframeで返す。 df.iloc[:, [1]…

pythonでの相対パスの扱い

ちょっと勘違いしていたことがあったのでメモ。次のようなパッケージの階層構造を考える。 package1 −fileDir(ファイル置き場) −file.conf −package2(共通クラス置き場) −common.py −package3-1 −aaa.py −test −test_aaa.py −package4 −bbb.py −test −test_…

pycharmでpython3をvirtualenvで使用する際の設定でハマったこと

ハマってしまった。 一度知ってしまえば常識なんだろうけど、気が付きませんでしたね。今回の問題。要点は下記3つ。 1.python3をpycharmで使用したかった。 2.既にpython2.7の環境があるので、virtualenvで環境を作成したい 3.勿論、pandasも使用する…

クラスのListを作成する方法

「dictionaryのキーをlistで用意しておき、for文でキーを繰り返してそれぞれを初期化する」に引き続き、次のような書き方があることも初めて知った・・・。 class ClassA(object): def __init__(self, ticker): self.ticker = ticker class ClassB(object): …

dictionaryのキーをlistで用意しておき、for文でキーを繰り返してそれぞれを初期化する

次のような書き方があることを初めて知った・・・。 test_dic = {element: {} for element in ['test1','test2']}

PandasのDataFrame.plot()関数で2軸グラフを描く

以前「pandas.DataFrame型のデータで2軸グラフを描く」では面倒くさい上に上手く行かなかった記憶があったが、単純な折れ線だと次のようにして描ける。 df = pd.DataFrame() df.plot(x=df['timestamp'], secondary_y=['ltp']) secondary_yを指定すれば良い。

UTC文字列をJSTへ変換する

結論から述べると次のようなメソッドを用意。 面倒だった。 import pytz from pytz import timezone from dateutil import parser def utc2jst(utc): datestr = str(utc).replace('T', ' ') return pytz.timezone('UTC').localize(parser.parse(datestr)).as…

AttributeError: 'module' object has no attribute 'BufferedIOBase'

Pythonで開発中に掲題のエラー「AttributeError: 'module' object has no attribute 'BufferedIOBase'」。 原因は・・・。 「io」という名前でパッケージを作成したこと 最初は関係無さそうということで読みとばしていたが、実は「How to solve AttributeErr…

matplotlibでpandas.DataFrameを可視化しようとしたらエラー「TclError: Can't find a usable init.tcl in the following directories:  This probably means that Tcl wasn't installed properly.」

初めて遭遇したエラーなので、少しハマった。 virtualEnvを使っていない場合は問題なかったので。エラー内容は次。 TclError: Can't find a usable init.tcl in the following directories: D:/Python27/lib/tcl8.5 D:/virtualenv/jscraping/lib/tcl8.5 D:/v…

波括弧({と})で囲まれた「カンマ区切りのJSONデータ」をJSONデータの配列として取得する

インプットとなるデータの形式は次。 JSONデータ1,JSONデータ2,JSONデータ3,・・・・,JSONデータN それぞれのJSONデータは次の形式。 {"key1":"value1","key2":"value2"} つまり具体的には次のような形式のデータがインプットとなる(今回これは文字列でtarg…

DBへのコネクションが2つ張られてしまう(未解決)

適当に作っていたコードを流石にこれだとマズすぎると思って、修正中。 そんな中、コネクションの数を調べていたら、1つだと想定していたコネクションが2つだったことのメモ。 コネクションの数は次のSQLで調べる。 SELECT * FROM information_schema.PROCES…

Python+MySQLでストアドプロシージャの実行(最後)〜SQLAlchemyでプロシージャを実行した結果はtupleのリストになってしまう

ここまで続いてきた失敗だらけの履歴。 pythonのフレームワークはbottle、ORマッパーはSQLAlchemyを使用。・「Python+MySQLでストアドプロシージャの実行」 ・「Python+MySQLでストアドプロシージャの実行(続き)〜複数結果の取得はcursor.nextset()で順次…

Python+MySQLでストアドプロシージャの実行(続き)〜複数結果の取得はcursor.nextset()で順次取得

前回「Python+MySQLでストアドプロシージャの実行」で期待通りの結果にならなかった原因が判明。前回のコード。 #raw_connectionの取得 engine = dbMapper.create_engine(url, echo=False) connection = engine.raw_connection() # Query実行 cursor = conne…

Pandasのto_csvでCSV出力時に「UnicodeEncodeError: 'ascii' codec can't encode characters」エラー

次のように書いていてエラー。 inputDf = pd.read_csv("./result/test.csv", encoding="SJIS") 処理 inputDf.to_csv('./result/output.csv') 出力時にもencoding指定しないと駄目ですね。 次のようにして回避。 inputDf = pd.read_csv("./result/test.csv", …

Python+MySQLでストアドプロシージャの実行

ストアドプロシージャを作成。下記はサンプル。 CREATE DEFINER=`DBユーザ名`@`%` PROCEDURE `ストアドプロシージャ名`(IN _dateStr VARCHAR(12)) BEGIN # Variables DECLARE done INT; DECLARE _stockCode INT; DECLARE selectCount INT; # Cursor DECLARE …

Python+Ajaxで文字化け

原因究明していないが、解決したのでとりあえずメモ。 後に追記するかも。画面からjQueryのライブラリ使ってAjaxでPOSTした変数をbottleのコントローラで受け取った際に日本語が文字化け。◎文字化け時のコントローラ stock_code = request.params['stock_cod…

「numpyのrandint」と「pythonのrandint」の違い

これ、少しハマった。仕様を確認すればすぐに解決することなんだけどね。 いずれのrandintも発生させたい整数値の上限と下限を指定するが、numpy.random.randintで指定した上限は生成される値には含まれない。 numpy.random.randintの仕様を確認すると下記記…

pandas.DataFrame型のデータで2軸グラフを描く

仕事忙し過ぎで、JavaやらshellやらSQLやら手作業やらその他色々やり過ぎてpython久しぶり。 ※)仕事でpythonを使う機会は殆ど全く無い。゚(゚´Д`゚)゚。 殆ど忘れている。KUにCFTCの建玉を2軸グラフで重ねようと思ってちょろっとやってみた。 主に次の3つの手順…

Python+Bottle+BootStrapで画面ロード時にJavaScriptやCSSが読み込めずに404

「Python+Bottle」の組み合わせで簡単なアプリを作っているが、JavaScriptやCSSが404で見つからない。 192.168.210.100 - - [15/Jan/2017 13:42:14] "GET / HTTP/1.1" 200 1174 192.168.210.100 - - [15/Jan/2017 13:42:14] "GET /static/bootstrap-3.3.7-di…

Python+MySQLで開発時に「UnicodeDecodeError: 'utf-8' codec can't decode byte 0x83 in position 113: invalid start byte」

ここまで、下記2つのエントリーを進めてきた。 ・「Python+SQLAlchemy+MySQLでORマッピング」 ・Python+SQLAlchemy+MySQLでORマッピング 〜 select ここでハマった。次のエラーが発生するが原因が分からない。 UnicodeDecodeError: 'utf-8' codec can't deco…

Python+SQLAlchemy+MySQLでORマッピング 〜 select

「Python+SQLAlchemy+MySQLでORマッピング」の続き。次のようにして、条件検索が出来る。 テーブル指定は、select()の引数に[Tableオブジェクト]を指定する。 列にアクセスするには、「Tableオブジェクト.c.列名」とする。 import sqlalchemy as dbMapper ・…

Python+SQLAlchemy+MySQLでORマッピング

「Python+SQLAlchemy+MySQLでDB接続」ではSQLを直接記述して実行したが、今回はSQLを記述せずにDBアクセスを行う。つまり、SQLAlchemyのORマッピング機能を使用して、SQLを書かずにSQLを実行する。要点だけを記載したコードは次。 import sqlalchemy as dbMa…

Python+SQLAlchemy+MySQLでDB接続

BottleでWEBアプリ作ろうとしていて「PythonでWEBアプリを作成する 〜 WEBアプリフレームワーク「Bottle」を使用してみる」では簡単なものを作ってみたが、SQL書くの面倒。 なので、ORマッパー「SQLAlchemy」を使ってみる。pipで「SQLAlchemy」をインストー…

PythonでWEBアプリを作成する 〜 WEBアプリフレームワーク「Bottle」を使用してみる

最近やたらと忙しい上に、Excelでの手作業が増えてきたので、手作業している部分をWEBアプリにしておこうかなと思った。 WEBアプリはしっかり作るには考慮しなければならないことが多くて大変だが、今回は自分用アプリなので非常にシンプルなもので良い。 見…