カンマ区切りのcsvファイルを読み込んで
「上場企業名,当期利益,自己資本」だけを取り出して
カンマ区切りで出力(ファイル名はoutt5.csv)する。
$ cat japan-all-stock-financial-results_20180901.csv | awk -F, 'BEGIN{OFS=","}{print $2,$8,$10}' | sed -e s/\"//g | head -n 10 | tee -a outt5.csv
例えば日本水産だと当期利益は17334百万円つまり173億3400万円。しこたま儲けている。
ところで、実はJupyterNotebookでもシェルコマンドが打てる。
いま作業してるmacOSのフォルダで実行するとこうなる。
$ ls
$ cat japan-all-stock-financial-results_20180901.csv | head -n 10
$ cat japan-all-stock-financial-results_20180901.csv | awk -F, 'BEGIN{OFS=","}{print $2,$8,$10}' | sed -e s/\"//g | head -n 10 | tee -a outt5.csv
うむ。
これで outt5.csvができた。
$ cat outt5.csv
今回はこれをpython3のpandasで読んでみよう、というハナシ。
できた。こうなる。
元のcsvファイルにある50件の企業全てについて見てみよう。catの手順からやり直す。
$ cat japan-all-stock-financial-results_20180901.csv | awk -F, 'BEGIN{OFS=","}{print $2,$8,$10}' | sed -e s/\"//g | tee -a outt6.csv
outt6.csvに保存された。
これをpython3のpandasで読み込む。
いいね。やり方が分かってきたよ。pandasの。
会社名を除いたうえで当期利益の列でソートした outt8.csv を作って食わせてみる。
統計量を出してみる。
mean(平均)、median(中央値)まではちゃんと出た。mode(最頻値)が出ないのはなぜ?後で調べる。
散布図(scatter)を出力してみる。
pytable8.describe() #descriveメソッドで各列ごとの要約統計量を取得
plt.scatter(pytable8['当期利益(百万円)'], pytable8['自己資本(百万円)'])
# plt.xlim([0,100000]) #横軸xの下限を「0」、上限を「100000」
plt.xlim([0,45000])
plt.ylabel('JIKO_SIHON') #縦軸ラベル
plt.xlabel('TOUKI_RIEKI') #「縦軸ラベル
plt.show() #コードの実行結果の表示
グラフ右上に1つだけ、ヘンに右上に吹っ飛んだのがいる。
「国際石油開発帝石」だ。当期利益が40362、自己資本が2916680もある。他と1ケタ違う。
あとで調べる。
別のcsvで実験。
http://lkzf.info/xbrl/data/summary-join.csv
コピペ用
#https://qiita.com/mabota/items/a68b400cb1a2ea6ad71a
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
#インライン宣言
%matplotlib inline
pytable = 0 #変数の中身ゼロクリア
pytable = pd.read_csv('outt5.csv', encoding="utf8")
# print(pytable)
pytable.head()