Python データサイエンス講座 vol.4
またしても久しぶりになってしまったデータサイエンス学習シリーズ。もっと気合を入れてやれ、俺。
レクチャー16「indexの基本」
レクチャー17「indexを変える」
→Series内のindexを並べ替えたり、足したりする方法を学んだ。
レクチャー18「行や列を削除する」
レクチャー19「データを取り出す」
→DataFrame内の行や列をdropで削除する方法や、特定の行(index)や列(column)を抽出する方法を学んだ。
レクチャー20「形の違うデータの計算」
→異なる2つのDataFrame内の数値を足したり引いたりして1つのDataFrameを作る方法を学んだ。
レクチャー21「データの並べ替えと順番」
→Seriesをindexや各行の数値で並べ替えたりする方法を学んだ。
レクチャー22「データと統計量」
→任意のDataFrameの詳細(中央値や標準偏差値など)をdescribeを使って表示できる。また、株価のデータをyahooから引っ張ってきてそれでDataFrameを作り、株価の推移を描画したりヒートマップで相関図を作ったりする方法を学んだ。例えば、私が購入した経験のあるエクソン・モービル(ティッカーシンボル:XOM)、テスラ(ティッカーシンボル:TSLA)、アリババ(ティッカーシンボル:BABA)、アンダーアーマー(ティッカーシンボル:UA)のそれぞれの2015年の1日毎の株価をDataFrameで作ると、
import numpy as np
from pandas import Dataframe, Series
import pandas as pdimport pandas.io.data as pdweb
import datetime
prices = pdweb.get_data_yahoo(['XOM', 'TSLA', 'BABA', 'UA'],
start=datetime.datetime(2015,1,1),
end=datetime.datetime(2016,1,1))['Adj Close']
これで、pricesをリターンすると
BABA | TSLA | UA | XOM | |
---|---|---|---|---|
Date | ||||
2015-01-02 | 103.599998 | 219.309998 | 33.445000 | 88.202638 |
2015-01-05 | 101.000000 | 210.089996 | 32.650002 | 85.789250 |
2015-01-06 | 103.320000 | 211.279999 | 32.110001 | 85.333174 |
2015-01-07 | 102.129997 | 210.949997 | 33.279999 | 86.197816 |
2015-01-08 | 105.029999 | 210.619995 | 34.134998 | 87.632548 |
2015-01-09 | 103.019997 | 206.660004 | 33.825001 | 87.509023 |
2015-01-12 | 101.620003 | 202.210007 | 33.564999 | 85.827257 |
2015-01-13 | 100.769997 | 204.250000 | 33.299999 | 85.513705 |
2015-01-14 | 99.580002 | 192.690002 | 32.875000 | 85.266663 |
2015-01-15 | 96.309998 | 191.869995 | 32.325001 | 84.525546 |
2015-01-16 | 96.889999 | 193.070007 | 32.599998 | 86.577878 |
2015-01-20 | 100.040001 | 191.929993 | 32.735001 | 86.549368 |
2015-01-21 | 103.290001 | 196.570007 | 33.290001 | 87.290492 |
2015-01-22 | 104.000000 | 201.619995 | 34.709999 | 88.240645 |
2015-01-23 | 103.110001 | 201.289993 | 34.910000 | 86.359340 |
2015-01-26 | 103.989998 | 206.550003 | 35.805000 | 87.185975 |
2015-01-27 | 102.940002 | 205.979996 | 35.980000 | 86.416347 |
2015-01-28 | 98.449997 | 199.369995 | 35.435001 | 83.565890 |
2015-01-29 | 89.809998 | 205.199997 | 36.400002 | 83.214338 |
2015-01-30 | 89.080002 | 203.600006 | 36.040001 | 83.062310 |
2015-02-02 | 90.129997 | 210.940002 | 35.974998 | 85.114643 |
2015-02-03 | 90.610001 | 218.360001 | 36.415001 | 87.651548 |
2015-02-04 | 90.000000 | 218.550003 | 36.785000 | 86.900926 |
2015-02-05 | 87.000000 | 220.990005 | 36.650002 | 87.756065 |
2015-02-06 | 85.680000 | 217.360001 | 37.055000 | 87.593322 |
2015-02-09 | 86.000000 | 217.479996 | 36.340000 | 87.650757 |
2015-02-10 | 87.260002 | 216.289993 | 36.685001 | 87.124245 |
2015-02-11 | 86.000000 | 212.800003 | 36.889999 | 86.731746 |
2015-02-12 | 87.099998 | 202.880005 | 36.974998 | 88.426179 |
2015-02-13 | 89.050003 | 203.770004 | 36.880001 | 89.383483 |
... | ... | ... | ... | ... |
12月31まで続く「...」以降の数値は省略したけど、こんなんが表示できて大変気持ちがいい。また、
%matplotlib inline
prices.plot()
これで
こんなんが表示できてこれまた大変気持ちがいい。
レクチャー23「欠損値の扱い」
→0でもなく「そもそも値が存在しない」という意味である欠損値はNaN(Not a Numberの略)で表示される。null値とも言うのかな?その欠損値がDataFrame内に存在するのかを調べたりする方法を学んだ。
レクチャー24「indexの階層構造」
→行と列に階層構造を入れる方法や、それらの名前を変更したり入れ替えたりする方法を学んだ。
〜〜〜〜〜〜〜〜〜
こんな感じがここ最近までに進んだ範囲。合計104あるレクチャーの内、いまだ24...。もっと気合を入れてやれ、俺(本日2回目)。