import numpy as np import pandas as pd from matplotlib import pyplot as plt nasa=pd.read_table(r"Y:WorkplaceBigDatapercent-bachelors-degrees-women-usa.txt") def str2float(tallstr):#测试数据转换 try: return float(tallstr) except: return np.nan nasa["身高"]=nasa["身高"].map(str2float)#遍历数据且清理 print(nasa["身高"].isnull().sum())#统计nan print(nasa[nasa["身高"].isnull()].index)#统计哪一行非法 newnasa=nasa.dropna()#去除垃圾数据 result=newnasa.groupby("年龄")["身高"]#根据年龄和身高分组 def age_mean(group):#判断每一组 if group.size<100:#小于100cm当作nan return np.nan else: return group.mean()#返回平均值 last_retult=result.apply(age_mean)#保存结果,调用函数处理年龄身高分组 last_retult.head(10)#查看前十个 last_retult[0:30].plot()#画图,前30个