Python on Google Colab でライフプランを作成してみる
このスクラップについて
このスクラップでは Google Colaboratory でライフプラン(寿命までの 1 年ごとの収支状況)を作成して表やグラフ形式で出力するまでの過程を記録する。
Google Colab もほぼ使ったことが無いので使い方を学んでいきたい。
Python 以外も使える
Google Colab は Python 以外で使えるらしい。
ただ Python を使っておくのがネットでの情報量的に無難そうだ。
ノートブックを作成して共有
「ノートブックを新規作成」ボタンを押すとノートブックが作成される。
ノートブックページ右上の「共有」ボタンを押すとリンクを知っている全員がアクセスできるようになる。
タイトル編集
「Python on Google Colab でライフプランを作成してみるノートブック」としてみた。
テキスト追加
ページ左上の「テキスト」ボタンを押すとテキストを追加できる。
テキストは Markdown で書くことができる。
編集するにはペンアイコンをクリックする。
その他にもリンクをコピーしたりコメントを追加したりできる。
あれ、スクラップ必要なくないか?笑
スクラップの方が画像とかリンクとかがキレイに表示できるからまあ良いか。
ノートブックに画像を挿入する方法
テキストで ![]()
を使えば良いようだが面倒だな。
やはり Zenn を併用した方が良さそうだ。
表の出力方法
Colab で表を出力するには pandas を使うらしい。
参考になりそうなリンクがあった。
データフレーム作成
上記のリンクは作成に関してはあまり参考にはならなかった。
ただ、色々と便利そうなので別の機会に学んでみたい。
データフレームとその作り方については下記の記事が分かりやすそうだ。
はじめてのデータフレーム
Command + Enter で表示された!
すごい!次は複数列にしてみよう。
data を 2 次元にしたら複数列になった。
素晴らしい!1 次元目が行になって、2 次元目が列になるようだ。次は列名をつけてみよう。
列名がついた。
順調だ、次は列名を日本語にしてみよう。
日本語の列名も問題無かった。
最後にインデックスを試してみよう、今の 0 スタートでも問題ないがせっかくなので。
2023 スタートになった。
最終的なコードは下記の通り。
import pandas as pd
pd.DataFrame(data=dict(列1=[10, 20, 30], 列2=[40, 50, 60]), index=range(2023, 2026))
グラフ作成
続いて折れ線グラフで出力する方法について調べてみよう。
表の右側に表示されているグラフアイコンを押してみる。
分布のグラフが表示された。
推移を出すには df.plot()
みたいにすれば良いのかな?
今更だけど Ctrl / Command + M B でコードが追加できるので便利だ。
ひとまずやりたいことはできた。
ただラベル名が日本語だと表示されないのは微妙だな。
下記の 2 行の実行で日本語も表示された。
!pip install japanize-matplotlib
import japanize_matplotlib
列指定
下記のように表示する列を指定できる。
df.plot(y=["列1"])
ちなみに x="列1"
のようにして横軸も指定できるようだ。
10/22 (日) はここまで
50 分ほど経過したようだ。
Colab の操作ばかりで全然ライフプランを作成していない。
もうちょっとグラフを調整したい、特に横軸の小数点をなんとかしたいな。
実際にお金の計算をするのはいつになることやら。
10/23 (月) はここから
45 分くらいスキマ時間があるので進めていこう。
横軸の調整
下記が参考になった、ありがとう。
MaxNLocator を使ったらできた。
from matplotlib.ticker import MaxNLocator
axis = df.plot(y=["列1"])
axis.xaxis.set_major_locator(MaxNLocator(integer=True))
順調に進みすぎて怖い
ネットに Python の情報が豊富なのが一番の理由なのだけどここまでハマるポイントがあまりない。
どこかでどんでん返しが来そうだ。
Google Colab でのコード補完
Ctrl + Space でできる。
引数のヘルプも ()
を入力してしばらく待っていると表示されるようだ。
そろそろ本題に入れそうだ
まずは下記から手をつけていこう。
- 何歳まで生きるか
- 生きてるのか死んでいるか
- 年収
- 社会保険料
- 所得税
- 住民税
何歳まで生きるか?
国連の世界人口推計のデータポータル
僕は 1987 年生まれで 2020 年では 33 歳だった。
2080 年で 93 歳の時の日本男性の平均余命予想は 89.21 歳。
2075 年で 88 歳の時の日本男性の平均余命予想は 88.28 歳。
ということで 88 歳まで生きることにしよう。
あと人生 52 年もあると思うと色々とできそうで楽しみ。
コードにしてみる。
西暦年、年齢、生きているかの表が表示された。
寿命 = 88
現在の年齢 = 36
現在の西暦年 = 2023
def 年齢(西暦年):
return 現在の年齢 + (西暦年 - 現在の西暦年)
def 生きているか(西暦年):
return 年齢(西暦年) <= 寿命
西暦年列 = range(現在の西暦年, 現在の西暦年 - 現在の年齢 + 寿命 + 10)
年齢列 = [年齢(year) for year in 西暦年列]
生きているか列 = [生きているか(year) for year in 西暦年列]
df = pd.DataFrame(data=dict(年齢=年齢列, 生きているか=生きているか列), index=西暦年列)
df
10/23 (月) はここまで
お昼休みもあったが 60 分ほど経過したので累計時間は 110 分。
次は年収について考えてみよう。
10/24 (火) はここから
今日は 20 分くらいで年収について考えてみよう。
年収
月収は仮に 50 万円としてみた。
def 月収(西暦年):
return 500000
def 年収(西暦年):
if 年齢(西暦年) <= 75:
return 月収(500000) * 12
else:
return 0
西暦年列 = range(現在の西暦年, 現在の西暦年 - 現在の年齢 + 寿命)
年齢列 = [年齢(year) for year in 西暦年列]
年収列 = [年収(year) for year in 西暦年列]
df = pd.DataFrame(data=dict(年齢=年齢列, 年収=年収列), index=西暦年列)
df
社会保険料
健康保険料の一覧表は下記からダウンロードできる、都道府県ごとに若干変わるようだ。
- 健康保険料率(40 歳まで):9.51 %
- 健康保険料率(40〜64 歳まで):11.15 %
- 厚生年金保険料率:18.3 %
健康保険は 65 歳以上になると国民健康保険になるのかな?
厚生年金は 70 歳まで加入できるようだ。
10/24 (火) はここまで
20 分ほど経過したので累計時間は 130 分。
社会保険のしくみは複雑すぎる。。。
次は社会保険料について考えてみよう。
追加で 10〜20 分やっていく。
社会保険料については細かい計算が面倒なので将来 75 歳までこれまで通りと仮定して計算してみよう。
老齢厚生年金の減額
月給+老齢厚生年金が 48 万円を超えると減額されるようだ。
ショートカット
Command + Shift + P で VSCode みたいにパレットを表示できる。
また、Command + F9 でセルを全てのセルを実行できる。
社会保険料の計算完了
76 歳以降については国民健康保険に入ることになる。
このような細かい部分は一旦置いておいて後からやろう。
年収 600 万円だと 90 万円弱の社会保険料を支払うことになる。
健康保険料率39歳以下 = 9.51e-2
健康保険料率40歳から75歳 = 11.15e-2
厚生年金保険料率 = 18.3e-2
def 健康保険料(西暦年):
if 年齢(西暦年) < 40:
return int(年収(西暦年) * 健康保険料率39歳以下 / 2)
elif 年齢(西暦年) <= 75:
return int(年収(西暦年) * 健康保険料率40歳から75歳 / 2)
else:
return 0
def 厚生年金保険料(西暦年):
if 年齢(西暦年) <= 75:
return int(年収(西暦年) * 厚生年金保険料率 / 2)
else:
return 0
def 社会保険料(西暦年):
return 健康保険料(西暦年) + 厚生年金保険料(西暦年)
西暦年列 = range(現在の西暦年, 現在の西暦年 - 現在の年齢 + 寿命)
年齢列 = [年齢(year) for year in 西暦年列]
年収列 = [年収(year) for year in 西暦年列]
健康保険料列 = [健康保険料(year) for year in 西暦年列]
厚生年金保険料列 = [厚生年金保険料(year) for year in 西暦年列]
社会保険料列 = [社会保険料(year) for year in 西暦年列]
df = pd.DataFrame(data=dict(
年齢=年齢列,
年収=年収列,
社会保険料=社会保険料列,
), index=西暦年列)
df
10/25 (水) はここまで
20 分ほど経過したので累計時間は 150 分。
社会保険のしくみは複雑すぎる。。。
次は社会保険料について考えてみよう。
所得税
所得税を計算するには色々な控除を考える必要がある。
- 給与所得控除
- 小規模企業共済等掛金控除
- 生命保険料控除
- 地震保険料控除
- 配偶者控除
- 扶養控除
- 基礎控除
- 寄附金控除(ふるさと納税含む)
また、住宅借入金等特別控除などの期間限定の税額控除もある。
給与所得控除
年収 600 万円の場合は「収入金額×20%+440,000円」なので 1,640,000 円のはずだが 660 万円未満の場合は所得税法別表第五を参照して調べる必要がある。
調べたところ 164 万円だったのでどうやら計算式に当てはめても問題無さそうだ。
配偶者控除
配偶者が 70 歳になると 48 万円になる。
配偶者の年齢はとりあえず同い年にしておこう。
扶養控除
扶養対象は子供だけの場合は 16 歳から巣立つまでとなるので仮に 24 歳までの 9 年間扶養すると仮定しよう。
そうなると 16〜24 歳の子供の数 × 38 万円となる。
所得税を計算できた
年収 600 万円の場合は所得税は 10 万円くらいになるようだ。
子供が大きくなって扶養控除が増えると 4 万円くらいまで下がる。
自動手当は 1 人 1 万円くらいもらうので扶養控除が増えるよりもお得なようだ。
def 所得税の給与所得控除(西暦年):
return int(年収(西暦年) * 20e-2 + 440000)
def 小規模企業共済等掛金控除(西暦年):
return 400000
def 所得税の生命保険料控除(西暦年):
return 120000
def 地震保険料控除(西暦年):
return 15000
配偶者の現在の年齢 = 現在の年齢
def 配偶者の年齢(西暦年):
return 配偶者の現在の年齢 + 西暦年 - 現在の西暦年
def 所得税の配偶者控除(西暦年):
if 配偶者の年齢(西暦年) < 70:
return 380000
else:
return 480000
配偶者の現在の年齢 = 現在の年齢
子供たちの現在の年齢 = [0, 2, 4]
子供が独立する年齢 = 24
def 所得税の扶養控除(西暦年):
合計金額 = 0
経過年数 = 西暦年 - 現在の西暦年
for 子供の現在の年齢 in 子供たちの現在の年齢:
子供の年齢 = 子供の現在の年齢 + 経過年数
if 16 <= 子供の年齢 and 子供の年齢 <= 24:
合計金額 += 380000
return 合計金額
def 所得税の基礎控除(西暦年):
return 480000
def 寄附金控除(西暦年):
return 80000
def 所得税の所得控除(西暦年):
return sum([
所得税の給与所得控除(西暦年),
社会保険料(西暦年),
小規模企業共済等掛金控除(西暦年),
所得税の生命保険料控除(西暦年),
地震保険料控除(西暦年),
所得税の配偶者控除(西暦年),
所得税の扶養控除(西暦年),
所得税の基礎控除(西暦年),
寄附金控除(西暦年),
])
def 所得税の所得金額(西暦年):
return 年収(西暦年) - 所得税の所得控除(西暦年)
def 所得税(西暦年):
金額 = 所得税の所得金額(西暦年)
if 金額 < 1950000:
return int(金額 * 5e-2)
else:
return int(金額 * 10e-2 - 97500)
西暦年列 = range(現在の西暦年, 現在の西暦年 - 現在の年齢 + 寿命)
年齢列 = [年齢(year) for year in 西暦年列]
年収列 = [年収(year) for year in 西暦年列]
健康保険料列 = [健康保険料(year) for year in 西暦年列]
厚生年金保険料列 = [厚生年金保険料(year) for year in 西暦年列]
社会保険料列 = [社会保険料(year) for year in 西暦年列]
所得税の給与所得控除列 = [所得税の給与所得控除(year) for year in 西暦年列]
小規模企業共済等掛金控除列 = [小規模企業共済等掛金控除(year) for year in 西暦年列]
所得税の生命保険料控除列 = [所得税の生命保険料控除(year) for year in 西暦年列]
地震保険料控除列 = [地震保険料控除(year) for year in 西暦年列]
配偶者の年齢列 = [配偶者の年齢(year) for year in 西暦年列]
所得税の配偶者控除列 = [所得税の配偶者控除(year) for year in 西暦年列]
所得税の扶養控除列 = [所得税の扶養控除(year) for year in 西暦年列]
所得税の基礎控除列 = [所得税の基礎控除(year) for year in 西暦年列]
寄附金控除列 = [寄附金控除(year) for year in 西暦年列]
所得税の所得控除列 = [所得税の所得控除(year) for year in 西暦年列]
所得税の所得金額列 = [所得税の所得金額(year) for year in 西暦年列]
所得税列 = [所得税(year) for year in 西暦年列]
df = pd.DataFrame(data=dict(
年齢=年齢列,
年収=年収列,
社会保険料=社会保険料列,
所得税の給与所得控除=所得税の給与所得控除列,
小規模企業共済等掛金控除=小規模企業共済等掛金控除列,
所得税の生命保険料控除=所得税の生命保険料控除列,
地震保険料控除=地震保険料控除列,
配偶者の年齢=配偶者の年齢列,
所得税の配偶者控除=所得税の配偶者控除列,
所得税の扶養控除=所得税の扶養控除列,
所得税の基礎控除=所得税の基礎控除列,
寄附金控除=寄附金控除列,
所得税の所得控除=所得税の所得控除列,
所得税の所得金額=所得税の所得金額列,
所得税=所得税列,
), index=西暦年列)
df
10/25 (水) はここまで (2)
60 分ほど経過したので累計時間は 210 分。
次は住民税について考えてみよう。
10/26 (木) はここから
今日は 30 分くらいで住民税を考えてみよう。
住民税の給与所得控除
所得税と同じだった。
住民税の生命保険料控除
MAX 7 万円まで。
住民税の地震保険料控除
所得税の地震保険料控除の半分または 25,000 円の低い方。
ふるさと納税
面倒なので考えないようにする。
ただし、ふるさと納税の納税限度額は算出しておきたい。
住宅ローン控除
こちらも面倒なので収入扱いにしよう。
確定申告サイト
作った人すごいなーと思う。
住民税の計算完了
年収 600 万円の場合、だいたい 20 万円になるようだ。
ただし子供が大学生くらいになる約 10 年間は 10 万円くらいになる。
10 年 × 10 万円 = 100 万円なのでかなり大きい。
def 給与所得控除(西暦年):
return int(年収(西暦年) * 20e-2 + 440000)
def 住民税の生命保険料控除(西暦年):
return 70000
def 住民税の地震保険料控除(西暦年):
return min(int(所得税の地震保険料控除(西暦年) / 2), 25000)
def 住民税の配偶者控除(西暦年):
if 配偶者の年齢(西暦年) < 70:
return 330000
else:
return 480000
def 子供たちの年齢(西暦年):
経過年数 = 西暦年 - 現在の西暦年
return [子供の年齢 + 経過年数 for 子供の年齢 in 子供たちの現在の年齢]
def 住民税の扶養控除(西暦年):
合計金額 = 0
for 子供の年齢 in 子供たちの年齢(西暦年):
if 16 <= 子供の年齢 and 子供の年齢 <= 18:
合計金額 += 330000
elif 19 <= 子供の年齢 and 子供の年齢 <= 22:
合計金額 += 450000
elif 23 <= 子供の年齢 and 子供の年齢 <= 子供が独立する年齢:
合計金額 += 330000
return 合計金額
def 住民税の基礎控除(西暦年):
return 430000
def 住民税の所得控除(西暦年):
return sum([
給与所得控除(西暦年),
社会保険料(西暦年),
小規模企業共済等掛金控除(西暦年),
住民税の生命保険料控除(西暦年),
住民税の地震保険料控除(西暦年),
住民税の配偶者控除(西暦年),
住民税の扶養控除(西暦年),
住民税の基礎控除(西暦年),
寄附金控除(西暦年),
])
def 住民税の所得金額(西暦年):
return 年収(西暦年) - 住民税の所得控除(西暦年)
def 住民税の税額控除前所得割(西暦年):
return int(住民税の所得金額(西暦年) * 10e-2)
def 住民税の調整控除(西暦年):
合計金額 = 50000
if 配偶者の年齢(西暦年) < 70:
合計金額 += 50000
else:
合計金額 += 100000
for 子供の年齢 in 子供たちの年齢(西暦年):
if 16 <= 子供の年齢 and 子供の年齢 <= 18:
合計金額 += 50000
elif 19 <= 子供の年齢 and 子供の年齢 <= 22:
合計金額 += 180000
elif 23 <= 子供の年齢 and 子供の年齢 <= 子供が独立する年齢:
合計金額 += 50000
return int(合計金額 * 5e-2)
def 住民税(西暦年):
return 住民税の税額控除前所得割(西暦年) - 住民税の調整控除(西暦年)
西暦年列 = range(現在の西暦年, 現在の西暦年 - 現在の年齢 + 寿命)
年齢列 = [年齢(year) for year in 西暦年列]
年収列 = [年収(year) for year in 西暦年列]
健康保険料列 = [健康保険料(year) for year in 西暦年列]
厚生年金保険料列 = [厚生年金保険料(year) for year in 西暦年列]
社会保険料列 = [社会保険料(year) for year in 西暦年列]
給与所得控除列 = [給与所得控除(year) for year in 西暦年列]
小規模企業共済等掛金控除列 = [小規模企業共済等掛金控除(year) for year in 西暦年列]
所得税の生命保険料控除列 = [所得税の生命保険料控除(year) for year in 西暦年列]
所得税の地震保険料控除列 = [所得税の地震保険料控除(year) for year in 西暦年列]
配偶者の年齢列 = [配偶者の年齢(year) for year in 西暦年列]
所得税の配偶者控除列 = [所得税の配偶者控除(year) for year in 西暦年列]
所得税の扶養控除列 = [所得税の扶養控除(year) for year in 西暦年列]
所得税の基礎控除列 = [所得税の基礎控除(year) for year in 西暦年列]
寄附金控除列 = [寄附金控除(year) for year in 西暦年列]
所得税の所得控除列 = [所得税の所得控除(year) for year in 西暦年列]
所得税の所得金額列 = [所得税の所得金額(year) for year in 西暦年列]
所得税列 = [所得税(year) for year in 西暦年列]
住民税の生命保険料控除列 = [住民税の生命保険料控除(year) for year in 西暦年列]
住民税の地震保険料控除列 = [住民税の地震保険料控除(year) for year in 西暦年列]
住民税の配偶者控除列 = [住民税の配偶者控除(year) for year in 西暦年列]
住民税の扶養控除列 = [住民税の扶養控除(year) for year in 西暦年列]
住民税の基礎控除列 = [住民税の基礎控除(year) for year in 西暦年列]
住民税の所得控除列 = [住民税の所得控除(year) for year in 西暦年列]
住民税の所得金額列 = [住民税の所得金額(year) for year in 西暦年列]
住民税の税額控除前所得割列 = [住民税の税額控除前所得割(year) for year in 西暦年列]
住民税の調整控除列 = [住民税の調整控除(year) for year in 西暦年列]
住民税列 = [住民税(year) for year in 西暦年列]
df = pd.DataFrame(data=dict(
年齢=年齢列,
# 年収=年収列,
# 社会保険料=社会保険料列,
# 給与所得控除=給与所得控除列,
# 小規模企業共済等掛金控除=小規模企業共済等掛金控除列,
# 所得税の生命保険料控除=所得税の生命保険料控除列,
# 所得税の地震保険料控除=所得税の地震保険料控除列,
# 配偶者の年齢=配偶者の年齢列,
# 所得税の配偶者控除=所得税の配偶者控除列,
# 所得税の扶養控除=所得税の扶養控除列,
# 所得税の基礎控除=所得税の基礎控除列,
# 寄附金控除=寄附金控除列,
# 所得税の所得控除=所得税の所得控除列,
# 所得税の所得金額=所得税の所得金額列,
# 所得税=所得税列,
住民税の生命保険料控除=住民税の生命保険料控除列,
住民税の地震保険料控除=住民税の地震保険料控除列,
住民税の配偶者控除=住民税の配偶者控除列,
住民税の扶養控除=住民税の扶養控除列,
住民税の基礎控除=住民税の基礎控除列,
住民税の所得控除=住民税の所得控除列,
住民税の所得金額=住民税の所得金額列,
住民税の税額控除前所得割=住民税の税額控除前所得割列,
住民税の調整控除=住民税の調整控除列,
住民税=住民税列,
), index=西暦年列)
df
10/25 (水) はここまで
35 分ほど経過したので累計時間は 245 分。
次は可処分所得と住宅ローン控除について考えてみよう。
10/25 (水) はここから (2)
30 分ほど再開しよう。
住宅ローン控除
入居時期について変わるので複雑だが 2020 年入居の場合は 13 年。
最初の 10 年は年末ローン残高の 1% だが最後の 3 年は下記の少ない方。
- 年末ローン残高の 1 %
- 物件購入価格の 2 % ÷ 3
3500 万円借入の場合、住宅ローン控除は13 年間合計で 300 万円くらいになるのでインパクトが大きい。
入居年 = 2020
住宅ローン借入金 = 3500e4
建物購入価格 = 2500e4
毎年返済額 = 100e4
def 入居年数(西暦年):
return 西暦年 - 入居年
def 住宅ローン残高(西暦年):
return max(0, int(住宅ローン借入金 - 入居年数(西暦年) * 毎年返済額))
def 住宅ローン控除(西暦年):
年数 = 入居年数(西暦年)
候補金額 = 0
if 0 <= 年数 and 年数 < 10:
候補金額 = int(住宅ローン残高(西暦年) * 1e-2)
elif 10 <= 年数 and 年数 < 13:
候補金額 = int(min(住宅ローン残高(西暦年) * 1e-2, 建物購入価格 * 2e-2 / 3))
return min(候補金額, 所得税(西暦年) + 住民税(西暦年))
入居年数列 = [入居年数(西暦年) for 西暦年 in 西暦年列]
住宅ローン残高列 = [住宅ローン残高(西暦年) for 西暦年 in 西暦年列]
住宅ローン控除列 = [住宅ローン控除(西暦年) for 西暦年 in 西暦年列]
df = pd.DataFrame(data=dict(
年齢=年齢列,
# 年収=年収列,
# 社会保険料=社会保険料列,
# 給与所得控除=給与所得控除列,
# 小規模企業共済等掛金控除=小規模企業共済等掛金控除列,
# 所得税の生命保険料控除=所得税の生命保険料控除列,
# 所得税の地震保険料控除=所得税の地震保険料控除列,
# 配偶者の年齢=配偶者の年齢列,
# 所得税の配偶者控除=所得税の配偶者控除列,
# 所得税の扶養控除=所得税の扶養控除列,
# 所得税の基礎控除=所得税の基礎控除列,
# 寄附金控除=寄附金控除列,
# 所得税の所得控除=所得税の所得控除列,
# 所得税の所得金額=所得税の所得金額列,
所得税=所得税列,
# 住民税の生命保険料控除=住民税の生命保険料控除列,
# 住民税の地震保険料控除=住民税の地震保険料控除列,
# 住民税の配偶者控除=住民税の配偶者控除列,
# 住民税の扶養控除=住民税の扶養控除列,
# 住民税の基礎控除=住民税の基礎控除列,
# 住民税の所得控除=住民税の所得控除列,
# 住民税の所得金額=住民税の所得金額列,
# 住民税の税額控除前所得割=住民税の税額控除前所得割列,
# 住民税の調整控除=住民税の調整控除列,
住民税=住民税列,
入居年数=入居年数列,
住宅ローン残高=住宅ローン残高列,
住宅ローン控除=住宅ローン控除列,
), index=西暦年列)
df
可処分所得
年収 - 社会保険料 - 所得税 - 住民税 + 住宅ローン控除で計算できる。
年収 600 万円の可処分所得は 480 万円くらい、20 % くらいはお国に献上する。
def 可処分所得(西暦年):
return sum([
年収(西暦年),
-社会保険料(西暦年),
-所得税(西暦年),
-住民税(西暦年),
住宅ローン控除(西暦年),
])
可処分所得列 = [可処分所得(西暦年) for 西暦年 in 西暦年列]
df = pd.DataFrame(data=dict(
年齢=年齢列,
年収=年収列,
社会保険料=社会保険料列,
# 給与所得控除=給与所得控除列,
# 小規模企業共済等掛金控除=小規模企業共済等掛金控除列,
# 所得税の生命保険料控除=所得税の生命保険料控除列,
# 所得税の地震保険料控除=所得税の地震保険料控除列,
# 配偶者の年齢=配偶者の年齢列,
# 所得税の配偶者控除=所得税の配偶者控除列,
# 所得税の扶養控除=所得税の扶養控除列,
# 所得税の基礎控除=所得税の基礎控除列,
# 寄附金控除=寄附金控除列,
# 所得税の所得控除=所得税の所得控除列,
# 所得税の所得金額=所得税の所得金額列,
所得税=所得税列,
# 住民税の生命保険料控除=住民税の生命保険料控除列,
# 住民税の地震保険料控除=住民税の地震保険料控除列,
# 住民税の配偶者控除=住民税の配偶者控除列,
# 住民税の扶養控除=住民税の扶養控除列,
# 住民税の基礎控除=住民税の基礎控除列,
# 住民税の所得控除=住民税の所得控除列,
# 住民税の所得金額=住民税の所得金額列,
# 住民税の税額控除前所得割=住民税の税額控除前所得割列,
# 住民税の調整控除=住民税の調整控除列,
住民税=住民税列,
# 入居年数=入居年数列,
# 住宅ローン残高=住宅ローン残高列,
住宅ローン控除=住宅ローン控除列,
可処分所得=可処分所得列,
), index=西暦年列)
df
児童手当
新潟県長岡市の児童手当。
- 3歳未満の子どもの場合…月15,000円
- 3歳以上~小学校修了前の子どもで、第1子又は第2子の場合…月10,000円
- 3歳以上~小学校修了前の子どもで、第3子以降の場合…月15,000円
- 小学校修了後~中学校修了前の子どもの場合…月10,000円
そろそろ第一子から第三子までの年齢列を作るべき時だ。
第 1〜2 子は 210 万円、第 3 子は 252 万円ももらえる、合計すると 672 万円!
def 児童手当支給月額(子供の年齢, 第n子):
if 子供の年齢 < 3:
return 15000
elif 子供の年齢 < 13:
if 第n子 < 3:
return 10000
else:
return 15000
elif 子供の年齢 < 16:
return 10000
else:
return 0
def 第n子の児童手当(西暦年, n):
return 児童手当支給月額(子供たちの年齢(西暦年)[n - 1], n) * 12
def 児童手当(西暦年):
合計金額 = 0
for i, 子供の年齢 in enumerate(子供たちの年齢(西暦年)):
合計金額 += 第n子の児童手当(西暦年, i + 1)
return 合計金額
def 可処分所得(西暦年):
return sum([
年収(西暦年),
-社会保険料(西暦年),
-所得税(西暦年),
-住民税(西暦年),
住宅ローン控除(西暦年),
児童手当(西暦年)
])
第1子の児童手当列 = [第n子の児童手当(西暦年, 1) for 西暦年 in 西暦年列]
第2子の児童手当列 = [第n子の児童手当(西暦年, 2) for 西暦年 in 西暦年列]
第3子の児童手当列 = [第n子の児童手当(西暦年, 3) for 西暦年 in 西暦年列]
児童手当列 = [児童手当(西暦年) for 西暦年 in 西暦年列]
可処分所得列 = [可処分所得(西暦年) for 西暦年 in 西暦年列]
df = pd.DataFrame(data=dict(
年齢=年齢列,
# 年収=年収列,
# 社会保険料=社会保険料列,
# 給与所得控除=給与所得控除列,
# 小規模企業共済等掛金控除=小規模企業共済等掛金控除列,
# 所得税の生命保険料控除=所得税の生命保険料控除列,
# 所得税の地震保険料控除=所得税の地震保険料控除列,
# 配偶者の年齢=配偶者の年齢列,
# 所得税の配偶者控除=所得税の配偶者控除列,
# 所得税の扶養控除=所得税の扶養控除列,
# 所得税の基礎控除=所得税の基礎控除列,
# 寄附金控除=寄附金控除列,
# 所得税の所得控除=所得税の所得控除列,
# 所得税の所得金額=所得税の所得金額列,
# 所得税=所得税列,
# 住民税の生命保険料控除=住民税の生命保険料控除列,
# 住民税の地震保険料控除=住民税の地震保険料控除列,
# 住民税の配偶者控除=住民税の配偶者控除列,
# 住民税の扶養控除=住民税の扶養控除列,
# 住民税の基礎控除=住民税の基礎控除列,
# 住民税の所得控除=住民税の所得控除列,
# 住民税の所得金額=住民税の所得金額列,
# 住民税の税額控除前所得割=住民税の税額控除前所得割列,
# 住民税の調整控除=住民税の調整控除列,
# 住民税=住民税列,
# 入居年数=入居年数列,
# 住宅ローン残高=住宅ローン残高列,
# 住宅ローン控除=住宅ローン控除列,
第1子の児童手当=第1子の児童手当列,
第2子の児童手当=第2子の児童手当列,
第3子の児童手当=第3子の児童手当列,
児童手当列=児童手当列,
可処分所得=可処分所得列,
), index=西暦年列)
df
10/25 (水) はここまで
60 分ほど経過したので累計時間は 305 分。
次は老齢年金について考えてみよう。
今更だけど GAS でやろう
表出力との相性の良さを考えると GAS の方が良い気がしてきた。
新しいスクラップを作成して一から出直してみよう。