昨日は日本取引所に上場する企業のリストを取得してローカルのPCに保存する関数を作りました。一行しか書いていないではないかという人も言われますが、逆に一行でできるのです。
「プログラミングができれば色々簡単にできる!!!」ということを見せたかったというのも一つあります。多くの親御さんたちと話していると「子供にはぜひプログラミングを!」っていう人多いけど、自分はやったことがないという人が多いので、まぁそんな方々の目に私のブログが触れることはないと思いますが、万が一触れ場合「こんなに簡単にできるのか!!」と思っていただければと思いました。
今日のお題
まずは取ってきたデータをちょっと整えます
昨日の記事では日本取引所様から取ってきたエクセルファイルを自分のパソコンに保存するところまでやりました。次は、自分が使いたい形にエクセルを整えます。
どんな形でもよいので、まずは読み込んだデータを見てみましょう。私の場合、①コードをインデックスに使用する、②日付をなくしたい、③ETFとETNのデータはいらない、ということを思いましたので、pandasでエクセルを読み込み、①②③の3つを行い、それを行った後のデータを返すという関数を作ることにしました。
早速関数を見てみましょう。
import pandas as pd save_path = 'stock_list.xls' def remove_etf(save_path=save_path): df = pd.read_excel(save_path, index_col='コード') df1 = df[df['市場・商品区分'] != 'ETF・ETN'] df1 = df1.drop(['日付'], axis=1) return df1
これで思った感じにデータが整います。大体やりたいことに対して一行なんか書くという感じです。
よくある俺様仕様
注意点としてはETF・ETNのところで、真ん中の点だけ全角になっているところです。最初全部半角でやってたら、ETF・ETNの銘柄がはじかれていませんでした。このように普通にあるデータはよく分からない俺様仕様があるので注意しましょう。
ちょっとデータを見てみる
できたデータを見てみましょう。昨日の関数と今日の関数を使うと、jupyter notebook上でデータが見られます。
fetch_stock_list() # これでデータを自分のPCにダウンロードしてくる。 df = remove_etf() # これで落としてきたデータを見たい形でdfというオブジェクトにできる。
df.head()と打つと以下の表示がされます。
ETF/ETNは最初に固まっていたのでそれがないのでちゃんと消えていることがわかります。次に、データが欠けている部分とかないかをチェックしてみます。df.info()で見られます。
これを見ると、データ数は3683で欠損はなさそうというのがわかります。
上場市場はどれが多いのかも見てみたい。というわけで、df['市場・商品区分'].value_counts()というコードを書いてshift + enterを押します。
proマーケットに24銘柄も上場しているのかとか、なんだかんだ言って第1部市場が多く、若い企業が少なそうという日本社会の問題も見えてきます。まぁ最近は巨大企業がベンチャーを買い取ってしまうため、そうなっている部分もあると思いますが。
規模コードってなんやねんということで、またvalue_counts()で見てみます。
どうも、東証1部の銘柄なんかに振り分けられてるっぽいなーてのが、最初の30,70というのを見てTOPIX30,70を表してそうというのでわかります。
33業種コードもどういう割合になっているのかなぁとみてみました。
これって33あるのか?と疑問だったことからcount()で数えると、「-」もいれて34あり、33業種分の数値があることが分かりました。「9050」が一番多いのですが、何か気になりますね。これを見てみると・・・
サービス業でした。逆に少ない5150は空運業、1050は鉱業、50は水産農林でした。いやー、こんなちょっとしたデータでも見ていくと面白いですねぇ。