色々勉強を進めてきましたが、まったく覚えられないので、使いそうな用法別に操作方法をまとめておきたいと思います。よく使うのがcsvを持ってきて、加工して、散布図を書いて、回帰直線を書いて、現在の数値上の傾向などをみるものです。今回はそこを中心に操作してみます。

データを持ってくる

今回はサンプルでhttps://raw.githubusercontent.com/pyfirst/samplecode/master/4_scraping/lego_scraper/brickset2016.csvをダウンロードして使います。
名前は、ひとまずlego.csvで保存します。

例外のデータや、使えないデータを削除など下準備を行う

まず、変数に読み込んでおいてから、下準備を行います。
今回は、この中のpiecesとus_priceの関係を考えるグラフを作りたいので、その2つにおいて、データがない行は使えないので削除を実施します

以下、jupyter notebookで実行してきまます。

 import pandas as pd
 file_path='./lego.csv'
 data=pd.read_csv(file_path)

#numberは商品番号かな?数値がないやつは捨てておこう
data.dropna(subset=['number'],inplace=True)

#pieces,us_priceがないやつも捨てておこう
data.dropna(subset=['pieces','us_price'],inplace=True)

#散布図を描こう。グラフのライブラリ読み込んでおこう
matplotlib inline

#散布図を描画してみよう横軸をpieces、縦をus_price,グラフにグリッドもつけておこう
data.plot.scatter(x='pieces',y='us_price',grid=True)

描画結果

はい、散布図が描画できました。。。。が、単回帰直線がないので、続いて回帰直線を追加します。

と思ったら。。。どうも、ここで使っているplotっていうのはpandasってやつでデータを取得して、簡易版?的なノリのやつらしい。そのまま吐き出すというか。

重ねる場合は、描画先を作って、散布図をはきだして、さらに、単回帰直線も同じところに吐き出せばいいらしい

pyplotを使って散布図を描画して、さらに単回帰直線を重ねて描画する

ひとまず、pyplotは、matplotlibの中らしいので、読み込んで書いていく

from matplotlib import pyplot as ppt
import pandas as pd
#例のごとく、csvを読む
file_path='./lego.csv'
data=pd.read_csv(file_path)

#numberは商品番号かな?数値がないやつは捨てておこう
data.dropna(subset=['number'],inplace=True)

#pieces,us_priceがないやつも捨てておこう
data.dropna(subset=['pieces','us_price'],inplace=True)

#キャンバス的なものを作成
canbus=ppt.figure(figsize=(10,10))

#その中にプロットとかいうグラフ枠をつくるらしい
ax1=canbus.add_subplot(111)

#ax=で描画先を指定できるらしい
data.plot.scatter(x='pieces',y='us_price',grid=True,ax=ax1)

#回帰式を取得する。取得できるライブラリは、scipy.statsらしい
from scipy.stats import linregress

#返り値は、slop,intercept,rvalue,pvalue,stderrの順らしい
slope,intercept,rvalue,pvalue,stderr = linregress(data["pieces"],data["us_price"])

#回帰直線のx軸に対するy軸を出す関数を作る
#式は一次関数、f(x)=slope*x+intercept
def price_fx(pieces):
    return slope*pieces+intercept

#一次関数描画用のxの範囲とyの範囲を設定しておく
x=[0,data["pieces"].max()]
y=[price_fx(0),price_fx(data["pieces"].max())]

#一次関数を 散布図を出力したax1に出力する
ax1.plot(x,y)

さて実行したのが下の画像

うん、ぽい!回帰直線っぽい!うまくいった。

コメント

[Python] matplotlibとpandasとscipyを使って散布図と回帰直線を書いてみる|webトピ
[url=http://www.g4x24h71icg7y21elv842k4zcey31q45s.org/]uyzycqhdtcm[/url]
yzycqhdtcm http://www.g4x24h71icg7y21elv842k4zcey31q45s.org/
<a href="http://www.g4x24h71icg7y21elv842k4zcey31q45s.org/">ayzycqhdtcm</a>
[Python] matplotlibとpandasとscipyを使って散布図と回帰直線を書いてみる|webトピ
<a href="http://www.gwg5616862006q5gywiatu1d3ug4g32fs.org/">aeycexmmlvv</a>
[url=http://www.gwg5616862006q5gywiatu1d3ug4g32fs.org/]ueycexmmlvv[/url]
eycexmmlvv http://www.gwg5616862006q5gywiatu1d3ug4g32fs.org/
[Python] matplotlibとpandasとscipyを使って散布図と回帰直線を書いてみる|webトピ
owlgfydtp http://www.g2f1x0c6fh9l0r2x28k9j6fyoo7g6306s.org/
<a href="http://www.g2f1x0c6fh9l0r2x28k9j6fyoo7g6306s.org/">aowlgfydtp</a>
[url=http://www.g2f1x0c6fh9l0r2x28k9j6fyoo7g6306s.org/]uowlgfydtp[/url]
[Python] matplotlibとpandasとscipyを使って散布図と回帰直線を書いてみる|webトピ
ftrwnhqeb http://www.g573xm1lw73kzo49y54t03v522hwi8gns.org/
[url=http://www.g573xm1lw73kzo49y54t03v522hwi8gns.org/]uftrwnhqeb[/url]
<a href="http://www.g573xm1lw73kzo49y54t03v522hwi8gns.org/">aftrwnhqeb</a>
[Python] matplotlibとpandasとscipyを使って散布図と回帰直線を書いてみる|webトピ
<a href="http://www.ge3dkx89u11jy45jl9ui6vf530917a1gs.org/">apcfnnshwj</a>
pcfnnshwj http://www.ge3dkx89u11jy45jl9ui6vf530917a1gs.org/
[url=http://www.ge3dkx89u11jy45jl9ui6vf530917a1gs.org/]upcfnnshwj[/url]
[Python] matplotlibとpandasとscipyを使って散布図と回帰直線を書いてみる|webトピ
[url=http://www.gd58947113e27451fbf8kas8ukgoq3sms.org/]unerjmslkom[/url]
<a href="http://www.gd58947113e27451fbf8kas8ukgoq3sms.org/">anerjmslkom</a>
nerjmslkom http://www.gd58947113e27451fbf8kas8ukgoq3sms.org/
[Python] matplotlibとpandasとscipyを使って散布図と回帰直線を書いてみる|webトピ
<a href="http://www.gm0s07i8f7pm5h648fm4k570u97na8xus.org/">aphzrsdvkv</a>
phzrsdvkv http://www.gm0s07i8f7pm5h648fm4k570u97na8xus.org/
[url=http://www.gm0s07i8f7pm5h648fm4k570u97na8xus.org/]uphzrsdvkv[/url]
[Python] matplotlibとpandasとscipyを使って散布図と回帰直線を書いてみる|webトピ
[url=http://www.g44op4zlqc039qzos49ir04395r5i61gs.org/]ujdpypflf[/url]
<a href="http://www.g44op4zlqc039qzos49ir04395r5i61gs.org/">ajdpypflf</a>
jdpypflf http://www.g44op4zlqc039qzos49ir04395r5i61gs.org/
[Python] matplotlibとpandasとscipyを使って散布図と回帰直線を書いてみる|webトピ
sikzzgrye http://www.gf0r298ya6840048eu1t8dnwo1pxq1v4s.org/
<a href="http://www.gf0r298ya6840048eu1t8dnwo1pxq1v4s.org/">asikzzgrye</a>
[url=http://www.gf0r298ya6840048eu1t8dnwo1pxq1v4s.org/]usikzzgrye[/url]
[Python] matplotlibとpandasとscipyを使って散布図と回帰直線を書いてみる|webトピ
pirpekfyvw http://www.gnezf49087w81cqu16po076g0qrx77l4s.org/
[url=http://www.gnezf49087w81cqu16po076g0qrx77l4s.org/]upirpekfyvw[/url]
<a href="http://www.gnezf49087w81cqu16po076g0qrx77l4s.org/">apirpekfyvw</a>
1    2    3    4