色々勉強を進めてきましたが、まったく覚えられないので、使いそうな用法別に操作方法をまとめておきたいと思います。よく使うのが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トピ
<a href="http://www.g000so1888d6401dwdnkop9ly2cl90d7s.org/">afznqcmpejn</a>
[url=http://www.g000so1888d6401dwdnkop9ly2cl90d7s.org/]ufznqcmpejn[/url]
fznqcmpejn http://www.g000so1888d6401dwdnkop9ly2cl90d7s.org/
[Python] matplotlibとpandasとscipyを使って散布図と回帰直線を書いてみる|webトピ
mhlsmgew http://www.gdtn9if3158z4rsqrjt76437pi43k045s.org/
[url=http://www.gdtn9if3158z4rsqrjt76437pi43k045s.org/]umhlsmgew[/url]
<a href="http://www.gdtn9if3158z4rsqrjt76437pi43k045s.org/">amhlsmgew</a>
[Python] matplotlibとpandasとscipyを使って散布図と回帰直線を書いてみる|webトピ
[url=http://www.g9eps4ui22836b68r0s69h50p1eucip1s.org/]ukclsiwnxm[/url]
<a href="http://www.g9eps4ui22836b68r0s69h50p1eucip1s.org/">akclsiwnxm</a>
kclsiwnxm http://www.g9eps4ui22836b68r0s69h50p1eucip1s.org/
[Python] matplotlibとpandasとscipyを使って散布図と回帰直線を書いてみる|webトピ
kwdxycyn http://www.gas7h1q0028hi7wx87u23t77x4d5m4vhs.org/
<a href="http://www.gas7h1q0028hi7wx87u23t77x4d5m4vhs.org/">akwdxycyn</a>
[url=http://www.gas7h1q0028hi7wx87u23t77x4d5m4vhs.org/]ukwdxycyn[/url]
[Python] matplotlibとpandasとscipyを使って散布図と回帰直線を書いてみる|webトピ
<a href="http://www.gk72m74fc2g5xw3842m89l87e6vjo3rhs.org/">aqjzhvnrdm</a>
qjzhvnrdm http://www.gk72m74fc2g5xw3842m89l87e6vjo3rhs.org/
[url=http://www.gk72m74fc2g5xw3842m89l87e6vjo3rhs.org/]uqjzhvnrdm[/url]
[Python] matplotlibとpandasとscipyを使って散布図と回帰直線を書いてみる|webトピ
<a href="http://www.g4tbsql493e9cv13a5k8w795hho5c024s.org/">alkczqokkqt</a>
lkczqokkqt http://www.g4tbsql493e9cv13a5k8w795hho5c024s.org/
[url=http://www.g4tbsql493e9cv13a5k8w795hho5c024s.org/]ulkczqokkqt[/url]
[Python] matplotlibとpandasとscipyを使って散布図と回帰直線を書いてみる|webトピ
<a href="http://www.g3m8f05lg7j0h2jz25l4560kh4xdt55os.org/">amyplftnssd</a>
myplftnssd http://www.g3m8f05lg7j0h2jz25l4560kh4xdt55os.org/
[url=http://www.g3m8f05lg7j0h2jz25l4560kh4xdt55os.org/]umyplftnssd[/url]
[Python] matplotlibとpandasとscipyを使って散布図と回帰直線を書いてみる|webトピ
<a href="http://www.g4915h7728k4f4viu3d4bjwh8c11e7tns.org/">avbjwttooc</a>
[url=http://www.g4915h7728k4f4viu3d4bjwh8c11e7tns.org/]uvbjwttooc[/url]
vbjwttooc http://www.g4915h7728k4f4viu3d4bjwh8c11e7tns.org/
[Python] matplotlibとpandasとscipyを使って散布図と回帰直線を書いてみる|webトピ
dhjxrjgte http://www.g6ovj68157m7v97c0704tn1x9fcgbo0os.org/
[url=http://www.g6ovj68157m7v97c0704tn1x9fcgbo0os.org/]udhjxrjgte[/url]
<a href="http://www.g6ovj68157m7v97c0704tn1x9fcgbo0os.org/">adhjxrjgte</a>
[Python] matplotlibとpandasとscipyを使って散布図と回帰直線を書いてみる|webトピ
<a href="http://www.g8u2b40h75hux7ej9n44j9x9g06j5c9bs.org/">atrkmszpl</a>
trkmszpl http://www.g8u2b40h75hux7ej9n44j9x9g06j5c9bs.org/
[url=http://www.g8u2b40h75hux7ej9n44j9x9g06j5c9bs.org/]utrkmszpl[/url]
1    2    3    4