min117の日記

初期desireもち。趣味Mac,メインFedora,仕事xp。

python3 のpandasで「上場企業名,当期利益,自己資本」のカンマ区切りcsvファイルを読み込む

f:id:min117:20201107101506p:plain

前回記事に引き続き上場企業のデータを使ってcsvをいじる。

min117.hatenablog.com

 

カンマ区切りの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

f:id:min117:20201107101719p:plain

例えば日本水産だと当期利益は17334百万円つまり173億3400万円。しこたま儲けている。

 

ところで、実はJupyterNotebookでもシェルコマンドが打てる。

min117.hatenablog.com

 

いま作業してるmacOSのフォルダで実行するとこうなる。

f:id:min117:20201107102728p:plain

$ 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

f:id:min117:20201107101233p:plain

うむ。

これで outt5.csvができた。

$ cat outt5.csv

f:id:min117:20201107102114p:plain

今回はこれをpython3のpandasで読んでみよう、というハナシ。

 

できた。こうなる。

f:id:min117:20201107102303p:plain

 

元のcsvファイルにある50件の企業全てについて見てみよう。catの手順からやり直す

f:id:min117:20201107102817p:plain

$ cat japan-all-stock-financial-results_20180901.csv | awk -F, 'BEGIN{OFS=","}{print $2,$8,$10}' | sed -e s/\"//g | tee -a outt6.csv

f:id:min117:20201107102929p:plain

outt6.csvに保存された。

これをpython3のpandasで読み込む。

f:id:min117:20201107103201p:plain

いいね。やり方が分かってきたよ。pandasの。

f:id:min117:20201107103447p:plain

 

会社名を除いたうえで当期利益の列でソートした outt8.csv を作って食わせてみる。

f:id:min117:20201107130452p:plain

 

統計量を出してみる。

f:id:min117:20201107130621p:plain

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() #コードの実行結果の表示

f:id:min117:20201107130736p:plain

グラフ右上に1つだけ、ヘンに右上に吹っ飛んだのがいる。

 

国際石油開発帝石」だ。当期利益が40362、自己資本が2916680もある。他と1ケタ違う。

f:id:min117:20201107131043p:plain

外資か何かか?政府の天下り先?税金入ってるから?

あとで調べる。

 

別のcsvで実験。

http://lkzf.info/xbrl/data/summary-join.csv

f:id:min117:20201107135049p:plain

f:id:min117:20201107135031p:plain

 

コピペ用

#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()

 

qiita.com

 

qiita.com