前回記事から、Pythonをベースに、DockerfileとGoogle DriveおよびStreamlitを用いた体重管理及び体重トレンド解析を実装する自分だけのWebアプリを作成しています。
本アプリの体重アプリの特徴は以下です。
- すべて無料で構築可能
- HTML/CSSの知識不要
- ご自身でアプリのカスタマイズが可能
- 短時間で実装可能
- 統計学知識不要
以上のように、誰でも取り掛かりやすい内容となっています。それでは早速やっていきましょう。
▼ Contents
1. 登録用フォーマット
今回は、前回で作成した体重データを管理するclassオブジェクトを利用してデータ登録フォームの原型を作成します。
ここではinput関数を使用した入力フォーマットを作成しておきます。以下のコードを確認ください。
class Diet:
"""
前回記事をご参照ください
"""
def main():
print('Mode Select')
mode = 'Registration'
print(f'Weight {mode} \n')
if mode == 'Registration':
print('1. Enter Your Weight')
weight = input('Enter your Weight [kg]:')
fat = input('Enter your Fat [%]:')
print('2. Enter Your Meal')
breakfast = input('Breakfast Meal? (0, 1)')
lunch = input('Lunch Meal? (0, 1)')
dinner = input('Dinner Meal? (0, 1)')
print('3. Enter Your Training')
running = input('Running? (0, 1)')
muscle = input('Muscle Training? (0, 1)')
sports = input('Other Sports? (0, 1)')
""" Diet class object """
diet = Diet(weight, fat, breakfast, lunch, dinner, running, muscle, sports)
こちらは、”mode”が”Registration”の場合に、データ登録用のフォーマットに移行するようにしておきます。main()関数を実行すると、以下のような入力を実行することが可能です。
Mode Select
Weight Registration
1. Enter Your Weight & Fat
Enter your Weight [kg]: 75
Enter your Fat [%]: 15
2. Enter Your Meal
Breakfast Meal? (0, 1) 1
Lunch Meal? (0, 1) 1
Dinner Meal? (0, 1) 1
3. Enter Your Training
Running? (0, 1) 0
Muscle Training? (0, 1) 1
Other Sports? (0, 1) 0
続いて、入力するフォーマットを確認して、データを登録する処理を記載します。こちらは、登録内容が正しい場合に、”Register”変数をTrueにして、データ登録を行います。
try-except文で、初回登録時はローカル環境に”sample.csv”としてデータを保存します。次回以降は保存したデータに新しいデータを追加するようにしています。
最終的にはこのデータはGoogle Driveに保存しますが、この段階ではローカル環境に保存しておきます。
class Diet:
"""
前回記事をご参照ください
"""
def main():
"""
中略
"""
print('4. Registration From')
print('Registered with this data. OK?')
print(diet.trend_history[0])
register = input('Register? (1, 0)')
if register:
try:
df = pd.read_csv('sample.csv')
df = df.append(diet.trend_history[0], ignore_index=True)
except:
df = pd.DataFrame(diet.trend_history[0].values(), index=diet.trend_history[0].keys()).T
df.to_csv('sample.csv', index=False)
上記を実行すると、以下のように登録データを確認でき、登録するかどうかを選択できるようになりました。”Register”を”True”(ここでは1)にすることで、新しいデータを保存できるようになりました。
4. Registration From
Registered with this data. OK?
{'Date': '2022-1-22', 'Weight [kg]': '75', 'Fat [%]': '15', 'Breakfast': '1', 'Lunch': '1', 'Dinner': '1', 'Running': '0', 'Muscle': '1', 'Sports': '0'}
Register (1, 0) 1
登録されると以下のようなデータフォーマットが保存されているはずです。(10日間分のデータを入力した例です)

これでデータ登録フォーマットの原型が完成です。お疲れさまでした。
2. 本記事の全体コードまとめ
今回はデータ登録フォーマットの原型作成でしたが、今後にStreamlitを使用して、入力フォーマットをWebアプリ用に変更していきます。
次回は入力したデータをもとに簡単なデータ解析処理を実装していきます。
class Diet:
"""
前回記事をご参照ください
"""
def main():
print('Mode Select')
mode = 'Registration'
print(f'Weight {mode} \n')
if mode == 'Registration':
print('1. Enter Your Weight')
weight = input('Enter your Weight [kg]:')
fat = input('Enter your Fat [%]:')
print('2. Enter Your Meal')
breakfast = input('Breakfast Meal? (0, 1)')
lunch = input('Lunch Meal? (0, 1)')
dinner = input('Dinner Meal? (0, 1)')
print('3. Enter Your Training')
running = input('Running? (0, 1)')
muscle = input('Muscle Training? (0, 1)')
sports = input('Other Sports? (0, 1)')
diet = Diet(weight, fat, breakfast, lunch, dinner, running, muscle, sports)
print('4. Registration From')
print('Registered with this data. OK?')
print(diet.trend_history[0])
register = input('Register (1, 0)')
if register:
try:
df = pd.read_csv('sample.csv')
df = df.append(diet.trend_history[0], ignore_index=True)
except:
df = pd.DataFrame(diet.trend_history[0].values(), index=diet.trend_history[0].keys()).T
df.to_csv('sample.csv', index=False)
3. 関連記事
随時更新中です。公開次第、リンクを貼り付けていきます。

以下の記事も書いています。よかったらご覧ください。

Twitterもやってまーす。
それでは、よいPythonライフを!