一、选题背景介绍
在现代快节奏的生活中,越来越多的人开始关注自己的健康状况,并采取积极的措施来改善和维持健康。体重是一个重要的身体指标,对于评估健康状况和制定健康计划具有重要意义。 通过定期测量体重,人们可以了解自己的体重变化趋势,并将其与健康目标相比较。体重的增加或减少可能与饮食、运动、代谢等因素有关,因此,通过监测体重,人们可以更好地了解自己的健康状况,并采取相应的行动。
二、选题意义
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-5次。只有少数人选择每月进行2-3次或者不足每月1次的称重。同时,少数人选择几乎每天进行称重。
-
性别与称重频率的关系:女性相对于男性更倾向于进行较高频率的称重,尤其是在每日称重的群体中。这可能反映了女性对于体型和健康的更高关注度。
综上所述,根据提供的数据,我们可以看出女性在体重管理和健康方面的关注程度较高,并且随着年龄的增长,人们更加关注自己的体重情况。这些数据对于了解人们的健康意识和行为习惯具有一定的参考价值。
七、感言
在这门课程结束之际,我想向您致以最真挚的感谢。您的教诲和付出让我受益匪浅。通过您的引导和指导,我不仅学到了丰富的知识和技能。
这门课程不仅仅是知识的传授,更是一次宝贵的成长之旅。
再次感谢您的辛勤付出和教导,祝愿您一切顺利,并希望有机会再次与您学习。
衷心感谢,
标签:课程设计,plt,python,data,age,import,性别,人花,年龄段 From: https://www.cnblogs.com/lhh12138/p/17929512.html