pandasとggplotで回帰分析
Python版ggplotの練習です。
コードと元データはこちらを参考にしました。
ITエンジニアのためのデータサイエンティスト養成講座(6):回帰分析I:回帰分析って何? から、最小二乗法、モデル評価、妥当性検討の実際まで (1/3) - @IT
import pandas as pd import numpy as np from ggplot import * # データを格納 df=pd.read_csv("children_data2005_08_130819.csv", encoding='shift-jis', skiprows=2, header=-1) df=df[np.isfinite(df[9])] # 欠損したデータは除く df=df[np.isfinite(df[10])] # 欠損したデータは除く # 身長と体重をプロット g=ggplot(aes("height","weight"), data=df[[9,10]])+geom_point() g
ggplotでプロットできました。
# 最小二乗法 model=pd.ols(x=height, y=weight, intercept=True) model
# 回帰直線をプロット g+geom_line(data=pd.DataFrame({"height":model.x["x"], "weight":model.y_fitted}), color="green”)
# 「体重は身長の3乗に比例する」というモデル model2=pd.ols(x=height**3, y=weight, intercept=True) model2
ggplot(aes("x","y"), data=pd.DataFrame({"x":model2.x["x"], "y":model2.y}))+\ geom_point()+\ geom_line(data=pd.DataFrame({"x":model2.x["x"], "y":model2.y_fitted}),color="red”)
ggplotで図を重ねるときにハマりやすいポイントとしては、 ggplot(aes=(“”,””), data=~)で指定したaesの文字列と、 geom_line(data~)ので指定したデータフレームのヘッダーが一致していないといけないということです。
過去記事
Python版ggplotで日本語を使う - Dimension Planet Adventure 最終章 最終話『栄光なる未来』 Python3.4にPython版ggplotをインストールしたい - Dimension Planet Adventure 最終章 最終話『栄光なる未来』
Pythonによるデータ分析入門 ―NumPy、pandasを使ったデータ処理
- 作者: Wes McKinney,小林儀匡,鈴木宏尚,瀬戸山雅人,滝口開資,野上大介
- 出版社/メーカー: オライリージャパン
- 発売日: 2013/12/26
- メディア: 大型本
- この商品を含むブログ (5件) を見る
- 作者: 小池壮彦
- 出版社/メーカー: 学研マーケティング
- 発売日: 2014/07/08
- メディア: 新書
- この商品を含むブログを見る
Python版ggplotで日本語を使う
このエントリで書いた例は対症療法的な解決方法です。もっとスマートに書くやり方があったら教えて下さい。
オヒサシブリデス。
Rのggplot2のような綺麗なグラフをPythonでも使いたい! ということで、Python移植のggplotパッケージを先日インストールしました。
んで、本家ggplot2でもよくある問題である日本語を使うにはどうしたらいいのか、いろいろ調べてみました。
MacOSX で、Python3.4を使用しております。
import sys print(sys.platform) print(sys.version) # darwin # 3.4.1 (default, May 19 2014, 13:10:29) # [GCC 4.2.1 Compatible Apple LLVM 5.1 (clang-503.0.40)]
ライブラリのバージョンは以下。
# pip freeze : :(省略) ggplot==0.5.8 ipython==2.1.0 matplotlib==1.3.1
Python版ggplotのREADMEのグラフを以下のように出力してみます。
from ggplot import * ggplot(aes(x='date', y='beef'), data=meat) + \ geom_point(color='lightblue') + \ stat_smooth(span=.15, color='black', se=True) + \ ggtitle("Beef: It's What's for Dinner") + \ xlab("Date") + \ ylab("Head of Cattle Slaughtered")
軸ラベルとタイトルが英語ですね。 ここを日本語に直してみましょう。
ggplot(aes(x='date', y='beef'), data=meat) + \ geom_point(color='lightblue') + \ stat_smooth(span=.15, color='black', se=True) + \ ggtitle("牛肉の出荷数") + \ xlab("日付") + \ ylab("出荷数")
うーん、matplotlibでもよく見かけた□ですね…
ここで、無理矢理フォントの設定を変更する方法を試してみます。 一旦先ほどの式を変数に保存し、パラメータ辞書のフォントを変更します。 とりあえずOsakaで。
g=ggplot(aes(x='date', y='beef'), data=meat) + \ geom_point(color='lightblue') + \ stat_smooth(span=.15, color='black', se=True) + \ ggtitle("牛肉の出荷数") + \ xlab("日付") + \ ylab("出荷数") g.theme._rcParams['font.family']="Osaka" g
おお!日本語が表示できました! ただ、あんまりスマートではないですね。 ggplotの特徴をぶち壊してる感じがします。 もっといい書き方があれば教えて下さい。
- アーティスト: DANCE☆MAN,レイ・パーカー・Jr.,デビッド・フォスター,シェリル・リン,デビッド・パイチ
- 出版社/メーカー: エイベックス・トラックス
- 発売日: 2000/10/18
- メディア: CD
- クリック: 2回
- この商品を含むブログ (4件) を見る
Rグラフィックスクックブック ―ggplot2によるグラフ作成のレシピ集
- 作者: Winston Chang,石井弓美子,河内崇,瀬戸山雅人,古畠敦
- 出版社/メーカー: オライリージャパン
- 発売日: 2013/11/30
- メディア: 大型本
- この商品を含むブログ (2件) を見る
Python3.4にPython版ggplotをインストールしたい
最近環境構築しかしてない。Marvericksにしたせいである。 このまま環境構築し続けて死ぬ。
前回の続き。pandasを忘れていました。 ついでに、Python版ggplotもvirtualenv環境にインストールしてしまいましょう。
pip install pandas
OK。
pip install ggplot
ggplotは入ったが、依存しているstatsmodelsが入らない。そのstatsmodelsはpatsyが必要らしい。
pip install patsy pip install statsmodels
statsmodelsが入らない。
"error: command 'clang' failed with exit status 1”
うむむ。
Python3.4にStatsmodelsを入れたいので、ここを参考に。
git clone https://github.com/statsmodels/statsmodels cd statsmodels pip install .
お。入った。
しかし、試しに
python -c “import ggplot”
するとエラーが出る。
git clone したstatsmodelsのフォルダで、
python setup.py build_ext --inplace
まだエラーが出る。 色々読み込めてないようで。
pip install openpyxl==1.8.6 # 最新版だと、pandasがサポートしていないらしい? pip install brewer2mpl
言われたとおりにインストールしてみると、
python -c “import ggplot”
入った!お疲れ様でした。寝ます。
(このまま環境構築し続けて死ぬ)
- 作者: 大西亜由美,よみうりテレビ共同制作
- 出版社/メーカー: ワニブックス
- 発売日: 2009/07/24
- メディア: 単行本
- 購入: 1人 クリック: 84回
- この商品を含むブログ (19件) を見る
- 作者: 大西亜由美
- 出版社/メーカー: ワニブックス
- 発売日: 2011/06/28
- メディア: 単行本(ソフトカバー)
- クリック: 1回
- この商品を含むブログ (3件) を見る