AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / computer / Perguntas / 1887966
Accepted
Tiago Peres
Tiago Peres
Asked: 2025-03-22 20:16:22 +0800 CST2025-03-22 20:16:22 +0800 CST 2025-03-22 20:16:22 +0800 CST

Importar dados de peso CSV para o Garmin

  • 772

Uso uma balança inteligente desde 2020 com seu próprio aplicativo, que mais tarde se tornou o Zepp Life.

Tendo adquirido um Garmin há algum tempo, seria uma pena perder todos esses dados.

A boa notícia é que podemos extrair dados de outras contas ou rastreadores de atividades para o Garmin Connect na página de importação .

Então, exportei os dados do corpo como CSV do Zepp Life.

Os dados parecem com isso

time,weight,height,bmi,fatRate,bodyWaterRate,boneMass,metabolism,muscleRate,visceralFat
2020-09-01 08:00:17+0000,83.6,186.0,24.1,0.0,0.0,0.0,0.0,0.0,0.0
2020-09-01 22:02:16+0000,82.8,186.0,23.9,0.0,0.0,0.0,0.0,0.0,0.0

Depois de tentar importar, percebi que o Garmin não suporta o upload desse arquivo.

A questão que surge então é qual formato o CSV precisa ter para poder ser carregado no Garmin?

csv
  • 1 1 respostas
  • 44 Views

1 respostas

  • Voted
  1. Best Answer
    Tiago Peres
    2025-03-22T20:16:22+08:002025-03-22T20:16:22+08:00

    Graças a alguém no Reddit , descobri que é algo assim

    Body
    weight,bmi,fat,date,time
    83.6,24.1,0.0,2020-09-01,08:00:17
    82.8,23.9,0.0,2020-09-01,22:02:16
    

    Eventualmente também encontrado aqui .

    Então, inicialmente criei um script Python simples que lê dados de peso e composição corporal de um arquivo "zep_life.csv" e o converteu em um formato CSV que estava pronto para ser importado para o Garmin

    Desta vez não recebi mais nenhum aviso, mas ele travou

    imagem

    como se nada tivesse acontecido.

    Imaginei que tinha a ver com o tamanho do arquivo.

    Então, em vez de gerar apenas um arquivo, eu gerei um arquivo por ano e funcionou

    imagem

    Este foi o script usado

    import csv
    import datetime
    
    INPUT_CSV = "zep_life.csv"
    
    def zep_to_garmin_csv():
        """
        Reads a CSV file named "zep_life.csv" and writes multiple yearly CSVs named
        "garmin_ready_<year>.csv". Each output file has the first line "Body", 
        followed by "weight,bmi,fat,date,time" as headers. Rows are based on the 
        'time' field in the input, split by year.
    
        Usage:
            1. Place "zep_life.csv" in the same directory as this script.
            2. Run this script.
            3. For each year encountered in "zep_life.csv", a file named 
               "garmin_ready_<year>.csv" will be created.
    
        Requirements:
            - The input CSV must have the columns: "time", "weight", "bmi", "fatRate".
            - "time" must be in a format parseable by datetime.strptime with 
              "%Y-%m-%d %H:%M:%S%z".
            - "fatRate" of "null" or empty is replaced with "0.0".
        """
        yearly_writers = {}
        with open(INPUT_CSV, mode="r", encoding="utf-8-sig") as fin:
            reader = csv.DictReader(fin)
            for row in reader:
                raw_time = row.get("time", "").strip()
                weight_str = row.get("weight", "").strip()
                bmi_str = row.get("bmi", "").strip()
                fat_str = row.get("fatRate", "").strip()
                
                if not raw_time or not weight_str:
                    continue
    
                try:
                    dt = datetime.datetime.strptime(raw_time, "%Y-%m-%d %H:%M:%S%z")
                except ValueError:
                    continue
    
                date_str = dt.strftime("%Y-%m-%d")  # "YYYY-MM-DD"
                time_str = dt.strftime("%H:%M:%S")  # "HH:MM:SS"
                
                if fat_str.lower() in ("null", ""):
                    fat_str = "0.0"
    
                # If we haven't opened a file for this year yet, do so and write headers.
                year = dt.year
                if year not in yearly_writers:
                    fout = open(f"garmin_ready_{year}.csv", "w", newline="", encoding="utf-8")
                    writer = csv.writer(fout)
                    
                    # First line: "Body"
                    writer.writerow(["Body"])
                    
                    # Second line: headers
                    writer.writerow(["weight", "bmi", "fat", "date", "time"])
                    
                    # Store it in the dictionary
                    yearly_writers[year] = (fout, writer)
    
                # Write the row to the proper year's CSV.
                _, csv_writer = yearly_writers[year]
                csv_writer.writerow([weight_str, bmi_str, fat_str, date_str, time_str])
    
        # Close all the files
        for fout, _ in yearly_writers.values():
            fout.close()
    
        print("Done! Split files by year.")
    
    
    if __name__ == "__main__":
        zep_to_garmin_csv()
    
    • 0

relate perguntas

  • O Powershell ConvertTo-Csv altera objetos

  • Crie um arquivo CSV com zeros à esquerda que o Excel nunca remove

  • No Notepad ++, é possível procurar linhas que contenham muitas ou poucas instâncias de um delimitador específico?

  • Números: Exportar CSV com separador diferente

  • Contando vírgulas em uma string de texto e adicionando uma nova linha

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Como posso reduzir o consumo do processo `vmmem`?

    • 11 respostas
  • Marko Smith

    Baixar vídeo do Microsoft Stream

    • 4 respostas
  • Marko Smith

    O Google Chrome DevTools falhou ao analisar o SourceMap: chrome-extension

    • 6 respostas
  • Marko Smith

    O visualizador de fotos do Windows não pode ser executado porque não há memória suficiente?

    • 5 respostas
  • Marko Smith

    Como faço para ativar o WindowsXP agora que o suporte acabou?

    • 6 respostas
  • Marko Smith

    Área de trabalho remota congelando intermitentemente

    • 7 respostas
  • Marko Smith

    O que significa ter uma máscara de sub-rede /32?

    • 6 respostas
  • Marko Smith

    Ponteiro do mouse movendo-se nas teclas de seta pressionadas no Windows?

    • 1 respostas
  • Marko Smith

    O VirtualBox falha ao iniciar com VERR_NEM_VM_CREATE_FAILED

    • 8 respostas
  • Marko Smith

    Os aplicativos não aparecem nas configurações de privacidade da câmera e do microfone no MacBook

    • 5 respostas
  • Martin Hope
    Vickel O Firefox não permite mais colar no WhatsApp web? 2023-08-18 05:04:35 +0800 CST
  • Martin Hope
    Saaru Lindestøkke Por que os arquivos tar.xz são 15x menores ao usar a biblioteca tar do Python em comparação com o tar do macOS? 2021-03-14 09:37:48 +0800 CST
  • Martin Hope
    CiaranWelsh Como posso reduzir o consumo do processo `vmmem`? 2020-06-10 02:06:58 +0800 CST
  • Martin Hope
    Jim Pesquisa do Windows 10 não está carregando, mostrando janela em branco 2020-02-06 03:28:26 +0800 CST
  • Martin Hope
    andre_ss6 Área de trabalho remota congelando intermitentemente 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney Por que colocar um ponto após o URL remove as informações de login? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension Ponteiro do mouse movendo-se nas teclas de seta pressionadas no Windows? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    jonsca Todos os meus complementos do Firefox foram desativados repentinamente, como posso reativá-los? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK É possível criar um código QR usando texto? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 Altere o nome da ramificação padrão do git init 2019-04-01 06:16:56 +0800 CST

Hot tag

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve