返回浏览
No Image
简介
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from matplotlib.font_manager import FontProperties
import matplotlib.patches as patches
# 设置中文字体
plt.rcParams['font.sans-serif'] = ['SimHei'] # 用黑体显示中文
plt.rcParams['axes.unicode_minus'] = False # 正常显示负号
# ==================== 第一部分:群体数据分析 ====================
# 生成模拟数据
def generate_strong_woman_data(num_samples=100):
np.random.seed(42) # 确保结果可重现
data = {
'身高_cm': np.random.normal(172, 5, num_samples), # 平均身高172cm
'体重_kg': np.random.normal(65, 6, num_samples), # 平均体重65kg
'肩宽_cm': np.random.normal(40, 2, num_samples), # 肩宽
'胸围_cm': np.random.normal(95, 4, num_samples), # 胸围
'腰围_cm': np.random.normal(70, 4, num_samples), # 腰围
'臀围_cm': np.random.normal(98, 4, num_samples), # 臀围
'上臂围_cm': np.random.normal(32, 3, num_samples), # 上臂围
'大腿围_cm': np.random.normal(58, 4, num_samples), # 大腿围
'体脂率_%': np.random.normal(18, 3, num_samples), # 体脂率
}
return pd.DataFrame(data)
# 生成群体数据
df_group = generate_strong_woman_data()
# 计算BMI指数
df_group['BMI'] = df_group['体重_kg'] / ((df_group['身高_cm']/100) ** 2)
print("=" * 60)
print("女强人群体身体数据统计摘要:")
print("=" * 60)
print(df_group.describe())
print("\n身体指标相关性矩阵:")
print(df_group.corr())
# 群体数据可视化
fig, axes = plt.subplots(2, 3, figsize=(18, 12))
fig.suptitle('女强人群体身体部位数据分析', fontsize=20, fontweight='bold')
# 身高分布
axes[0, 0].hist(df_group['身高_cm'], bins=15, color='skyblue', edgecolor='black', alpha=0.7)
axes[0, 0].set_title('身高分布', fontsize=15)
axes[0, 0].set_xlabel('身高 (cm)')
axes[0, 0].set_ylabel('频数')
# 体重分布
axes[0, 1].hist(df_group['体重_kg'], bins=15, color='lightcoral', edgecolor='black', alpha=0.7)
axes[0, 1].set_title('体重分布', fontsize=15)
axes[0, 1].set_xlabel('体重 (kg)')
axes[0, 1].set_ylabel('频数')
# 体脂率分布
axes[0, 2].hist(df_group['体脂率_%'], bins=15, color='lightgreen', edgecolor='black', alpha=0.7)
axes[0, 2].set_title('体脂率分布', fontsize=15)
axes[0, 2].set_xlabel('体脂率 (%)')
axes[0, 2].set_ylabel('频数')
# 三围对比
measurements = ['胸围_cm', '腰围_cm', '臀围_cm']
means = [df_group[col].mean() for col in measurements]
axes[1, 0].bar(measurements, means, color=['pink', 'lightblue', 'lightyellow'])
axes[1, 0].set_title('三围平均值对比', fontsize=15)
axes[1, 0].set_ylabel('厘米 (cm)')
# 身高体重散点图
axes[1, 1].scatter(df_group['身高_cm'], df_group['体重_kg'], alpha=0.6, color='purple')
axes[1, 1].set_title('身高与体重关系', fontsize=15)
axes[1, 1].set_xlabel('身高 (cm)')
axes[1, 1].set_ylabel('体重 (kg)')
# BMI分布
axes[1, 2].hist(df_group['BMI'], bins=15, color='orange', edgecolor='black', alpha=0.7)
axes[1, 2].axvline(x=18.5, color='red', linestyle='--', label='偏瘦')
axes[1, 2].axvline(x=24, color='green', linestyle='--', label='正常')
axes[1, 2].axvline(x=28, color='red', linestyle='--', label='偏胖')
axes[1, 2].set_title('BMI指数分布', fontsize=15)
axes[1, 2].set_xlabel('BMI')
axes[1, 2].set_ylabel('频数')
axes[1, 2].legend()
plt.tight_layout()
plt.show()
# 群体数据相关性热图
plt.figure(figsize=(12, 8))
corr = df_group.corr()
mask = np.triu(np.ones_like(corr, dtype=bool))
sns.heatmap(corr, mask=mask, annot=True, cmap='coolwarm', center=0, square=True)
plt.title('群体身体指标相关性热图', fontsize=16)
plt.tight_layout()
plt.show()
# 输出一个群体样本的详细数据
print("\n群体样本个体详细数据:")
sample = df_group.iloc[0]
for idx, value in sample.items():
print(f"{idx}: {value:.2f}")
# ==================== 第二部分:林晚晴个人数据分析 ====================
# 创建林晚晴的个人身体数据
lin_wanqing_data = {
'姓名': '林晚晴',
'年龄': 32,
'身高_cm': 168.5,
'体重_kg': 58.2,
'BMI': 20.5,
'肩宽_cm': 37.8,
'胸围_cm': 96.5, # D罩杯
'下胸围_cm': 78.5,
'腰围_cm': 66.3,
'臀围_cm': 102.4, # 梨形身材,臀部较丰满
'上臂围_cm': 28.7,
'大腿围_cm': 56.8,
'小腿围_cm': 35.2,
'体脂率_%': 21.3,
'皮肤白皙度': 9.2, # 0-10评分,10为最白
'脸部形状': '瓜子脸',
'身体柔软度': 8.7, # 0-10评分,10为最柔软
'cup_size': 'D'
}
# 创建数据框
df_lin = pd.DataFrame([lin_wanqing_data])
# 计算腰臀比
df_lin['腰臀比'] = df_lin['腰围_cm'] / df_lin['臀围_cm']
print("\n" + "=" * 60)
print("林晚晴身体数据详情:")
print("=" * 60)
for key, value in lin_wanqing_data.items():
if isinstance(value, float):
print(f"{key}: {value:.2f}")
else:
print(f"{key}: {value}")
print("\n身体指标分析:")
print("=" * 50)
print(f"BMI指数: {df_lin['BMI'].values[0]:.1f} (正常范围)")
print(f"腰臀比: {df_lin['腰臀比'].values[0]:.2f} (梨形身材特征明显)")
print(f"皮肤白皙度: {df_lin['皮肤白皙度'].values[0]:.1f}/10 (非常白皙)")
print(f"身体柔软度: {df_lin['身体柔软度'].values[0]:.1f}/10 (非常柔软)")
# 与群体数据对比
print("\n与群体数据对比:")
print("=" * 50)
print(f"身高: {df_lin['身高_cm'].values[0]:.1f}cm (群体平均: {df_group['身高_cm'].mean():.1f}cm)")
print(f"体重: {df_lin['体重_kg'].values[0]:.1f}kg (群体平均: {df_group['体重_kg'].mean():.1f}kg)")
print(f"胸围: {df_lin['胸围_cm'].values[0]:.1f}cm (群体平均: {df_group['胸围_cm'].mean():.1f}cm)")
print(f"腰围: {df_lin['腰围_cm'].values[0]:.1f}cm (群体平均: {df_group['腰围_cm'].mean():.1f}cm)")
print(f"臀围: {df_lin['臀围_cm'].values[0]:.1f}cm (群体平均: {df_group['臀围_cm'].mean():.1f}cm)")
print(f"体脂率: {df_lin['体脂率_%'].values[0]:.1f}% (群体平均: {df_group['体脂率_%'].mean():.1f}%)")
# 林晚晴数据可视化展示
fig = plt.figure(figsize=(16, 12))
fig.suptitle('林晚晴 - 身体数据分析', fontsize=20, fontweight='bold')
# 身体指标雷达图
ax1 = plt.subplot(2, 3, 1, polar=True)
categories = ['身高', '体重', '胸围', '腰围', '臀围', '体脂率']
values = [df_lin['身高_cm'].values[0]/200*5,
df_lin['体重_kg'].values[0]/80*5,
df_lin['胸围_cm'].values[0]/120*5,
df_lin['腰围_cm'].values[0]/100*5,
df_lin['臀围_cm'].values[0]/120*5,
5 - df_lin['体脂率_%'].values[0]/40*5] # 体脂率越低越好
angles = np.linspace(0, 2*np.pi, len(categories), endpoint=False).tolist()
values += values[:1]
angles += angles[:1]
ax1.plot(angles, values, 'o-', linewidth=2, color='pink')
ax1.fill(angles, values, alpha=0.25, color='pink')
ax1.set_thetagrids(np.degrees(angles[:-1]), categories)
ax1.set_ylim(0, 5)
ax1.set_title('身体指标雷达图', fontsize=15, pad=20)
# 三围对比
ax2 = plt.subplot(2, 3, 2)
measurements = ['胸围', '腰围', '臀围']
values = [df_lin['胸围_cm'].values[0],
df_lin['腰围_cm'].values[0],
df_lin['臀围_cm'].values[0]]
colors = ['lightcoral', 'lightgreen', 'lightblue']
bars = ax2.bar(measurements, values, color=colors, alpha=0.7)
ax2.set_ylabel('厘米 (cm)')
ax2.set_title('三围数据对比', fontsize=15)
# 在柱状图上添加数值标签
for bar, value in zip(bars, values):
height = bar.get_height()
ax2.text(bar.get_x() + bar.get_width()/2., height + 0.5,
f'{value}cm', ha='center', va='bottom')
# 身体特征评分
ax3 = plt.subplot(2, 3, 3)
features = ['皮肤白皙度', '身体柔软度']
values = [df_lin['皮肤白皙度'].values[0],
df_lin['身体柔软度'].values[0]]
colors = ['lavender', 'thistle']
bars = ax3.bar(features, values, color=colors, alpha=0.7)
ax3.set_ylim(0, 10)
ax3.set_ylabel('评分 (0-10)')
ax3.set_title('身体特征评分', fontsize=15)
# 在柱状图上添加数值标签
for bar, value in zip(bars, values):
height = bar.get_height()
ax3.text(bar.get_x() + bar.get_width()/2., height + 0.1,
f'{value}/10', ha='center', va='bottom')
# 身材类型示意图
ax4 = plt.subplot(2, 3, 4)
# 绘制梨形身材简图
x = [0.5, 0.5, 0.3, 0.7, 0.5]
y = [0.1, 0.5, 0.7, 0.7, 0.9]
ax4.plot(x, y, 'k-', linewidth=3)
ax4.fill(x, y, color='lightpink', alpha=0.5)
ax4.text(0.5, 0.05, '梨形身材', ha='center', fontsize=14, fontweight='bold')
ax4.set_xlim(0, 1)
ax4.set_ylim(0, 1)
ax4.axis('off')
ax4.set_title('身材类型: 梨形身材', fontsize=15)
# 脸部形状示意图
ax5 = plt.subplot(2, 3, 5)
# 绘制瓜子脸简图
x = [0.5, 0.4, 0.5, 0.6, 0.5]
y = [0.9, 0.6, 0.7, 0.6, 0.9]
ax5.plot(x, y, 'k-', linewidth=3)
ax5.fill(x, y, color='wheat', alpha=0.5)
ax5.text(0.5, 0.5, '瓜子脸', ha='center', fontsize=14, fontweight='bold')
ax5.set_xlim(0.3, 0.7)
ax5.set_ylim(0.5, 1)
ax5.axis('off')
ax5.set_title('脸部形状: 瓜子脸', fontsize=15)
# 乳房大小示意图
ax6 = plt.subplot(2, 3, 6)
cup_sizes = ['A', 'B', 'C', 'D']
cup_values = [1, 2, 3, 4]
colors = ['lightblue', 'lightgreen', 'lightyellow', 'lightcoral']
bars = ax6.bar(cup_sizes, cup_values, color=colors, alpha=0.6)
ax6.set_ylim(0, 5)
ax6.set_ylabel('罩杯大小')
ax6.set_title('乳房大小: D罩杯', fontsize=15)
# 高亮显示D罩杯
bars[3].set_alpha(1.0)
bars[3].set_edgecolor('red')
bars[3].set_linewidth(2)
plt.tight_layout()
plt.show()
# 生成身体数据报告
print("\n" + "="*60)
print("林晚晴身体数据综合分析报告")
print("="*60)
print("1. 基本特征:")
print(f" 林晚晴,32岁,身高168.5cm,体重58.2kg,BMI指数20.5,属于健康范围。")
print(f" 拥有典型的梨形身材,腰围66.3cm,臀围102.4cm,腰臀比0.65,凸显曲线美。")
print()
print("2. 突出特点:")
print(f" - 乳房: D罩杯(胸围96.5cm,下胸围78.5cm),丰满挺拔")
print(f" - 臀部: 102.4cm,丰满上翘,梨形身材的典型特征")
print(f" - 皮肤: 白皙度评分9.2/10,肌肤雪白细腻")
print(f" - 脸型: 标准的瓜子脸,五官精致")
print(f" - 柔软度: 评分8.7/10,身体柔韧性极佳")
print()
print("3. 与群体对比:")
print(f" 身高略低于群体平均值({df_group['身高_cm'].mean():.1f}cm),但体重控制更好。")
print(f" 胸围和臀围均高于群体平均值,腰围低于群体平均值,呈现出更好的曲线比例。")
print(f" 体脂率略高于群体平均值({df_group['体脂率_%'].mean():.1f}%),但仍处于健康范围。")
print()
print("4. 整体评价:")
print(" 林晚晴拥有令人羡慕的梨形身材,曲线优美,皮肤白皙,兼具力量感与女性魅力。")
print(" 作为一位成功的女强人,她的外在形象与内在气质相得益彰,展现出自信与优雅。")