python - 获得“无”的输出,但不确定究竟是什么触发了它
问题描述
我有一个绘制两个直方图的函数,以及一个从家庭作业问题中给我的表格中计算一些统计数据的方法。当我在我的 jupyter notebook 中运行这个函数时,我得到以下输出:
None #Not quite sure where this came from
(26.54, 4269775.77) #This is calculated correctly
<histogram 1> #This is rendered correctly
<histogram 2> #This is also rendered correctly
而我的预期输出应该只是
(26.54, 4269775.77)
<histogram 1>
<histogram 2>
我尝试注释掉不同的行以查看是否可以隔离问题,但无济于事。下面是我正在运行的代码,它对应于上面的输出
def compute_statistics(age_and_salary_data):
t = full_data
age = t.column('Age')
salary = t.column('Salary')
age_and_salary_data = Table().with_columns('Age', age, 'Salary', salary)
print(age_and_salary_data.hist('Age', bins = (np.arange(18,np.max(age)+1,1))))
average_age = np.mean(age)
average_salary = np.mean(salary)
average_list = (np.round(average_age, 2), np.round(average_salary,2))
return age_and_salary_data.hist('Salary', bins = np.arange(0,np.max(salary)+1, 1000000))
average_age = np.mean(full_data.column('Age'))
average_salary = np.mean(salary_data.column('Salary'))
average_list = (np.round(average_age, 2), np.round(average_salary, 2))
compute_statistics(full_data)
print(average_list)
当我通过评分器运行此程序时,我遇到了以下关于为什么我得到错误答案的答案。
>>> round(float(compute_statistics(full_data)[0]), 2) == 26.54
None
TypeError: 'NoneType' object is not subscriptable
# Error: expected
# True
# but got
# Traceback (most recent call last):
# ...
# TypeError: 'NoneType' object is not subscriptable
解决方案
一直在玩这个函数,并且能够通过删除print
函数中的语句compute_statistics
并将直方图渲染为返回,就像其他直方图一样,能够摆脱讨厌的 None 。以供参考:
def compute_statistics(age_and_salary_data):
age = full_data.column('Age')
salary = salary_data.column('Salary')
age_and_salary_data = Table().with_columns('Age', age, 'Salary', salary)
average_age = np.mean(age)
average_salary = np.mean(salary)
average_list = (np.round(average_age, 2), np.round(average_salary,2))
return age_and_salary_data.hist('Salary', bins = np.arange(min(salary),max(salary)+1, 1000000)), age_and_salary_data.hist('Age', bins = (np.arange(min(age),max(age)+1,1)))
average_age = np.mean(full_data.column('Age'))
average_salary = np.mean(salary_data.column('Salary'))
average_list = (np.round(average_age, 2), np.round(average_salary, 2))
compute_statistics(full_data)
print(average_list)
虽然这已经解决了我的问题并且我想可以被认为是一个答案,但我仍然不确定为什么做我所做的工作而不是使用打印声明,并且任何见解都将不胜感激
推荐阅读
- amazon-web-services - 如何使用 AWS Glue 仅在特定分区上应用作业
- flutter - 在后台使用 googleapis 将文件上传到 google 驱动器 (Flutter)
- javascript - 可编辑表单 ActiveRecord::RecordNotFound(找不到带有 'id'=undefined 的视频)
- python - 如何重塑数据集使其只有一列?
- mongodb - MongoDB聚合:过滤器中的日期比较不起作用
- r - 使用 mlogit R 函数时出错:两个索引未定义唯一观察值
- python - 如何将 groupby 结果分配给 pandas 中的系列
- php - Symfony 5 部署问题(显示空白页面)
- elasticsearch - 在 Elasticsearch 中创建直方图
- php - 带有 Workerman 的 PHP websockets - nginx 配置