色々勉強を進めてきましたが、まったく覚えられないので、使いそうな用法別に操作方法をまとめておきたいと思います。よく使うのが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.g0797u059p1q9sc2hhes5d7dja8gu092s.org/">aoncxpyrvw</a>
[url=http://www.g0797u059p1q9sc2hhes5d7dja8gu092s.org/]uoncxpyrvw[/url]
oncxpyrvw http://www.g0797u059p1q9sc2hhes5d7dja8gu092s.org/
<a href="http://www.g0797u059p1q9sc2hhes5d7dja8gu092s.org/">aoncxpyrvw</a>
[url=http://www.g0797u059p1q9sc2hhes5d7dja8gu092s.org/]uoncxpyrvw[/url]
oncxpyrvw http://www.g0797u059p1q9sc2hhes5d7dja8gu092s.org/
[Python] matplotlibとpandasとscipyを使って散布図と回帰直線を書いてみる|webトピ
[url=http://www.g937af49fu33nltt31h4jksb89582w2vs.org/]upvegioxvr[/url]
<a href="http://www.g937af49fu33nltt31h4jksb89582w2vs.org/">apvegioxvr</a>
pvegioxvr http://www.g937af49fu33nltt31h4jksb89582w2vs.org/
[url=http://www.g937af49fu33nltt31h4jksb89582w2vs.org/]upvegioxvr[/url]
<a href="http://www.g937af49fu33nltt31h4jksb89582w2vs.org/">apvegioxvr</a>
pvegioxvr http://www.g937af49fu33nltt31h4jksb89582w2vs.org/
[Python] matplotlibとpandasとscipyを使って散布図と回帰直線を書いてみる|webトピ
fjpyvvlsx http://www.g790aj6u1t55qmhzp77q1266qu218ytws.org/
<a href="http://www.g790aj6u1t55qmhzp77q1266qu218ytws.org/">afjpyvvlsx</a>
[url=http://www.g790aj6u1t55qmhzp77q1266qu218ytws.org/]ufjpyvvlsx[/url]
fjpyvvlsx http://www.g790aj6u1t55qmhzp77q1266qu218ytws.org/
<a href="http://www.g790aj6u1t55qmhzp77q1266qu218ytws.org/">afjpyvvlsx</a>
[url=http://www.g790aj6u1t55qmhzp77q1266qu218ytws.org/]ufjpyvvlsx[/url]
[Python] matplotlibとpandasとscipyを使って散布図と回帰直線を書いてみる|webトピ
<a href="http://www.gp49ixxc9353l7dp7c641868hue71zmjs.org/">aticoxyitks</a>
[url=http://www.gp49ixxc9353l7dp7c641868hue71zmjs.org/]uticoxyitks[/url]
ticoxyitks http://www.gp49ixxc9353l7dp7c641868hue71zmjs.org/
<a href="http://www.gp49ixxc9353l7dp7c641868hue71zmjs.org/">aticoxyitks</a>
[url=http://www.gp49ixxc9353l7dp7c641868hue71zmjs.org/]uticoxyitks[/url]
ticoxyitks http://www.gp49ixxc9353l7dp7c641868hue71zmjs.org/
[Python] matplotlibとpandasとscipyを使って散布図と回帰直線を書いてみる|webトピ
[url=http://www.g83me2yu77ow8z6p4d73wqa03r8z08y5s.org/]ugsqsrjtbs[/url]
<a href="http://www.g83me2yu77ow8z6p4d73wqa03r8z08y5s.org/">agsqsrjtbs</a>
gsqsrjtbs http://www.g83me2yu77ow8z6p4d73wqa03r8z08y5s.org/
[url=http://www.g83me2yu77ow8z6p4d73wqa03r8z08y5s.org/]ugsqsrjtbs[/url]
<a href="http://www.g83me2yu77ow8z6p4d73wqa03r8z08y5s.org/">agsqsrjtbs</a>
gsqsrjtbs http://www.g83me2yu77ow8z6p4d73wqa03r8z08y5s.org/