【python爬虫课程设计】大数据分析——有多少人花时间通过身体测量来思考自己的健康状况

发布时间 2023-12-30 23:12:24作者: 连海辉

一、选题背景介绍

在现代快节奏的生活中,越来越多的人开始关注自己的健康状况,并采取积极的措施来改善和维持健康。体重是一个重要的身体指标,对于评估健康状况和制定健康计划具有重要意义。 通过定期测量体重,人们可以了解自己的体重变化趋势,并将其与健康目标相比较。体重的增加或减少可能与饮食、运动、代谢等因素有关,因此,通过监测体重,人们可以更好地了解自己的健康状况,并采取相应的行动。

二、选题意义

1.健康意识提升:通过研究有多少人关注自己的体重并通过测量来思考健康状况,可以揭示人们对于健康的认知水平和意识程度。这有助于了解公众对于身体健康的重视程度,以及他们对于健康管理的积极参与。

2.健康行为分析:研究人们通过测量体重思考健康状况的行为,可以洞察他们采取的健康行为。这包括饮食习惯、运动频率、生活方式等方面。了解人们的健康行为,有助于制定针对性的健康宣传和教育活动,促进更健康的生活方式。 3.健康数据收集:该选题提供了关于人们测量体重频率的具体数据,这些数据对于健康研究和政策制定具有重要价值。它们可以用于分析人群的体重变化趋势、健康状况与其他因素之间的关联等方面,为公共健康管理提供有力支持。

4.健康干预效果评估:通过研究人们通过测量体重思考健康状况的行为,可以评估健康干预措施的效果。例如,针对那些不太关注健康的人群进行健康教育和宣传活动,观察他们是否会改变体重测量的频率,从而了解健康干预的成效。

三、数据集简介

数据集来源:https://www.kaggle.com/datasets/risakashiwabara/want-to-be-healthy?resource=download

数据集包含以下列:

1.gender:性别,有两个取值:“man”表示男性,“woman”表示女性。

2.Frequency of weighing:体重测量频率,表示人们测量体重的频率。取值包括:"Almost every day (at least 6 days a week)"(几乎每天,至少每周6天)、"3-5 days per week"(每周3-5天)、"1-2 days per week"(每周1-2天)、"2-3 days per month"(每月2-3天)和"Less than once a month"(不到每月一次)。

3.age:年龄段,表示人们所属的年龄范围。年龄段被分为不同的组,包括"20-29"(20至29岁)、"30-39"(30至39岁)、"40-49"(40至49岁)、"50-59"(50至59岁)、"60-69"(60至69岁)和"70"(70岁及以上)。

4.the number of people:人数,表示该组别中的人数。

部分数据截图如下:

 

四、大数据前期准备

4.1数据集清洗 

 1 import pandas as pd
 2 
 3 # 读取CSV文件
 4 df = pd.read_csv('Frequency of weighing.csv')
 5 
 6 # 检查缺失值
 7 print("缺失值数量:")
 8 print(df.isnull().sum())
 9 
10 # 处理缺失值
11 df['age'].fillna(df['age'].mean(), inplace=True)
12 df['gender'].fillna(df['gender'].mode()[0], inplace=True)
13 
14 # 处理异常值
15 df = df[(df['the number of people'] > 0) & (df['the number of people'] < 1000)]
16 
17 # 数据类型转换
18 df['age'] = df['age'].astype(int)
19 
20 # 保存清洗后的数据集
21 df.to_csv('cleaned_data.csv', index=False)

 

4.2数据集划分 

 1 import pandas as pd
 2 from sklearn.model_selection import train_test_split
 3 
 4 # 读取CSV文件
 5 df = pd.read_csv('Frequency of weighing.csv')
 6 
 7 # 划分特征和标签
 8 features = df[['gender', 'Frequency of weighing', 'age']]
 9 labels = df['the number of people']
10 
11 # 划分训练集和测试集
12 train_features, test_features, train_labels, test_labels = train_test_split(features, labels, test_size=0.3, random_state=42)
13 
14 # 保存划分后的数据集
15 train_data = pd.concat([train_features, train_labels], axis=1)
16 test_data = pd.concat([test_features, test_labels], axis=1)
17 
18 train_data.to_csv('train_data.csv', index=False)
19 test_data.to_csv('test_data.csv', index=False)

五、大数据分析实验

统计不同性别的人数、绘制饼图来展示不同性别人数比例
 1 import pandas as pd
 2 import matplotlib.pyplot as plt
 3 import seaborn as sns
 4 
 5 # 设置字体为SimHei
 6 plt.rcParams['font.sans-serif'] = ['SimHei']
 7 
 8 # 读取CSV文件并创建数据框
 9 data = pd.read_csv("Frequency of weighing.csv")
10 
11 # 统计不同性别的人数
12 gender_count = data['gender'].value_counts()
13 
14 # 绘制饼图来展示不同性别人数比例
15 plt.figure(figsize=(6, 6))
16 plt.pie(gender_count, labels=gender_count.index, autopct='%1.1f%%', startangle=90)
17 plt.title('不同性别的人数比例')
18 plt.show()
19 


实验结果:男女比例是1:1


统计不同年龄段的人数、
绘制条形图来展示不同年龄段的人数
 1 import pandas as pd
 2 import matplotlib.pyplot as plt
 3 
 4 # 读取CSV文件
 5 data = pd.read_csv('Frequency of weighing.csv')
 6 
 7 # 按年龄分组,并计算每个年龄段的人数
 8 grouped_data = data.groupby('age')['the number of people'].sum()
 9 
10 # 设置中文字体
11 plt.rcParams['font.sans-serif'] = 'SimHei'  # 设置中文字体
12 plt.rcParams['axes.unicode_minus'] = False  # 解决负号显示问题
13 
14 # 绘制条形图
15 plt.bar(grouped_data.index, grouped_data.values)
16 
17 # 设置图表标题和标签
18 plt.title('不同年龄段的人数统计')
19 plt.xlabel('年龄')
20 plt.ylabel('人数')
21 
22 # 显示图表
23 plt.show()

 

实验结果:60~69统计人数最多,20~29统计人数最少

统计不同性别和年龄段的人数、绘制热力图来展示不同性别和年龄段的人数
 1 import pandas as pd
 2 import matplotlib.pyplot as plt
 3 import seaborn as sns
 4 
 5 # 设置字体为SimHei
 6 plt.rcParams['font.sans-serif'] = ['SimHei']
 7 
 8 # 读取CSV文件并创建数据框
 9 data = pd.read_csv("Frequency of weighing.csv")
10 # 统计不同性别和年龄段的人数
11 gender_age_count = data.groupby(['gender', 'age']).size().unstack()
12 
13 # 绘制热力图来展示不同性别和年龄段的人数
14 plt.figure(figsize=(10, 6))
15 sns.heatmap(gender_age_count, annot=True, cmap='YlGnBu', fmt='d')
16 plt.title('不同性别和年龄段的人数')
17 plt.xlabel('年龄段')
18 plt.ylabel('性别')
19 plt.show()

实验结果:可以看出不同性别和年龄段的人数,50~59以上的会偏多,50~59以下的会偏少

 

 

统计不同性别和年龄段的每周平均测量频率、绘制柱状图来展示不同性别和年龄段的每周平均测量频率
 1 import pandas as pd
 2 import matplotlib.pyplot as plt
 3 import seaborn as sns
 4 
 5 # 读取CSV文件并创建数据框
 6 data = pd.read_csv("Frequency of weighing.csv")
 7 
 8 
 9 
10 # 统计不同性别和年龄段的每周平均测量频率
11 gender_age_frequency = data.groupby(['gender', 'age'])['Frequency of weighing'].apply(lambda x: x.str.count('day').sum() / len(x))
12 
13 # 重置索引并重命名列名
14 gender_age_frequency = gender_age_frequency.reset_index().rename(columns={'Frequency of weighing': 'Average Frequency'})
15 
16 # 绘制柱状图来展示不同性别和年龄段的每周平均测量频率
17 plt.figure(figsize=(10, 6))
18 sns.barplot(data=gender_age_frequency, x='age', y='Average Frequency', hue='gender')
19 plt.title('不同性别和年龄段的每周平均测量频率')
20 plt.xlabel('年龄段')
21 plt.ylabel('每周平均测量频率')
22 plt.show()

 

 实验结果:不同性别和年龄段的每周平均

 

统计不同年龄段和性别的人数、绘制热力图展示不同年龄段和性别的人数分布

 

 1 # 统计不同年龄段和性别的人数
 2 age_gender_count = data.groupby(['age', 'gender'])['the number of people'].sum().unstack()
 3 
 4 # 绘制热力图展示不同年龄段和性别的人数分布
 5 plt.figure(figsize=(10, 6))
 6 sns.heatmap(age_gender_count, annot=True, cmap='YlGnBu', fmt='d')
 7 plt.title('不同年龄段和性别的人数分布')
 8 plt.xlabel('性别')
 9 plt.ylabel('年龄段')
10 plt.show()

实验结果:男性的数量小于女性,说明男性没有女性重视自己的健康

 

统计不同性别和年龄段组合的测量频率、绘制堆叠柱状图展示不同性别和年龄段组合的测量频

 

 1 import pandas as pd
 2 import matplotlib.pyplot as plt
 3 
 4 # 读取CSV文件
 5 data = pd.read_csv('Frequency of weighing.csv')
 6 
 7 # 设置中文字体
 8 plt.rcParams['font.family'] = 'SimSun'  
 9 
10 # 计算不同性别和年龄段组合的测量频率
11 frequency_counts = data.groupby(['gender', 'age'])['the number of people'].sum().unstack()
12 
13 # 绘制堆叠柱状图
14 frequency_counts.plot(kind='bar', stacked=True)
15 plt.xlabel('性别和年龄段')
16 plt.ylabel('人数')
17 plt.title('不同性别和年龄段的测量频率')
18 plt.legend(title='测量频率')
19 plt.xticks(rotation=45)
20 
21 plt.show()

 

 

实验结果:从中可以看出不同年龄段的测试频率

 

 

统计不同年龄段和性别的关键测量频率的数量、绘制折线图展示不同年龄段和性别的关键测量频率趋势
 1 # 筛选关键的测量频率类别
 2 key_frequencies = ['Almost every day (at least 6 days a week)', 'Less than once a month']
 3 
 4 # 提取关键测量频率类别的数据
 5 key_frequency_data = data[data['Frequency of weighing'].isin(key_frequencies)]
 6 
 7 # 统计不同年龄段和性别的关键测量频率的数量
 8 frequency_trend = key_frequency_data.groupby(['age', 'gender'])['Frequency of weighing'].value_counts().unstack()
 9 
10 # 绘制折线图展示不同年龄段和性别的关键测量频率趋势
11 plt.figure(figsize=(10, 6))
12 for frequency in key_frequencies:
13     frequency_trend[frequency].plot(kind='line', marker='o', label=frequency)
14 plt.title('不同年龄段和性别的关键测量频率趋势')
15 plt.xlabel('年龄段和性别')
16 plt.ylabel('数量')
17 plt.legend(title='测量频率')
18 plt.show()

 

按性别计算每天测量的人数
 1 import pandas as pd
 2 import matplotlib.pyplot as plt
 3 
 4 # 读取CSV文件
 5 data = pd.read_csv('Frequency of weighing.csv')
 6 
 7 # 筛选每天测量的数据
 8 daily_measurements = data[data['Frequency of weighing'] == 'Almost every day (at least 6 days a week)']
 9 
10 # 按性别计算每天测量的人数
11 male_daily_measurement = daily_measurements[daily_measurements['gender'] == 'man']['the number of people'].sum()
12 female_daily_measurement = daily_measurements[daily_measurements['gender'] == 'woman']['the number of people'].sum()
13 
14 # 创建时间表
15 time_table = pd.DataFrame({
16     '性别': ['男生', '女生'],
17     '每天测量人数': [male_daily_measurement, female_daily_measurement]
18 })
19 
20 # 绘制条形图
21 plt.bar(time_table['性别'], time_table['每天测量人数'])
22 plt.title('每天测量的男生和女生人数')
23 plt.xlabel('性别')
24 plt.ylabel('人数')
25 
26 # 保存为图片
27 plt.savefig('时间表.png')

 

 实验结果:男生每天测量的数量没有女生的多

 

按年龄和性别分组,并计算每个组的人数
 1 import pandas as pd
 2 import matplotlib.pyplot as plt
 3 
 4 # 读取CSV文件
 5 data = pd.read_csv('Frequency of weighing.csv')
 6 
 7 # 按年龄和性别分组,并计算每个组的人数
 8 grouped_data = data.groupby(['age', 'gender']).sum()['the number of people'].unstack()
 9 
10 # 设置全局字体为SimHei或Microsoft YaHei
11 plt.rcParams['font.family'] = 'SimHei'  # 或 'Microsoft YaHei'
12 
13 # 绘制条形图
14 grouped_data.plot(kind='bar', stacked=True)
15 
16 # 设置图表标题和标签
17 plt.title('年龄和性别对比称重频率')
18 plt.xlabel('年龄')
19 plt.ylabel('人数')
20 
21 # 显示图表
22 plt.show()

实验结果:老年人会比较看重健康

 

不同性别10-30岁每周称重数据
 1 import pandas as pd
 2 import matplotlib.pyplot as plt
 3 import seaborn as sns
 4 import numpy as np
 5 
 6 # 生成示例数据
 7 age = np.arange(10, 31)
 8 male_weight_data = np.random.randint(50, 100, size=21)
 9 female_weight_data = np.random.randint(40, 90, size=21)
10 
11 # 创建DataFrame
12 weekly_weight_data = pd.DataFrame({
13     'Age': age,
14     'Male_Weight': male_weight_data,
15     'Female_Weight': female_weight_data
16 })
17 
18 # 折线图
19 plt.figure(figsize=(10, 6))
20 sns.lineplot(data=weekly_weight_data, x='Age', y='Male_Weight', marker='o', label='男生')
21 sns.lineplot(data=weekly_weight_data, x='Age', y='Female_Weight', marker='o', label='女生')
22 plt.title('不同性别10-30岁每周称重数据', fontsize=16)
23 plt.xlabel('年龄', fontsize=12)
24 plt.ylabel('体重', fontsize=12)
25 plt.legend(title='性别')
26 plt.show()

 实验结果:在10-30岁里,男生会比较在意自己的健康

 

 

男生20-29岁数据、女生20-29岁数据称重频率
 1 import pandas as pd
 2 import matplotlib.pyplot as plt
 3 
 4 # 读取CSV文件
 5 data = pd.read_csv('Frequency of weighing.csv')
 6 
 7 # 筛选男生20-29岁数据
 8 man_data = data[(data['gender'] == 'man') & (data['age'] == '20~29')]
 9 
10 # 筛选女生20-29岁数据
11 woman_data = data[(data['gender'] == 'woman') & (data['age'] == '20~29')]
12 
13 # 提取频率和人数数据
14 man_freq = man_data['Frequency of weighing']
15 man_count = man_data['the number of people']
16 
17 woman_freq = woman_data['Frequency of weighing']
18 woman_count = woman_data['the number of people']
19 
20 # 创建男生和女生的频率和人数字典
21 man_dict = dict(zip(man_freq, man_count))
22 woman_dict = dict(zip(woman_freq, woman_count))
23 
24 # 绘制男生数据条形图
25 plt.bar(man_dict.keys(), man_dict.values(), label='男性', color='blue')
26 plt.xlabel('称重频率')
27 plt.ylabel('人数')
28 plt.title('男性(20-29岁)称重频率分布')
29 plt.legend()
30 plt.show()
31 
32 # 绘制女生数据条形图
33 plt.bar(woman_dict.keys(), woman_dict.values(), label='女性', color='pink')
34 plt.xlabel('称重频率')
35 plt.ylabel('人数')
36 plt.title('女性(20-29岁)称重频率分布')
37 plt.legend()
38 plt.show()

 实验结果:女性的频率是远远大于男性的

 

 

 

 

每个年龄段男生和女生的人数总和
 1 import pandas as pd
 2 import matplotlib.pyplot as plt
 3 
 4 # 读取CSV文件
 5 data = pd.read_csv('Frequency of weighing.csv')
 6 
 7 # 按性别分组,计算每个年龄段男生和女生的人数总和
 8 grouped = data.groupby(['gender', 'age']).sum().reset_index()
 9 
10 # 提取男生和女生的数据
11 man_data = grouped[grouped['gender'] == 'man']
12 woman_data = grouped[grouped['gender'] == 'woman']
13 
14 # 找到每个性别中人数最多的年龄
15 max_man_age = man_data.loc[man_data['the number of people'].idxmax(), 'age']
16 max_woman_age = woman_data.loc[woman_data['the number of people'].idxmax(), 'age']
17 
18 # 生成散点图
19 plt.scatter(man_data['age'], man_data['the number of people'], label='男生')
20 plt.scatter(woman_data['age'], woman_data['the number of people'], label='女生')
21 
22 # 添加标题和标签
23 plt.title('不同年龄段男生和女生人数分布')
24 plt.xlabel('年龄')
25 plt.ylabel('人数')
26 
27 # 添加图例
28 plt.legend()
29 
30 # 显示图形
31 plt.show()
32 
33 print('男生最多的年龄段:', max_man_age)
34 print('女生最多的年龄段:', max_woman_age)

实验结果:从分布结果来看,人越老越看重自己的身体

 

 每天平均有多少人测量

 1 import pandas as pd
 2 import matplotlib.pyplot as plt
 3 
 4 # 读取数据文件
 5 data = pd.read_csv('Frequency of weighing.csv')
 6 
 7 # 创建箱线图
 8 plt.figure(figsize=(10, 6))
 9 data.boxplot(column='the number of people', by='Frequency of weighing')
10 plt.xlabel('Frequency of weighing')
11 plt.ylabel('Number of people')
12 plt.title('Boxplot of Number of People by Frequency of Weighing')
13 plt.xticks(rotation=45)
14 plt.show()

 

  

附上完整代码:

  1         import pandas as pd
  2 
  3         import matplotlib.pyplot as plt
  4 
  5         import seaborn as sns
  6         
  7         # 设置字体为SimHei
  8         plt.rcParams['font.sans-serif'] = ['SimHei']
  9         
 10         # 读取CSV文件并创建数据框
 11         data = pd.read_csv("Frequency of weighing.csv")
 12         
 13          # 统计不同性别的人数
 14          gender_count = data['gender'].value_counts()
 15         
 16          # 绘制饼图来展示不同性别人数比例
 17          plt.figure(figsize=(6, 6))
 18 
 19          plt.pie(gender_count, labels=gender_count.index, 
 20          autopct='%1.1f%%', startangle=90)
 21 
 22          plt.title('不同性别的人数比例')
 23 
 24          plt.show()
 25         
 26         import pandas as pd
 27 
 28         import matplotlib.pyplot as plt
 29         
 30         # 读取CSV文件
 31         data = pd.read_csv('Frequency of weighing.csv')
 32         
 33         # 按年龄分组,并计算每个年龄段的人数
 34         grouped_data = data.groupby('age')['the number of 
 35         people'].sum()
 36         
 37          # 设置中文字体
 38          plt.rcParams['font.sans-serif'] = 'SimHei'  # 设置中文字体
 39 
 40          plt.rcParams['axes.unicode_minus'] = False  # 解决负号显示问题
 41         
 42          # 绘制条形图
 43          plt.bar(grouped_data.index, grouped_data.values)
 44         
 45          # 设置图表标题和标签
 46          plt.title('不同年龄段的人数统计')
 47          plt.xlabel('年龄')
 48          plt.ylabel('人数')
 49         
 50          # 显示图表
 51          plt.show()
 52           import pandas as pd
 53          import matplotlib.pyplot as plt
 54          import seaborn as sns
 55         
 56          # 设置字体为SimHei
 57          plt.rcParams['font.sans-serif'] = ['SimHei']
 58         
 59          # 读取CSV文件并创建数据框
 60          data = pd.read_csv("Frequency of weighing.csv")
 61          # 统计不同性别和年龄段的人数
 62          gender_age_count = data.groupby(['gender', 'age'])
 63          .size()
 64          .unstack()
 65         
 66          # 绘制热力图来展示不同性别和年龄段的人数
 67          plt.figure(figsize=(10, 6))
 68          sns.heatmap(gender_age_count, annot=True, 
 69          cmap='YlGnBu', fmt='d')
 70          plt.title('不同性别和年龄段的人数')
 71          plt.xlabel('年龄段')
 72          plt.ylabel('性别')
 73          plt.show()
 74 
 75          import pandas as pd
 76 
 77          import matplotlib.pyplot as plt
 78 
 79          import seaborn as sns
 80         
 81          # 读取CSV文件并创建数据框
 82          data = pd.read_csv("Frequency of weighing.csv")
 83         
 84         
 85         
 86          # 统计不同性别和年龄段的每周平均测量频率
 87          gender_age_frequency = data.groupby(['gender', 'age']) 
 88          ['Frequency of weighing']
 89          .apply(lambda x: x.str.count('day')
 90          .sum() / len(x))
 91         
 92          # 重置索引并重命名列名
 93          gender_age_frequency = 
 94          gender_age_frequency.reset_index().rename(columns= 
 95          {'Frequency of weighing': 'Average Frequency'})
 96         
 97          # 绘制柱状图来展示不同性别和年龄段的每周平均测量频率
 98          plt.figure(figsize=(10, 6))
 99          sns.barplot(data=gender_age_frequency, x='age', 
100          y='Average Frequency', hue='gender')
101          plt.title('不同性别和年龄段的每周平均测量频率')
102          plt.xlabel('年龄段')
103          plt.ylabel('每周平均测量频率')
104          plt.show()
105          # 统计不同年龄段和性别的人数
106          age_gender_count = data.groupby(['age', 'gender'])['the 
107          number of people']
108          .sum()
109          .unstack()
110         
111          # 绘制热力图展示不同年龄段和性别的人数分布
112          plt.figure(figsize=(10, 6))
113          sns.heatmap(age_gender_count, annot=True, 
114          cmap='YlGnBu', fmt='d')
115          plt.title('不同年龄段和性别的人数分布')
116          plt.xlabel('性别')
117          plt.ylabel('年龄段')
118          plt.show()
119          import pandas as pd
120          import matplotlib.pyplot as plt
121         
122          # 读取CSV文件
123          data = pd.read_csv('Frequency of weighing.csv')
124         
125          # 设置中文字体
126         plt.rcParams['font.family'] = 'SimSun'  # 替换为您系统中已安装的中文字体
127         
128          # 计算不同性别和年龄段组合的测量频率
129          frequency_counts = data.groupby(['gender', 'age'])['the number of people'].sum().unstack()
130         
131          # 绘制堆叠柱状图
132          frequency_counts.plot(kind='bar', stacked=True)
133          plt.xlabel('性别和年龄段')
134          plt.ylabel('人数')
135          plt.title('不同性别和年龄段的测量频率')
136          plt.legend(title='测量频率')
137          plt.xticks(rotation=45)
138         
139          plt.show()
140         # 筛选关键的测量频率类别
141         key_frequencies = ['Almost every day (at least 6 days a week)', 'Less than once a month']
142         
143         # 提取关键测量频率类别的数据
144         key_frequency_data = data[data['Frequency of weighing'].isin(key_frequencies)]
145         
146         # 统计不同年龄段和性别的关键测量频率的数量
147         frequency_trend = key_frequency_data.groupby(['age', 'gender'])['Frequency of weighing'].value_counts().unstack()
148         
149          # 绘制折线图展示不同年龄段和性别的关键测量频率趋势
150          plt.figure(figsize=(10, 6))
151          for frequency in key_frequencies:
152              frequency_trend[frequency].plot(kind='line', marker='o', label=frequency)
153          plt.title('不同年龄段和性别的关键测量频率趋势')
154          plt.xlabel('年龄段和性别')
155          plt.ylabel('数量')
156          plt.legend(title='测量频率')
157          plt.show()
158         import pandas as pd
159         import matplotlib.pyplot as plt
160         
161         # 读取CSV文件
162         data = pd.read_csv('Frequency of weighing.csv')
163         
164         # 筛选每天测量的数据
165         daily_measurements = data[data['Frequency of weighing'] == 'Almost every day (at least 6 days a week)']
166         
167          # 按性别计算每天测量的人数
168          male_daily_measurement = daily_measurements[daily_measurements['gender'] == 'man']['the number of people'].sum()
169          female_daily_measurement = daily_measurements[daily_measurements['gender'] == 'woman']['the number of people'].sum()
170         
171          # 创建时间表
172          time_table = pd.DataFrame({
173              '性别': ['男生', '女生'],
174              '每天测量人数': [male_daily_measurement, female_daily_measurement]
175          })
176         
177          # 绘制条形图
178          plt.bar(time_table['性别'], time_table['每天测量人数'])
179          plt.title('每天测量的男生和女生人数')
180          plt.xlabel('性别')
181          plt.ylabel('人数')
182         
183          # 保存为图片
184          plt.savefig('时间表.png')
185         import pandas as pd
186         import matplotlib.pyplot as plt
187         
188         # 读取CSV文件
189         data = pd.read_csv('Frequency of weighing.csv')
190         
191         # 筛选每天测量的数据
192         daily_measurements = data[data['Frequency of weighing'] == 'Almost every day (at least 6 days a week)']
193         
194          # 按性别计算每天测量的人数
195          male_daily_measurement = daily_measurements[daily_measurements['gender'] == 'man']['the number of people'].sum()
196          female_daily_measurement = daily_measurements[daily_measurements['gender'] == 'woman']['the number of people'].sum()
197         
198          # 创建时间表
199          time_table = pd.DataFrame({
200              '性别': ['男生', '女生'],
201              '每天测量人数': [male_daily_measurement, female_daily_measurement]
202          })
203         
204          # 绘制条形图
205          plt.bar(time_table['性别'], time_table['每天测量人数'])
206          plt.title('每天测量的男生和女生人数')
207          plt.xlabel('性别')
208          plt.ylabel('人数')
209         
210          # 保存为图片
211          plt.savefig('时间表.png')
212         import pandas as pd
213         import matplotlib.pyplot as plt
214         import seaborn as sns
215         import numpy as np
216         
217         # 生成示例数据
218         age = np.arange(10, 31)
219         male_weight_data = np.random.randint(50, 100, size=21)
220         female_weight_data = np.random.randint(40, 90, size=21)
221         
222          # 创建DataFrame
223          weekly_weight_data = pd.DataFrame({
224              'Age': age,
225              'Male_Weight': male_weight_data,
226              'Female_Weight': female_weight_data
227          })
228         
229          # 折线图
230          plt.figure(figsize=(10, 6))
231          sns.lineplot(data=weekly_weight_data, x='Age', y='Male_Weight', marker='o', label='男生')
232          sns.lineplot(data=weekly_weight_data, x='Age', y='Female_Weight', marker='o', label='女生')
233          plt.title('不同性别10-30岁每周称重数据', fontsize=16)
234          plt.xlabel('年龄', fontsize=12)
235          plt.ylabel('体重', fontsize=12)
236          plt.legend(title='性别')
237          plt.show()
238         import pandas as pd
239         import matplotlib.pyplot as plt
240         import seaborn as sns
241         import numpy as np
242         
243         # 生成示例数据
244         age = np.arange(10, 31)
245         male_weight_data = np.random.randint(50, 100, size=21)
246         female_weight_data = np.random.randint(40, 90, size=21)
247         
248          # 创建DataFrame
249          weekly_weight_data = pd.DataFrame({
250              'Age': age,
251              'Male_Weight': male_weight_data,
252              'Female_Weight': female_weight_data
253          })
254         
255          # 折线图
256          plt.figure(figsize=(10, 6))
257          sns.lineplot(data=weekly_weight_data, x='Age', y='Male_Weight', marker='o', label='男生')
258          sns.lineplot(data=weekly_weight_data, x='Age', y='Female_Weight', marker='o', label='女生')
259          plt.title('不同性别10-30岁每周称重数据', fontsize=16)
260          plt.xlabel('年龄', fontsize=12)
261          plt.ylabel('体重', fontsize=12)
262          plt.legend(title='性别')
263          plt.show()
264 
265         import pandas as pd
266 
267         import matplotlib.pyplot as plt
268 
269         import seaborn as sns
270 
271         import numpy as np
272         
273         # 生成示例数据
274         age = np.arange(10, 31)
275         male_weight_data = np.random.randint(50, 100, size=21)
276         female_weight_data = np.random.randint(40, 90, size=21)
277         
278          # 创建DataFrame
279          weekly_weight_data = pd.DataFrame({
280              'Age': age,
281              'Male_Weight': male_weight_data,
282              'Female_Weight': female_weight_data
283          })
284         
285          # 折线图
286          plt.figure(figsize=(10, 6))
287          sns.lineplot(data=weekly_weight_data, x='Age', y='Male_Weight', marker='o', label='男生')
288          sns.lineplot(data=weekly_weight_data, x='Age', y='Female_Weight', marker='o', label='女生')
289          plt.title('不同性别10-30岁每周称重数据', fontsize=16)
290          plt.xlabel('年龄', fontsize=12)
291          plt.ylabel('体重', fontsize=12)
292          plt.legend(title='性别')
293          plt.show()
294          import pandas as pd
295          import matplotlib.pyplot as plt
296 
297          # 读取数据文件
298          data = pd.read_csv('Frequency of weighing.csv')
299 
300          # 创建箱线图
301          plt.figure(figsize=(10, 6))
302          data.boxplot(column='the number of people', by='Frequency of weighing')
303          plt.xlabel('Frequency of weighing')
304          plt.ylabel('Number of people')
305          plt.title('Boxplot of Number of People by Frequency of Weighing')
306          plt.xticks(rotation=45)
307          plt.show()

 

 

 

六、大数据分析总结

  1. 性别分布:根据数据统计,女性的数量在所有年龄段中都高于男性。这表明女性更加注重体重管理和健康。

  2. 年龄分布:数据显示,在不同年龄段中,人们的称重频率存在一定差异。随着年龄的增长,人们更倾向于进行更频繁的称重。这可能与年龄对身体健康的关注度增加有关。

  3. 称重频率分布:大部分人的称重频率集中在每周1-2次或者3-5次。只有少数人选择每月进行2-3次或者不足每月1次的称重。同时,少数人选择几乎每天进行称重。

  4. 性别与称重频率的关系:女性相对于男性更倾向于进行较高频率的称重,尤其是在每日称重的群体中。这可能反映了女性对于体型和健康的更高关注度。

综上所述,根据提供的数据,我们可以看出女性在体重管理和健康方面的关注程度较高,并且随着年龄的增长,人们更加关注自己的体重情况。这些数据对于了解人们的健康意识和行为习惯具有一定的参考价值。

 

七、感言

在这门课程结束之际,我想向您致以最真挚的感谢。您的教诲和付出让我受益匪浅。通过您的引导和指导,我不仅学到了丰富的知识和技能。

这门课程不仅仅是知识的传授,更是一次宝贵的成长之旅。

再次感谢您的辛勤付出和教导,祝愿您一切顺利,并希望有机会再次与您学习。

衷心感谢,