新手求助:如何用Pandas制作动物体重频数直方图?
修正后的动物体重直方图代码
你的原代码逻辑偏离了需求——你是按动物物种分组统计数量,导致X轴变成了物种名,完全不符合“X轴为体重值、Y轴为对应体重的动物数量”的要求。下面是新手友好的简洁代码:
import pandas as pd import matplotlib.pyplot as plt # 读取数据:Windows路径加r前缀避免反斜杠转义问题,sep='\t'适配制表符分隔的文件 df = pd.read_csv(r"S:\Annee1\ISD\TP3\PanTHERIA_1-0_WR05_Aug2008.txt", sep='\t') # 提取体重列,删除空值(避免画图报错) body_mass = df['5-1_AdultBodyMass_g'].dropna() # 方法1:针对离散体重值,统计每个体重对应的动物数量 weight_counts = body_mass.value_counts().sort_index() weight_counts.plot.bar(figsize=(12, 6), rot=45) # 方法2:针对连续体重值(更常见),按区间统计数量(注释掉上面的方法1,解开下面的注释即可用) # body_mass.plot.hist(bins=20, figsize=(12, 6)) # 设置图表标签和标题 plt.title('动物体重分布', fontsize=14) plt.xlabel('体重(克)', fontsize=12) plt.ylabel('动物数量', fontsize=12) # 自动调整布局,防止标签被截断 plt.tight_layout() # 显示图表 plt.show()
关键说明:
- 路径用
r"..."是新手避坑技巧:避免Windows路径里的反斜杠被当作转义字符 dropna()删除体重列的空值,防止画图时触发错误- 两种方法按需选:方法1适合体重是离散值的场景,直接展示每个体重对应的动物数;方法2是连续数据的标准直方图,按区间分组统计
- 原代码的
groupby('MSW05_Binomial')是按物种分组,完全偏离了“统计体重分布”的目标,所以要去掉
内容的提问来源于stack exchange,提问作者Calvin Graf
相关产品推荐
相关产品推荐

