2026/04/23
この間のノートブックをダブルクリックする。
セルの下にアウトプットが表示されているが、それは過去のものである。これが残るのはいいところでもあり悪いところでもある。
google driveのデータにアクセスできるようにするやつ。
| 銘柄コード | 会社名 | 売上高 | 売上原価 | 販管費 | 当期純利益 | 総資産 | 負債 | 有利子負債 | 純資産 | 現金及び預金 | 売上債権 | 棚卸資産 | 仕入債務 | 法人税等 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 2664 | カワチ薬品 | 268205 | 211068 | 52563 | 3869 | 183303 | 91422 | 32019 | 91880 | 25924 | 3073 | 29846 | 38390 | 1918 |
| 1 | 2730 | エディオン | 686284 | 488119 | 182786 | 8944 | 369547 | 200541 | 65930 | 169005 | 8227 | 34530 | 111703 | 47130 | 4579 |
| 2 | 3048 | ビックカメラ | 844029 | 607947 | 209025 | 17122 | 365605 | 209839 | 95576 | 155765 | 21967 | 32968 | 106731 | 47222 | 8382 |
| 3 | 3088 | マツモトキヨシホールディングス | 558879 | 389673 | 135639 | 22755 | 315161 | 110290 | 0 | 204871 | 51618 | 20905 | 70362 | 65612 | 11662 |
| 4 | 3098 | ココカラファイン | 390963 | 286311 | 90939 | 9067 | 158179 | 70368 | 300 | 87810 | 18009 | 20329 | 46522 | 42907 | 5570 |
さっき確認した列の名前を[""]で挟む。
df.loc[条件文] とする。
ex. 「(データに含まれる企業のうち)売上高100,000百万円以上の企業」という条件なら
データソースが複数に渡る場合など、元のデータが複数あることがある。例えば、年度ごとにデータがあるときは、2002.csv, 2003.csv, 2004.csvみたいに複数のファイルにデータがまたがっていたりする。株価のデータはyahooファイナンスから持ってきたが、財務データは手打ちしてそれぞれstock.csvとfinancial.csvという場合もある。
こういう場合は、それらのデータを結合してから分析に進む事が多い。
ここでは、例として業種データを持ってきたとしよう。これをdf_indとしてオブジェクトに保存する。
さっきと同じdfという名前にしてしまうと上書きされてしまい、先程の財務データが消えてしまうので注意。
| 銘柄コード | 会社名 | 業界 | |
|---|---|---|---|
| 0 | 9831 | ヤマダ電機 | 家電 |
| 1 | 3048 | ビックカメラ | 家電 |
| 2 | 3141 | ウエルシアホールディングス | ドラッグストア |
| 3 | 2730 | エディオン | 家電 |
| 4 | 8282 | ケーズホールディングス | 家電 |
今から財務データ (df) と業界データ (df_ind) を結合したい。
結合するときは2つのデータフレームに共通の列が必要になる。今回だと「銘柄コード」と「会社名」が使える。
| 銘柄コード | 会社名 | 売上高 | 売上原価 | 販管費 | 当期純利益 | 総資産 | 負債 | 有利子負債 | 純資産 | 現金及び預金 | 売上債権 | 棚卸資産 | 仕入債務 | 法人税等 | 業界 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 2664 | カワチ薬品 | 268205 | 211068 | 52563 | 3869 | 183303 | 91422 | 32019 | 91880 | 25924 | 3073 | 29846 | 38390 | 1918 | ドラッグストア |
| 1 | 2730 | エディオン | 686284 | 488119 | 182786 | 8944 | 369547 | 200541 | 65930 | 169005 | 8227 | 34530 | 111703 | 47130 | 4579 | 家電 |
| 2 | 3048 | ビックカメラ | 844029 | 607947 | 209025 | 17122 | 365605 | 209839 | 95576 | 155765 | 21967 | 32968 | 106731 | 47222 | 8382 | 家電 |
| 3 | 3088 | マツモトキヨシホールディングス | 558879 | 389673 | 135639 | 22755 | 315161 | 110290 | 0 | 204871 | 51618 | 20905 | 70362 | 65612 | 11662 | ドラッグストア |
| 4 | 3098 | ココカラファイン | 390963 | 286311 | 90939 | 9067 | 158179 | 70368 | 300 | 87810 | 18009 | 20329 | 46522 | 42907 | 5570 | ドラッグストア |
生のデータには、売上高や費用といった数字は入っているが、分析で使いたい指標(例:収益性の指標)は自分で計算して作る必要がある。
df["作成する列名"] = 計算式 という形で追加していく。
ここではROA(総資産利益率)を作成する。ROAは企業が持っている資産をどれだけ効率よく利益に変えているかを示す指標で、業種をまたいで企業の収益性を比較するときによく使われる。
\[\text{ROA} = \frac{\text{営業利益}}{\text{総資産}}\]
元のデータには営業利益の列がないので、まず売上高・売上原価・販管費から計算する。
ROAの全体平均を出すだけでは、業界によって収益構造が異なることが見えない。例えば、ドラッグストアと家電量販店では事業モデルが違うので、同じROAでも中身が異なる可能性がある。業界ごとに比較することで、そうした違いを把握できる。
まず全体の平均を確認する。平均値を計算する関数はmean()
これだとデータ全体の平均値は計算できるが、グループごと(ex. 業界別)の平均値は計算できない。
方法1: データを絞り込む方法でドラッグストアで絞ったデータと家電で絞ったデータの2つ作成して、それぞれで平均値を計算する。
方法2: groupby()を使う。
ROAは「売上高利益率 × 総資産回転率」に分解できる(デュポン分析)。
\[\text{ROA} = \underbrace{\frac{\text{営業利益}}{\text{売上高}}}_{\text{売上高利益率}} \times \underbrace{\frac{\text{売上高}}{\text{総資産}}}_{\text{総資産回転率}}\]
同じROAでも、高い利益率で少ない取引をこなす(例:高級品)タイプと、薄利でも大量に売る(例:ディスカウントストア)タイプでは戦略が全く異なる。分解することで、業界ごとにどちらのパターンで収益を上げているかが見えてくる。
ゼミ