python分析 数据中包含手环2020/09/21到2020/09/27的模拟数据。文件类型为xlsx,分为基本信息、跑步、步行、骑行、健身、羽毛球和心率等记录工作表,数据文件为data1.xlsx。 要求: (1)统计一周中每天的步数、距离的情况 (2)统计每日消耗卡路里情况 (3)统计每日心率情况 (4)统计每日温度情况 (5)统计每日体温变化 (6)统计运动情况 (7)每日运动持续时长 (8)每次运动心率最大值、最小值、平均值 (9)要求使用图表进行展示
时间: 2024-03-24 11:41:33 浏览: 19
好的,以下是对应的代码实现:
```Python
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
# 读取数据
data = pd.read_excel('data1.xlsx', sheet_name=None)
# 获取基本信息表
basic_info = data['基本信息']
# 获取跑步、步行、骑行、健身、羽毛球数据表
run = data['跑步']
walk = data['步行']
bike = data['骑行']
fitness = data['健身']
badminton = data['羽毛球']
# 获取心率数据表
heart_rate = data['心率']
# 获取温度、体温数据表
temperature = data['温度']
body_temperature = data['体温']
# 统计一周中每天的步数、距离的情况
daily_steps_distance = pd.concat([run[['日期', '步数', '距离']], walk[['日期', '步数', '距离']],
bike[['日期', '步数', '距离']], fitness[['日期', '步数', '距离']],
badminton[['日期', '步数', '距离']]])
daily_steps_distance = daily_steps_distance.groupby('日期').sum()
print(daily_steps_distance)
# 统计每日消耗卡路里情况
daily_calories = pd.concat([run[['日期', '卡路里']], walk[['日期', '卡路里']],
bike[['日期', '卡路里']], fitness[['日期', '卡路里']],
badminton[['日期', '卡路里']]])
daily_calories = daily_calories.groupby('日期').sum()
print(daily_calories)
# 统计每日心率情况
daily_heart_rate = heart_rate.groupby('日期').mean()
print(daily_heart_rate)
# 统计每日温度情况
daily_temperature = temperature.groupby('日期').mean()
print(daily_temperature)
# 统计每日体温变化
daily_body_temperature = body_temperature.groupby('日期').agg(['min', 'max', 'mean'])
print(daily_body_temperature)
# 统计运动情况
sports = pd.concat([run, walk, bike, fitness, badminton])
sports_time = sports.groupby('类型')['总时间'].sum()
print(sports_time)
# 统计每日运动持续时长
daily_sports_time = sports.groupby('日期')['总时间'].sum()
print(daily_sports_time)
# 统计每次运动心率最大值、最小值、平均值
sports_heart_rate = sports.groupby(['日期', '类型'])['心率'].agg(['min', 'max', 'mean'])
print(sports_heart_rate)
# 使用图表进行展示
sns.set(style='ticks', font_scale=1.2)
sns.set_palette('husl')
fig, axs = plt.subplots(3, 2, figsize=(18, 20))
axs = axs.flatten()
# 绘制每日步数和距离情况
sns.barplot(x=daily_steps_distance.index, y='步数', data=daily_steps_distance, ax=axs[0])
sns.lineplot(x=daily_steps_distance.index, y='距离', data=daily_steps_distance, ax=axs[0])
axs[0].set_title('Daily Steps and Distance')
# 绘制每日消耗卡路里情况
sns.barplot(x=daily_calories.index, y='卡路里', data=daily_calories, ax=axs[1])
axs[1].set_title('Daily Calories')
# 绘制每日心率情况
sns.barplot(x=daily_heart_rate.index, y='心率', data=daily_heart_rate, ax=axs[2])
axs[2].set_title('Daily Heart Rate')
# 绘制每日温度情况
sns.lineplot(x=daily_temperature.index, y='温度', data=daily_temperature, ax=axs[3])
axs[3].set_title('Daily Temperature')
# 绘制每日体温变化
sns.boxplot(x=daily_body_temperature.index, y=('体温', 'min'), data=daily_body_temperature, ax=axs[4])
sns.boxplot(x=daily_body_temperature.index, y=('体温', 'max'), data=daily_body_temperature, ax=axs[4])
sns.lineplot(x=daily_body_temperature.index, y=('体温', 'mean'), data=daily_body_temperature, ax=axs[4])
axs[4].set_title('Daily Body Temperature')
# 绘制运动情况
sns.barplot(x=sports_time.index, y=sports_time.values, ax=axs[5])
axs[5].set_title('Sports Time')
plt.tight_layout()
plt.show()
```
以上代码实现了对数据的统计和绘图,每个要求的数据都通过代码进行了计算,并通过Matplotlib和Seaborn库进行绘图展示。具体实现过程如下:
1. 首先使用Pandas库读取数据文件,并获取各个工作表的数据。
2. 对于要求1~5,使用Pandas的groupby函数实现数据的统计。
3. 对于要求6~8,将跑步、步行、骑行、健身、羽毛球数据表合并,再通过groupby函数实现统计。
4. 最后使用Seaborn库绘制不同的图表,展示数据的统计结果。
运行以上代码后,即可得到对应的图表展示。