[PYTHON] Visualisez les données d'exportation du journal Piyo

introduction

Actuellement, j'utilise l 'App Piyolog pour élever des enfants de 0 ans. Avec cette application, vous pouvez exporter le contenu saisi sur votre smartphone sous forme de texte. Je me suis demandé si je pouvais faire quelque chose avec ces données.

Objectif

Utilisez les informations de l'application Piyolog pour visualiser la croissance de votre bébé sur la base de données objectives, et regardez le graphique disant "Oh! Je grandis!" Pour augmenter la motivation pour la garde d'enfants. (Même si j'estime que le nombre de personnes motivées en regardant le graphique est limité)

Flux de traitement

Journal Piyo → GAS → Raspberry pi (Shell + Python) → LINE Lorsque vous exportez depuis Piyo Log et que vous l'envoyez vers Gmail, le résultat graphique automatiquement est envoyé à LINE. image.png

Format d'exportation du journal Piyo

Les données texte (valant une journée) exportées depuis Piyo Log ressemblent à ceci.

piyolog.txt


[Journal Piyo] Mai 2020
2020/5/1(Argent)
Nom de l'enfant(0 ans xx mois xx jours)

02:25 se lever(3 heures 15 minutes)
02:30 pipi
02:50 sommeil
03:50 pipi
05:40 se lever(2 heures 50 minutes)
05:55 lait 130ml
~ Abréviation ~
22:45 sommeil

Total du lait maternel restant 0 minute/Droite 0 minute
Lait total 9 fois 840 ml
Sommeil total 13 heures 40 minutes
Pee total 9 fois
Caca total 1 fois

Contenu à visualiser

Faites un graphique simple pour comprendre visuellement les tendances 1 à 3.

  1. Combien de ml de lait avez-vous bu à la fois par jour?
  2. Combien buvez-vous par jour?
  3. Combien de ml avez-vous bu cumulativement jusqu'à présent?

Traitement avec tarte à la râpe

Le code n'est extrait que pour la partie principale.

Lister uniquement les éléments nécessaires

python


#Lait de bûche Piyo,Ne listez que des objets tels que la merde
def get_piyolog_all_items(texts):
    days = []
    all_items = []

    for month in texts:
        #Diviser le texte avec des sauts de ligne
        lines = month.splitlines()

        #Faites-en un tableau numpy
        array = np.array(lines)

        for index, item in enumerate(array):
            #Avoir un rendez-vous
            if item == "----------" and index < len(array) - 1:
                day = array[index + 1]
                days.append(day)

            #Ignorez les lignes vides et chronométrez l'élément que vous souhaitez enregistrer(hh:mm)Jugement par
            if item != "" and check_item(item):
                #Stocker la date, l'heure et les éléments dans un tableau
                day_items = [day] + item.split()
                all_items.append(day_items)

    return all_items

Calculer la valeur maximale / cumulative du lait

get_each_day_milks


def get_each_day_milks(select, days, all_items):

    for item in all_items:
        #Extraire les éléments du lait
        if item[2] == "Lait":
            milk = item[3]
            milk = int(milk.replace("ml", ""))
            all_milks.append([item[0], item[1], milk])

    for day in days:
        for array_milk in all_milks:

            #Quantité maximale de lait par jour
            if day == array_milk[0] and day_milk_max < array_milk[2]:
                #Enregistrer la valeur maximale une fois
                tmp_max_milk = array_milk
                #Mettre à jour la valeur maximale pour la journée
                day_milk_max = array_milk[2]

            #Quantité totale de lait par jour
            if day == array_milk[0]:
                day_milk_sum += array_milk[2]

        #0 n'est pas enregistré
        if tmp_max_milk != 0:
            #Ajouter à la liste maximale de lait
            max_milks.append(tmp_max_milk)
            #Ajouter à la liste totale de lait
            sum_milks.append([day, "", day_milk_sum])
            #Ajouter à la liste cumulative de lait
            all_milk_acc += day_milk_sum
            acc_milks.append([day, "", all_milk_acc])

        #Initialisation
        day_milk_max = 0
        day_milk_sum = 0

    # return
    if select == "max":
        return max_milks
    elif select == "sum":
        return sum_milks
    elif select == "acc":
        return acc_milks
    else:
        return "error!"

POST à LINE

python


#Envoyer des images à LINE
def send_picture_to_line(PICTURE_PATH):
    url = LINE_URL
    token = LINE_TOKEN
    headers = {"Authorization": "Bearer " + token}

    #message
    payload = {"message": "send picture"}
    #image
    files = {"imageFile": open(PICTURE_PATH, "rb")}
    # post
    requests.post(url, data=payload, headers=headers, files=files)

résultat

Quantité maximale de lait bu par jour

Vous pouvez voir que la quantité de lait consommée augmente considérablement pendant la période néonatale (0 à 30 jours après la naissance)! Grandir! milk_20200506_144852.png

Modifications de la valeur totale du lait bu en une journée

Après la période nouveau-née, je bois 1000 ml presque tous les jours. La raison pour laquelle le dernier jour a fortement chuté est qu'il s'agissait de données au milieu de la journée. milk_20200506_144854.png

Valeur cumulée du lait bu jusqu'à présent

Naturellement, il augmente. C'est peut-être un graphique naturel, mais les mamans et les papas peuvent se sentir soulagés simplement en confirmant qu'il augmente régulièrement. Si l'inclinaison devient douce, vous sentez-vous malade? Vous remarquerez peut-être. milk_20200506_144855.png

Autre

La croissance peut être observée en visualisant les changements dans la durée totale du sommeil et la valeur moyenne du temps de sommeil. Je bois 60000ml = 60000g 80 jours après la naissance. J'ai gagné 3500g pour mon enfant, donc La plupart des 60000-3500 = 56500g semblent être devenus pipi et merde.

Recommended Posts

Visualisez les données d'exportation du journal Piyo
Visualisez la trajectoire de Hayabusa 2
Prenez le journal d'exécution du céleri
Conversion matricielle d'économie de mémoire des données de journal
Visualisez l'état de la réponse du recensement national 2020
À propos de Boxplot et Violinplot qui visualisent la variation des données indépendantes
Expliquer le mécanisme de la classe de données PEP557
Visualisez la valeur limite du perceptron multicouche
Obtenez la liste des colonnes et la liste des données de CASTable
Visualisez les effets de l'apprentissage profond / de la régularisation
Exporter des données 3D depuis QGIS
Exporter les données DB au format json
Vérifiez le résumé des données dans CASTable
Obtenez la liste des colonnes et la liste des données de CASTable
Le traitement des données
Visualisez les données d'exportation du journal Piyo
Paramètre pour afficher le journal de l'exécution de cron
L'inexactitude de Tensorflow était due à log (0)
[Note] Exportez le html du site avec python.
Visualisez la couche interne du réseau neuronal
L'histoire de la lecture des données HSPICE en Python
Visualisez le comportement de l'algorithme de tri avec matplotlib
Transition du baseball vue à partir des données
Vérifiez l'état des données à l'aide de pandas_profiling
Téléchargez les données éoliennes de l'Agence météorologique
Gratter les données gagnantes de Numbers à l'aide de Docker
Exportez les données d'accès pour chaque utilisateur de Google Analytics.
La décision de scikit-learn Comment visualiser un modèle en bois
Visualisez les données et saisissez la corrélation en même temps
À propos de l'inefficacité du transfert de données dans luigi on-memory
Changer les valeurs du thermo-hygromètre Bot avec Raspberry Pi
Ne pas être conscient du contenu des données en python
Visualisez le vocabulaire caractéristique d'un document avec D3.js
J'ai essayé d'utiliser l'API de Sakenowa Data Project
J'ai essayé de visualiser les informations spacha de VTuber
Utilisons les données ouvertes de "Mamebus" en Python
Visualisez le statut d'appréciation des œuvres d'art avec OpenCV
Visualisons les données pluviométriques publiées par la préfecture de Shimane
Visualisez le nombre de plaintes des compagnies d'assurance-vie
Le début de cif2cell
Le sens de soi
le zen de Python
Pré-traitement des données préfectorales
Sélection des données de mesure
La vengeance des types: la vengeance des types
Essayez de gratter les données COVID-19 Tokyo avec Python
Utilisation des données météorologiques passées 4 (sensations de la météo pendant les Jeux olympiques de Tokyo)
Un diagramme de réseau a été créé avec les données du COVID-19.
Utilisons les données ferroviaires des informations numériques foncières nationales
Visualisez les résultats des arbres de décision réalisés avec Python scikit-learn
Faisons l'analyse des données de naufrage du Titanic comme ça
Comment exécuter automatiquement la fonction d'exportation de GCP Datastore
L'histoire du rubyiste aux prises avec Python :: Dict data with pycall
Traitement des données qui élimine les effets des facteurs d'intrication (théorie)
[Python] J'ai essayé de visualiser la relation de suivi de Twitter
Modifier la période de conservation des journaux CloudWatch Logs dans Lambda
Visualisons le nombre de personnes infectées par le virus corona avec matplotlib
L'histoire de la copie de données de S3 vers TeamDrive de Google
[Python] J'ai essayé de collecter des données en utilisant l'API de wikipedia
Visualisez le flux des tweets avec Diamond + Graphite + Grafana
Ce que j'ai vu en analysant les données du marché des ingénieurs