PR

Pythonで旅行費用を自動計算する方法|初心者向け予算管理ツールの作り方

本ページにはプロモーションが含まれます。

python-travel-expense-calculator プログラミング
スポンサーリンク

旅行の計画を立てるときに、意外と手間がかかるのが費用の計算です。

交通費や宿泊費、食費、観光施設の入場料など、旅行にはさまざまな費用が発生します。複数人で旅行する場合は、全体の費用だけでなく、1人あたりの負担額も計算しなければなりません。

Excelや電卓を使って計算する方法もありますが、Pythonを使えば旅行費用の集計や予算管理を自動化できます。

例えば、旅行にかかる費用を入力するだけで、次のような情報を自動で計算できます。

  • 旅行全体にかかる費用
  • 交通費・宿泊費・食費などの項目別集計
  • 1人あたりの旅行費用
  • 予算と実際の費用の差額
  • 費用の内訳を表やグラフで表示

さらに、計算した結果をCSVファイルに保存すれば、Excelなどの表計算ソフトでも管理できます。

この記事では、Python初心者でも実践できるように、旅行費用を自動計算するプログラムの作り方を基礎から詳しく解説します。

実際に動作するサンプルコードを使いながら、基本的な費用計算からCSV出力、グラフによる可視化まで順番に進めていきましょう。

Pythonで旅行費用を自動計算しよう

Pythonは、データの集計や計算、ファイル操作などを得意とするプログラミング言語です。

旅行費用の管理にも活用でき、あらかじめ旅行に必要な費用を登録しておけば、合計金額や1人あたりの負担額を自動で計算できます。

例えば、3人で2泊3日の旅行に出かける場合、次のような費用が発生するとします。

費用項目金額
交通費18,000円
宿泊費36,000円
食費15,000円
観光・施設利用料9,000円
その他3,000円
合計81,000円

この場合、旅行全体の費用は81,000円です。

3人で均等に負担すると、1人あたりの費用は27,000円になります。

このような計算をPythonで自動化すれば、旅行の人数や費用が変わっても、プログラム内のデータを変更するだけで簡単に再計算できます。

Pythonで旅行費用を管理するメリット

Pythonを使って旅行費用を管理するメリットは、主に次の4つです。

1. 費用を自動で集計できる

交通費や宿泊費などを登録するだけで、旅行全体の費用を自動計算できます。

2. 1人あたりの負担額が分かる

旅行の参加人数を変更すれば、1人あたりの費用も自動的に再計算できます。

3. 予算オーバーを確認できる

あらかじめ予算を設定しておけば、実際の費用との差額を確認できます。

4. データを保存して再利用できる

CSVファイルに保存することで、Excelでの編集や過去の旅行との比較にも活用できます。

今回作成する旅行費用管理ツールの機能

今回は、Pythonを使って簡単な旅行費用管理ツールを作成します。

完成するプログラムには、次の機能を実装します。

機能内容
費用登録交通費・宿泊費・食費などを登録
合計計算旅行全体の費用を自動集計
人数計算1人あたりの費用を算出
予算管理予算と実際の費用を比較
項目別集計費用カテゴリーごとに集計
CSV出力計算結果をファイルに保存
グラフ表示費用の内訳を可視化

まずは基本的な計算機能を作り、その後にCSV出力やグラフ表示を追加していきます。

Pythonの開発環境を準備する

最初に、Pythonを実行できる環境を準備しましょう。

Pythonをインストールする

Pythonがインストールされていない場合は、公式サイトからダウンロードできます。

Python公式サイト

インストール後、コマンドプロンプトやターミナルを開き、次のコマンドを実行してください。

python --version

Pythonのバージョンが表示されれば、インストールは完了です。

環境によっては、次のコマンドを使用します。

python3 --version

今回使用するライブラリ

今回の基本プログラムでは、Pythonに標準で用意されている機能を中心に使用します。

ライブラリ用途
collections費用項目ごとの集計
csvCSVファイルの作成
pathlibファイルの保存先管理

グラフを作成する応用編では、Matplotlibを追加します。

インストールする場合は、次のコマンドを実行してください。

pip install matplotlib

環境によっては、次のように実行します。

python -m pip install matplotlib

基本編は追加ライブラリなしで動作するため、Pythonをインストールしたばかりの初心者でも取り組めます。

旅行費用計算の基本的な仕組み

プログラムを作成する前に、旅行費用をどのように計算するのか確認しておきましょう。

今回の計算では、次の3つの情報を使用します。

  • 旅行にかかる費用
  • 旅行の参加人数
  • 1人あたりの予算

計算方法は非常にシンプルです。

旅行全体の費用を計算する

交通費や宿泊費など、すべての費用を合計します。

計算式は次のとおりです。

total_cost = sum(expenses)

sum()は、リストなどに含まれる数値を合計するPythonの標準関数です。

1人あたりの費用を計算する

旅行全体の費用を参加人数で割ります。

per_person = total_cost / people

例えば、旅行全体の費用が81,000円で参加人数が3人の場合、1人あたり27,000円になります。

予算との差額を計算する

予算と実際の費用を比較します。

difference = budget - per_person

差額がプラスなら予算内、マイナスなら予算オーバーです。

なお、今回は全員が共通費用を均等に負担する旅行を想定しています。個人ごとに異なる支出や負担割合がある場合は、後から機能を追加できます。

Pythonで旅行費用を自動計算するコード

それでは、実際にプログラムを作成してみましょう。

今回は、交通費・宿泊費・食費・観光費・その他の費用を登録し、自動で集計するプログラムを作ります。

旅行費用データを準備する

まずは、旅行にかかる費用をPythonのリストで管理します。

expenses = [
    {"category": "交通費", "item": "新幹線", "amount": 18000},
    {"category": "宿泊費", "item": "ホテル", "amount": 36000},
    {"category": "食費", "item": "食事代", "amount": 15000},
    {"category": "観光費", "item": "施設入場料", "amount": 9000},
    {"category": "その他", "item": "お土産など", "amount": 3000}
]

# 旅行の参加人数
people = 3

# 1人あたりの予算
budget_per_person = 30000

ここでは、辞書を使って費用を管理しています。

それぞれの項目には、次の3つの情報を登録しています。

  • category:費用のカテゴリー
  • item:具体的な費用の内容
  • amount:金額

例えば、次の部分です。

{"category": "交通費", "item": "新幹線", "amount": 18000}

これは、新幹線の交通費が18,000円であることを表しています。

旅行先や人数に合わせて、金額や項目を自由に変更できます。

旅行費用の合計を計算する

次に、登録した費用をすべて合計します。

total_cost = sum(
    expense["amount"] for expense in expenses
)

print(f"旅行全体の費用:{total_cost:,}円")

expense["amount"]で、それぞれの費用データから金額だけを取り出しています。

sum()によって、取り出した金額をすべて合計できます。

ここで使用している:,は、数値を3桁ごとにカンマ区切りで表示する書式指定です。

例えば、81000という数値を81,000のように表示できます。

1人あたりの費用を計算する

次に、旅行全体の費用を参加人数で割ります。

per_person = total_cost / people

print(f"1人あたりの費用:{per_person:,.0f}円")

今回の例では、81,000円を3人で割るため、1人あたり27,000円になります。

参加人数を4人に変更すれば、1人あたりの費用も自動的に変更されます。

予算との差額を計算する

続いて、1人あたりの予算と実際の費用を比較します。

budget_total = budget_per_person * people

remaining = budget_total - total_cost

if remaining > 0:
    print(f"予算内です。残り:{remaining:,}円")
elif remaining == 0:
    print("予算ちょうどです。")
else:
    print(f"予算オーバー:{-remaining:,}円")

今回は1人あたり30,000円の予算なので、3人分の予算は90,000円です。

実際の旅行費用は81,000円のため、9,000円の余裕があります。

このように、Pythonを使えば予算内に収まっているかどうかも簡単に確認できます。

旅行費用計算プログラムを完成させる

ここまでの処理を1つのプログラムにまとめてみましょう。

以下のコードをコピーして、travel_expense.pyというファイル名で保存してください。

# 旅行費用自動計算プログラム

# 旅行費用データ
expenses = [
    {"category": "交通費", "item": "新幹線", "amount": 18000},
    {"category": "宿泊費", "item": "ホテル", "amount": 36000},
    {"category": "食費", "item": "食事代", "amount": 15000},
    {"category": "観光費", "item": "施設入場料", "amount": 9000},
    {"category": "その他", "item": "お土産など", "amount": 3000}
]

# 旅行の参加人数
people = 3

# 1人あたりの予算
budget_per_person = 30000

# 人数チェック
if people <= 0:
    raise ValueError("参加人数は1人以上にしてください。")

# 費用チェック
for expense in expenses:
    if expense["amount"] < 0:
        raise ValueError("費用にマイナスの金額は設定できません。")

# 旅行全体の費用
total_cost = sum(
    expense["amount"] for expense in expenses
)

# 1人あたりの費用
per_person = total_cost / people

# 旅行全体の予算
budget_total = budget_per_person * people

# 予算との差額
remaining = budget_total - total_cost

# 結果を表示
print("===== 旅行費用の計算結果 =====")

print(f"参加人数:{people}人")

print("\n【費用の内訳】")

for expense in expenses:
    print(
        f'{expense["category"]} '
        f'({expense["item"]}):'
        f'{expense["amount"]:,}円'
    )

print("\n【集計結果】")

print(f"旅行全体の費用:{total_cost:,}円")
print(f"1人あたりの費用:{per_person:,.0f}円")

print(f"旅行全体の予算:{budget_total:,}円")

if remaining > 0:
    print(f"予算の残り:{remaining:,}円")
elif remaining == 0:
    print("予算ちょうどです。")
else:
    print(f"予算オーバー:{-remaining:,}円")

プログラムを実行する

ファイルを保存したら、コマンドプロンプトまたはターミナルから実行します。

python travel_expense.py

実行結果

正常に実行できると、次のように表示されます。

===== 旅行費用の計算結果 =====
参加人数:3人

【費用の内訳】
交通費 (新幹線):18,000円
宿泊費 (ホテル):36,000円
食費 (食事代):15,000円
観光費 (施設入場料):9,000円
その他 (お土産など):3,000円

【集計結果】
旅行全体の費用:81,000円
1人あたりの費用:27,000円
旅行全体の予算:90,000円
予算の残り:9,000円

このように、旅行費用を自動的に集計し、予算の残りまで確認できるようになりました。

金額や人数を変更するだけで、別の旅行にも対応できます。

費用項目ごとに集計する

旅行費用の合計だけでなく、カテゴリー別の支出も確認できると便利です。

例えば、旅行費用のうち宿泊費がどれくらいを占めているのか、食費にいくら使っているのかが分かれば、次回の旅行予算を考える際にも役立ちます。

Pythonでは、collectionsに含まれるdefaultdictを使うと、カテゴリー別の集計を簡単に実装できます。

from collections import defaultdict

# カテゴリー別の集計用辞書
category_totals = defaultdict(int)

# 費用をカテゴリー別に集計
for expense in expenses:
    category = expense["category"]
    amount = expense["amount"]

    category_totals[category] += amount

# 集計結果を表示
print("===== カテゴリー別の費用 =====")

for category, amount in category_totals.items():
    print(f"{category}:{amount:,}円")

実行結果

===== カテゴリー別の費用 =====
交通費:18,000円
宿泊費:36,000円
食費:15,000円
観光費:9,000円
その他:3,000円

defaultdict(int)は、まだ登録されていないカテゴリーに対して、自動的に初期値の0を設定してくれます。

そのため、カテゴリーごとに初期値を設定する必要がありません。

この仕組みを使えば、費用項目が増えた場合でも簡単に対応できます。

CSVファイルに旅行費用を保存する

計算した旅行費用をプログラム上で確認するだけではなく、ファイルとして保存できるとさらに便利です。

Pythonの標準ライブラリであるcsvを使えば、旅行費用をCSV形式で出力できます。

CSVファイルはExcelなどの表計算ソフトでも開けるため、旅行費用の管理に適しています。

CSV出力のコード

以下のコードを追加してください。

import csv
from pathlib import Path

# CSVファイルの保存先
file_path = Path("travel_expenses.csv")

# CSVファイルに保存
with file_path.open(
    "w",
    newline="",
    encoding="utf-8-sig"
) as file:

    writer = csv.writer(file)

    # ヘッダー
    writer.writerow(["カテゴリー", "内容", "金額"])

    # 費用データ
    for expense in expenses:
        writer.writerow([
            expense["category"],
            expense["item"],
            expense["amount"]
        ])

    # 合計金額
    writer.writerow(["合計", "", total_cost])

print(f"CSVファイルを保存しました:{file_path}")

コードのポイント

csv.writer()

CSVファイルにデータを書き込むための機能です。

writer.writerow()

CSVファイルに1行ずつデータを書き込みます。

encoding=”utf-8-sig”

Excelで日本語の文字化けが発生しにくいように、UTF-8 BOM付きで保存しています。

newline=””

CSVファイルを書き込む際の不要な空行を防ぐために指定しています。

保存されるCSVファイルのイメージ

カテゴリー,内容,金額
交通費,新幹線,18000
宿泊費,ホテル,36000
食費,食事代,15000
観光費,施設入場料,9000
その他,お土産など,3000
合計,,81000

プログラムを実行すると、実行したフォルダにtravel_expenses.csvが作成されます。

Excelで開けば、旅行費用の一覧表として利用できます。

Matplotlibで旅行費用をグラフ化する

ここからは応用編です。

旅行費用を数字だけで管理するよりも、グラフで表示した方が費用の割合を直感的に理解できます。

PythonのMatplotlibを使えば、カテゴリー別の費用を棒グラフや円グラフにできます。

Matplotlibをインストールする

まだインストールしていない場合は、次のコマンドを実行してください。

pip install matplotlib

棒グラフを作成する

まずは、カテゴリー別の費用を棒グラフにしてみましょう。

import matplotlib.pyplot as plt

# カテゴリーと金額を取得
categories = list(category_totals.keys())
amounts = list(category_totals.values())

# グラフを作成
plt.figure(figsize=(8, 5))

plt.bar(categories, amounts)

plt.title("Travel Expenses")
plt.xlabel("Category")
plt.ylabel("Amount (JPY)")

plt.tight_layout()

# 画像として保存
plt.savefig("travel_expenses_bar.png")

plt.show()

このプログラムでは、plt.bar()を使って棒グラフを作成しています。

横軸には費用カテゴリー、縦軸には金額が表示されます。

グラフを実行すると、カテゴリーごとの支出額を比較できるようになります。

円グラフを作成する

続いて、費用全体に対する各カテゴリーの割合を確認してみましょう。

plt.figure(figsize=(7, 7))

plt.pie(
    amounts,
    labels=categories,
    autopct="%1.1f%%",
    startangle=90
)

plt.title("Travel Expense Breakdown")

plt.tight_layout()

plt.savefig("travel_expenses_pie.png")

plt.show()

plt.pie()は円グラフを作成する関数です。

autopct="%1.1f%%"を指定することで、それぞれの費用が全体の何パーセントを占めるのか表示できます。

例えば、宿泊費が全体の約44.4%を占めていることが分かります。

なお、日本語カテゴリーをグラフに表示する場合は、日本語フォントの設定が必要です。WindowsではMeiryo、macOSではヒラギノ、LinuxではNoto Sans CJK JPなど、利用環境に合ったフォントを設定してください。

旅行費用計算ツールを応用する方法

ここまでのプログラムを使えば、基本的な旅行費用の管理ができます。

さらに機能を追加すれば、実際の旅行計画で使いやすいツールに発展させることもできます。

入力内容を変更して別の旅行に対応する

今回のプログラムでは、旅行費用をコード内に直接記述しています。

そのため、旅行先や参加人数が変わった場合は、該当するデータを書き換える必要があります。

例えば、次のように人数を変更できます。

people = 4

また、旅行費用の金額も変更できます。

{"category": "交通費", "item": "飛行機", "amount": 45000}

このようにデータを変更すれば、別の旅行の費用も計算できます。

今後は、input()を使ってキーボードから金額を入力できるようにすると、さらに便利になります。

複数の旅行を比較する

旅行費用を複数回分保存しておけば、旅行ごとの予算を比較できます。

例えば、次のような比較が考えられます。

旅行先参加人数総費用
京都3人81,000円
北海道2人120,000円
沖縄4人160,000円

このデータをPythonで集計すれば、旅行先ごとの費用や1人あたりの負担額を比較できます。

旅行の予算を立てる際にも役立つ機能です。

GUIアプリに発展させる

さらに使いやすくしたい場合は、Tkinterを使って画面付きのアプリケーションにする方法もあります。

GUIとは、ボタンや入力欄などを使って操作できる画面のことです。

例えば、次のような機能を追加できます。

  • 旅行人数を入力する欄
  • 交通費や宿泊費を入力する欄
  • 計算ボタン
  • 合計金額の表示
  • CSV保存ボタン
  • グラフ表示ボタン

GUIアプリにすれば、Pythonのコードを直接編集しなくても旅行費用を管理できるようになります。

Pythonの基本的な操作に慣れてきたら、ぜひ挑戦してみてください。

Pythonで旅行費用を自動計算するときの注意点

便利な旅行費用管理ツールですが、実際に利用する場合はいくつか注意点があります。

参加人数と費用の負担方法を確認する

今回のプログラムでは、旅行費用を参加人数で均等に割る方法を採用しています。

しかし、実際の旅行では、宿泊費を部屋ごとに負担したり、交通費を個人ごとに支払ったりするケースもあります。

そのため、均等割りが適さない場合は、費用ごとに負担者や負担割合を登録する仕組みを追加するとよいでしょう。

予算には余裕を持たせる

旅行では、予定していなかった交通費や飲食費などが発生することがあります。

そのため、計算した金額だけで予算を決めるのではなく、予備費も考慮することが大切です。

例えば、旅行費用の10%を予備費として確保する方法もあります。

入力データの間違いに注意する

Pythonは登録された数値をそのまま計算するため、入力金額が間違っていると計算結果も正しくなりません。

特に、交通費や宿泊費などの入力漏れには注意しましょう。

実際に使用する場合は、費用を入力した後に一覧表示して確認できる機能を追加すると安心です。

まとめ

今回は、Pythonを使って旅行費用を自動計算する方法を紹介しました。

今回作成したプログラムでは、交通費・宿泊費・食費などを登録することで、旅行全体の費用や1人あたりの負担額を自動で計算できます。

また、予算との差額を確認したり、カテゴリー別に集計したりすることも可能です。

さらに、CSVファイルへの出力やMatplotlibによるグラフ作成を追加すれば、旅行費用をより分かりやすく管理できます。

今回紹介した内容をまとめると、次のとおりです。

  • Pythonで旅行費用を自動計算できる
  • 交通費や宿泊費などをカテゴリー別に集計できる
  • 参加人数から1人あたりの費用を算出できる
  • 予算と実際の費用を比較できる
  • CSVファイルに保存してExcelでも管理できる
  • Matplotlibを使って費用をグラフ化できる

Python初心者でも、基本的なリストや辞書、計算処理を組み合わせることで、実用的な旅行費用管理ツールを作成できます。

まずはサンプルコードを実行し、自分の旅行に合わせて金額や人数を変更してみてください。

慣れてきたら、入力画面やGUI機能を追加して、自分だけの旅行費用管理アプリに発展させるのもおすすめです。

Pythonを活用して、旅行の計画や予算管理をもっと便利にしていきましょう!

スポンサーリンク
タイトルとURLをコピーしました