R, Python, DB 備忘録

データベースとか、jupyter(Python)、Rとか色々

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

Rでは(まだ)parquetファイルが読み込めない

PythonでのDataFrameの保存方法としてCSVは卒業してparquet+zstdにしようと思っているのですが、どうやら日本語環境のWindowsだとRで読み込めない模様 Rのarrowパッケージのread_parquetでparquet形式ファイルは読み込めるはずですが、フリーズしてしまいま…

0除算によるRuntimeWarningを回避する

numpyでゼロ除算をしたときにはRuntimeWarningが発生する。 1回くらいなら気にすることもないが、ループで大量に発生するのはちょっと(かなり)鬱陶しい。 c:\users\<省略>\lib\site-packages\ipykernel_launcher.py:19: RuntimeWarning: invalid value enc…

AWS - Athena:スイッチロールする場合のODBC設定/DBeaver(JDBC)設定

前提 IAMユーザーとしてログイン S3やAthenaを使うときはスイッチロール アクセスキーは付与されている Profileファイルの作成 %UserProfile%\.aws\に認証用プロフィールcredentials(拡張子なし)を作成 記載内容は下記の通り defaultとしてアクセスキーとシ…

ERROR: could not stat file "XX.csv": Unknown error

現象 PostgreSQL 11, 12 で4GB超のファイルをCOPYしようとすると、上記のエラーが出てバルクロードに失敗する。 原因 fstatというプログラムが走るが、そのプログラムが32bitプログラムのため4GB超のファイルに対応できない。 対応 PostgreSQL 10を使う。ま…

データ操作まとめ(R dplyrとPython pandasで)

irisデータセットを使ってRとPythonのデータフレームの操作方法の比較 バージョン 準備 R Python (列の)選択 R Python 抽出(filter) R Python カテゴリ化 R Python 集計 R Python 集計値を新規カラムとして追加 R Python バージョン R R 4.0.2 dplyr 1.0.1 P…

MonetDBクライアントで読み込む外部スクリプトはBOM付にしておく

MonetDBに絡むファイル(データCSVやその他諸々)はUTF-8にしておけば問題ないと思っていた。 (実際、ここを始めとしてMonetDB.orgの色々なところに書いてある。)しかし、罠があった。 それは、BOM無しのUTF-8のスクリプトファイル(.sql)の2バイト文字を…

PowerPointでプログラムコードを書くとクォーテーションが勝手に変更される問題

内容 PowerPointで、例えば Select var1, sum(var2) from dt where var3 = 'X' のようなコードを入力すると Select var1, sum(var2) from dt where var3 = ‘X’ にされてしまいます。これはシングルクォーテーションの場合ですが、ダブルクォーテーションでも…

MonetDB+R:入力文字列 5 はこのロケールでは不適切です

内容 ポピュラーなDBは使っているOSに合わせたエンコーディングで結果を返してくれるがMonetDBはUTF-8固定 なので、RODBCをオプションなしで使うと文字化けが発生する。 Warning message in FUN(X[[i]], ...): " 入力文字列 5 はこのロケールでは不適切です …

Python+jupyterの並列処理

つい最近Pythonの並列処理について書いたばかりなんですが rpy.hatenablog.comjupyter上で並列処理ができるipyparallelを使ってみたので、導入から簡単な使い方までまとめました。 ipyparallelは、単一マシン上のマルチプロセスだけでなく、分散コンピューテ…

pipenv install でエラー:仮想環境が作れない

内容 下記のエラーが出て仮想環境がインストールできない。 AttributeError: 'NoneType' object has no attribute 'version_sort' 解決法 pipenvのバージョンを2018.11.26に下げる。 参考 github.com

Pythonの並列処理(マルチプロセス)

Rで並列処理といえばforeach 並列じゃない場合の繰り返しにも使いやすい上に気軽に並列化できる、神ライブラリと言って良いと思う。(2020.12.18追記)最近はRayという素晴らしいライブラリができて非常に簡単に分散処理ができるようになっていたのですね。 do…

クロス集計表

R

Rでずっと使っているクロス集計表の話です。 3年前くらいにネットを漁ってブログを見つけ、コードを.Rprofileにコピペして使っています。 記事を書くにあたり改めてブログを拝見したら、林真広さんという「M-plusとRによる構造方程式モデリング入門」の共著…

本当に必要なグラフの描き方(seaborn編)

EDAの中で行う可視化 のためのメモ 準備 import matplotlib.pyplot as plt import seaborn as sns ヒストグラム sns.distplot(x, kde=False, norm_hist=True) # 全体100%で正規化 sns.distplot(x2, kde=False, norm_hist=True) # ヒストグラムの重ね描き 棒…

本当に必要なグラフの描き方(ggplot2編)

R

TableauやGoogle Data Studioなど、BIツールを利用するようになって思ったこと。「もう、ggplotで目盛りの細かい調節をしたり、カラーコードを一生懸命調べたりしなくても、視覚化はこいつらに任せればいいな…」少なくとも自分にとっては、ggplotのメインの…

RとvariableInspector混ぜるな危険

jupyter notebook/Lab の便利な拡張variableInspectorは、jupyterでR環境を使う人は入れてはいけない variableInspectorはRにも対応しているが、そのプロセスでglobal環境にある全てのオブジェクトを読むところがあるらしく、巨大なdata.frameが存在するとそ…

MonetDBではCommitしていない結果は読めない

SQLクライアントとしてDBeaverを使っています。 手動コミットモードでも Read Uncommitted を選ぶと、コミット前の変更が確認できて便利なのですが、接続先がMonetDBの場合、この項目がありません。 MonetDBの仕様なんでしょうね。

疎行列同士の最大最小

R

疎行列(SparseMatrix) 数百万個の各インプットに対して、数万個のキーワードの有無をフラグ化したい インプットを行、キーワードを列にTrue/Falseを値として持つ行列とみなせる。 しかし、普通の行列(密行列)ではメモリ不足&重い 疎行列を使うべき アソシ…

data.table

R

普段はデータの加工にdata.frame(dplyr, tidyr等)の関数を使うのだが処理速度の観点からdata.tableの構文を使いたいこともあり 基本 dt[行フィルタリング, 列操作, Grouping] 列操作において x:= の構文を用いると、その結果を返すのでなく、元のdata.table…

Rの環境設定

R

Rの環境変数についての記事があまりなく、備忘 最近はRenvなども出ているが、個人的にはRはやっぱり実験的環境 プロダクトにするなら、Python+pipenvの方が向いてる気がする。 参考 amano41.hatenablog.jp

factor

R

Rのfactor型は難しい。 なのでstringsAsFactors=Fがデフォルトですが、メリデメを整理してみた。 メリット summary()したときに、カテゴリ別の件数を表示してくれる。 ggplotしたときに、データが存在しないカテゴリに関しても描画してくれる。 sort順の指定…

無料の列指向DB「MonetDB」

MonetDB(https://www.monetdb.org/)はWindows環境でフリーで使える(おそらく)唯一の列指向DB(Columnar Database) DockerでMariaDB ColumnStoreやPostgreSQl+CFWも試したがMonetDBのがスピード優位 マイナーな印象あるが、Tableauにも対応 なお、ODBC接続…

データベースdump

MonetDB dumpコマンドはないが、データベース作成時に圧縮CSVを直接bulk loadすることができる。 bz2形式に対応 PostgreSQL カスタム形式(圧縮あり) pg_dump -U postgres -d postgres -Fc --schema=***<スキーマ名> > ***.dump<ダンプファイル名> ダンプフ…

jupyterで日本語

jupyter環境では特に設定しないとグラフの日本語(軸ラベル等)が□に文字化けしてしまう。 日本語を表示する方法について整理 この設定はAnacondaを使っている場合なので純粋なPythonの場合は適宜パスを読替え Python matplotlib の設定ファイルを修正~~~\Li…

エクスプローラの右クリック - 新規作成 から作成されるファイルの変更

Excelの場合 C:\Program Files\Microsoft Office\root\vfs\Windows\SHELLNEW\EXCEL12.XLSX を変更 その他のOfficeソフトの場合 レジストリコンピューター\HKEY_CLASSES_ROOT\.pptx\PowerPoint.Show.12\ShellNewに文字列値FileNameを追加 FileNameの値を新規…

グループごとの最小/最大

nlargest/nsmallest groupbyに対する上記メソッドは SeriesGroupBy にのみ定義され、DataFrameGroupBy には定義されていない。しかし、下記のように書くと何故か動いてしまう。 df.groupby(by or level = ***)[‘column name’].nlargest() しかし、動くとはい…

PythonとRの違い

いつもよく忘れることのメモ 整数の除算 R 除算:%/% 剰余:%% Python3 除算:// 剰余:% SQL 除算:/ (INT型の場合) 剰余:mod λ式 R ~ f(.) Python lambda x: f(x)

特定の文字を入力するとIRkernelがフリーズする

現象 日本語Windows、つまり文字コードShift-JIS(CP932)環境下のjupyter+Rで特定の文字を表示しようとするとフリーズする。 Windows(Shift-JIS)+jupyter+R というのがミソ。Pythonなら発生しないし、IRkernel+Linuxでも発生しない。 具体的にはSJISで**5Cと…

'_xsrf' argument missing from POST

エラー内容 jupyter notebook(Lab)で入力がしばらくないときにnotebookの保存ができなくなる。保存しようとするとこのエラーメッセージが出る。 Rで発生したことはあまりない気がする。Pythonのみ? 解決方法 ブラウザタブ複製で解消 リロードでも解消するが…

PostgreSQLの設定

レジストリ データディレクトリはレジストリで設定 postgresql.conf 作業用メモリの割当 shared_buffers = 512MB # min 128kB work_mem = 1GB # min 64kB maintenance_work_mem = 1GB # min 1MB 接続許可 listen_addresses = '*'詳細は pg_hba.conf で設定 p…

MySQLの設定

my.ini データディレクトリ datadir= 暗号化プラグイン default_authentication_plugin=caching_sha2_password 接続するアプリケーションによっては対応していないこともある。そのときは mysql_native_password デフォルトのストレージエンジン 指定しない…