• 使用Python进行健身手表数据分析


    健身手表(Fitness Watch)数据分析涉及分析健身可穿戴设备或智能手表收集的数据,以深入了解用户的健康和活动模式。这些设备可以跟踪所走的步数、消耗的能量、步行速度等指标。本文将带您完成使用Python进行Fitness Watch数据分析的任务。

    Fitness Watch数据分析是健康和保健领域企业的重要工具。通过分析健身可穿戴设备的用户数据,公司可以了解用户行为,提供个性化的解决方案,并有助于改善用户的整体健康和福祉。

    下面是我们在处理健身手表数据分析问题时可以遵循的过程:

    1. 从健身手表收集数据,确保数据准确可靠。
    2. 执行EDA以获得对数据的初步了解。
    3. 从原始数据中创建可能提供更有意义的见解的新功能。
    4. 创建数据的可视化表示,以有效地传达见解。
    5. 根据时间间隔或健身指标水平对用户的活动进行分段,并分析其表现。

    因此,该过程始于从健身手表收集数据。每款健身手表都可与智能手机上的应用程序配合使用。您可以从智能手机上的该应用程序收集数据。例如,这里用的是从苹果的健康应用程序收集了的一个健身手表的数据。

    使用Python进行分析

    现在,让我们通过导入必要的Python库和数据集来开始Fitness Watch数据分析的任务:

    import pandas as pd
    import plotly.io as pio
    import plotly.graph_objects as go
    pio.templates.default = "plotly_white"
    import plotly.express as px
    
    data = pd.read_csv("Apple-Fitness-Data.csv")
    print(data.head())
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    输出

             Date       Time  Step Count  Distance  Energy Burned  \
    0  2023-03-21  16:01:23           46   0.02543         14.620   
    1  2023-03-21  16:18:37          645   0.40041         14.722   
    2  2023-03-21  16:31:38           14   0.00996         14.603   
    3  2023-03-21  16:45:37           13   0.00901         14.811   
    4  2023-03-21  17:10:30           17   0.00904         15.153   
    
       Flights Climbed  Walking Double Support Percentage  Walking Speed  
    0                3                              0.304          3.060  
    1                3                              0.309          3.852  
    2                4                              0.278          3.996  
    3                3                              0.278          5.040  
    4                3                              0.281          5.184  
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    让我们看看这个数据是否包含任何null值:

    print(data.isnull().sum())
    
    • 1

    输出

    Date                                 0
    Time                                 0
    Step Count                           0
    Distance                             0
    Energy Burned                        0
    Flights Climbed                      0
    Walking Double Support Percentage    0
    Walking Speed                        0
    dtype: int64
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    因此,数据没有任何空值。让我们进一步分析步数随时间的变化:

    # Step Count Over Time
    fig1 = px.line(data, x="Time",
                   y="Step Count",
                   title="Step Count Over Time")
    fig1.show()
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述
    现在,让我们来看看随着时间的推移所覆盖的距离:

    # Distance Covered Over Time
    fig2 = px.line(data, x="Time",
                   y="Distance",
                   title="Distance Covered Over Time")
    fig2.show()
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述
    现在,让我们来看看能量随着时间推移的消耗:

    # Energy Burned Over Time
    fig3 = px.line(data, x="Time",
                   y="Energy Burned",
                   title="Energy Burned Over Time")
    fig3.show()
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述
    现在,让我们来看看步行速度随着时间的推移:

    # Walking Speed Over Time
    fig4 = px.line(data, x="Time",
                   y="Walking Speed",
                   title="Walking Speed Over Time")
    fig4.show()
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述
    现在,让我们计算并查看每天的平均步数:

    # Calculate Average Step Count per Day
    average_step_count_per_day = data.groupby("Date")["Step Count"].mean().reset_index()
    
    fig5 = px.bar(average_step_count_per_day, x="Date",
                  y="Step Count",
                  title="Average Step Count per Day")
    fig5.update_xaxes(type='category')
    fig5.show()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    输出
    在这里插入图片描述
    现在,让我们来看看步行效率:

    # Calculate Walking Efficiency
    data["Walking Efficiency"] = data["Distance"] / data["Step Count"]
    
    fig6 = px.line(data, x="Time",
                   y="Walking Efficiency",
                   title="Walking Efficiency Over Time")
    fig6.show()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    在这里插入图片描述
    现在,让我们来看看步数和步行速度随时间间隔的变化:

    # Create Time Intervals
    time_intervals = pd.cut(pd.to_datetime(data["Time"]).dt.hour,
                            bins=[0, 12, 18, 24],
                            labels=["Morning", "Afternoon", "Evening"], 
                            right=False)
    
    data["Time Interval"] = time_intervals
    
    # Variations in Step Count and Walking Speed by Time Interval
    fig7 = px.scatter(data, x="Step Count",
                      y="Walking Speed",
                      color="Time Interval",
                      title="Step Count and Walking Speed Variations by Time Interval",
                      trendline='ols')
    fig7.show()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    在这里插入图片描述
    现在,让我们比较所有健康和健身指标的日平均值:

    # Reshape data for treemap
    daily_avg_metrics = data.groupby("Date").mean().reset_index()
    
    daily_avg_metrics_melted = daily_avg_metrics.melt(id_vars=["Date"], 
                                                      value_vars=["Step Count", "Distance", 
                                                                  "Energy Burned", "Flights Climbed", 
                                                                  "Walking Double Support Percentage", 
                                                                  "Walking Speed"])
    
    # Treemap of Daily Averages for Different Metrics Over Several Weeks
    fig = px.treemap(daily_avg_metrics_melted,
                     path=["variable"],
                     values="value",
                     color="variable",
                     hover_data=["value"],
                     title="Daily Averages for Different Metrics")
    fig.show()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    在这里插入图片描述
    上图将每个健康和健身指标表示为矩形图块。每个图块的大小对应于度量的值,并且图块的颜色表示度量本身。悬停数据在与可视化交互时显示每个指标的精确平均值。

    步骤计数度量由于其与其他度量相比通常更高的数值而主导可视化,使得难以有效地可视化其他度量中的变化。由于步数的值高于所有其他指标的值,让我们再次查看此可视化,但不包含步数:

    # Select metrics excluding Step Count
    metrics_to_visualize = ["Distance", "Energy Burned", "Flights Climbed", 
                            "Walking Double Support Percentage", "Walking Speed"]
    
    # Reshape data for treemap
    daily_avg_metrics_melted = daily_avg_metrics.melt(id_vars=["Date"], value_vars=metrics_to_visualize)
    
    fig = px.treemap(daily_avg_metrics_melted,
                     path=["variable"],
                     values="value",
                     color="variable",
                     hover_data=["value"],
                     title="Daily Averages for Different Metrics (Excluding Step Count)")
    fig.show()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    在这里插入图片描述

    总结

    这就是如何使用Python进行健身数据分析。Fitness Watch数据分析是健康和保健领域企业的重要工具。通过分析健身可穿戴设备的用户数据,公司可以了解用户行为,提供个性化的解决方案,并有助于改善用户的整体健康和福祉。

  • 相关阅读:
    机器学习中岭回归、LASSO回归和弹性网络与损失函数
    一文了解循环神经网络
    【P No. 1739】 括号匹配
    云原生时代开发提效神器-Nocalhost
    医学心脏数据集分割建模实战
    [附源码]计算机毕业设计项目管理系统的专家评审模块Springboot程序
    【图形学】13 UnityShader语义(一)
    C++ list 模拟实现
    如何实现一个React全家桶项目(附完整教程及代码)
    已知点的经纬度坐标计算/读取DEM高程信息/海拔高度
  • 原文地址:https://blog.csdn.net/qq_42034590/article/details/132675418