fc2ブログ
matplotlibでウィンドウを表示させずにグラフを描画する
基本的にはplotしたらすぐ結果を確認したいわけですが、サーバーとかで連続的に計算してグラフだけ作っておいて、あとで全部確認みたいなことをしたいとき、ウィンドウが表示できないと、RuntimeError: Invalid DISPLAY variableが飛びます。
そんなときは、以下のように書けばOK。

import matplotlib
matplotlib.use('Agg')
import pylab

pylab.plot([1,2,3])
pylab.savefig('temp.png')

まあ、ここに書いてあることそのままなんですが、自分用のメモに。

ちなみに、AggはPNG用のBackendです。なので、PDFにしたければ、AggのところをPDFにするだけで、グラフがPDFとして保存されます。このBackendが普段はディスプレイ出力を伴うように設定されているというわけです。
スポンサーサイト



【2015/07/29 12:03】 | Python | トラックバック(0) | コメント(0) | page top↑
pandas.DataFrameでnanを穴埋め
データに欠損値はつきものですが、そのままにしておくと、scikitlearnのKMeanなどを使うとエラーになってしまうので、処理しておく必要があります。

1つでも欠損値があったら、その行または列を取り除いてしまうのは楽でイイですが、データが減ります。

d = pd.DataFrame({'a':[1,2,3], 'b':[30,pd.np.nan,20]})

a b
0 1 30
1 2 NaN
2 3 20

#行方向
d.dropna(axis=0)

a b
0 1 30
2 3 20

# 列方向
d.dropna(axis=1)

a
0 1
1 2
2 3


何かの値で埋めることも可能です。

d.fillna(0)

a b
0 1 30
1 2 0
2 3 20


周辺からそれっぽい値をとってきてもらって埋めることも可能です。前(forward)後ろ(back)と行列で合計4種類のやり方があります。

d = pd.DataFrame({'a':[1,2,3], 'b':[30,pd.np.nan,20]})

a b
0 1 30
1 2 NaN
2 3 20

# 行方向に移動しながら、最新の有効な値で穴埋め
d.fillna(method='ffill')

a b
0 1 30
1 2 30
2 3 20

# 行方向に移動しながら、有効な値で後方の欠損値を埋める
d.fillna(method='bfill')

a b
0 1 30
1 2 20
2 3 20

# axisに1か'columns'を指定すると、列方向の移動に変わる。
d.fillna(method='ffill',axis=1)

a b
0 1 30
1 2 2
2 3 20

# 後ろ方向だと、最後の欠損値が埋まらないので注意
d.fillna(method='bfill',axis=1)

a b
0 1 30
1 2 NaN
2 3 20

もちろん先頭が欠損値でも同じ事が起きるので、壁をペンキで塗るときに、刷毛を返すみたいに、ffilleのあと、bfillするのがいいような気がします。
【2015/07/08 15:21】 | Python | トラックバック(0) | コメント(0) | page top↑
Anaconda環境で仮想環境(virtualenvではなくcondaで)
Pythonで、virtualenvを使うと、いくつかのバージョンのPythonを同じマシンで使い分けるのに便利です。要は自動的にPATHを上手く設定してくれる感じですが、たとえばこのサイトが参考になります。

他にもいろいろ調べれば出てくるんですが、最近みんなに便利だと宣伝しているAnacondaの環境で使おうとすると、こんな感じに。

~$ pip install virtualenv

WARNING: using virtualenv with conda is untested and not recommended.
We suggest using the conda command to create environments instead.
For more information about creating conda environments, please see:
http://docs.continuum.io/conda/examples/create.html

Proceed (y/n)? n

「conda使え」的なメッセージが出てきます。ちょっと調べると、以下のようなサイトが、おお、すいません、condaで仮想環境を作れるとは知りませんでした。
http://qiita.com/icoxfog417/items/02a80b93b5f1e95f2795
http://qiita.com/icoxfog417/items/c91ba9555a247e9e8979

しかし、別のバージョンのPythonを入れるにはどうしたらいいんだ?と思っていたら、こんなブログが。

たとえば、Python3のAnaconda環境で、Python2の環境を作るには以下のようにします。

$ conda create -n py27 python=2.7 anaconda

最後に、入れておきたいパッケージの名前を羅列します。デフォルトでpipは入れてくれるので、後からの追加もOKですが、必要だとわかっているものは、ここに書いて入れておくのがよいかも。

詳しいマニュアルは、ここにあります。
http://conda.pydata.org/docs/commands/conda-create.html

pipとvirtualenvで出来ることはcondaだけで出来るというContinuum社の宣伝?ページもあります。
http://conda.pydata.org/docs/_downloads/conda-pip-virtualenv-translator.html

追加した仮想環境を消したいときは、こんな感じ。

$ conda-env remove -n py27


2015.10.4 追加変更
【2015/07/03 17:27】 | Python | トラックバック(0) | コメント(0) | page top↑
| ホーム |