假设和虚假数据框架

时间:2019-01-30 15:08:26

标签: python-hypothesis

我正在使用假设来测试数据帧,当它们为“空虚”时,我会得到一些意外的行为。

在下面的示例中,我有一个所有nan的数据框,并且它被视为NoneType对象而不是数据框(因此它没有属性notnull()):

Falsifying example: test_merge_csvs_properties(input_df_dict=    {'googletrend.csv':    file  week  trend
 0   NaN   NaN    NaN                                                        
 1   NaN   NaN    NaN                                                        
 2   NaN   NaN    NaN
 3   NaN   NaN    NaN                                 
 4   NaN   NaN    NaN                                                                                                                                                                                  5   NaN   NaN    NaN}
<snip>
Traceback (most recent call last):
  File "/home/chachi/Capstone-SalesForecasting/tests/test_make_dataset_with_composite.py", line 285, in test_merge_csvs_properties                                                                   
    input_dataframe, df_dict = make_dataset.merge_csvs(input_df_dict)
  File "/home/chachi/Capstone-SalesForecasting/tests/../src/data/make_dataset.py", line 238, in merge_csvs                                                                                           
    if dfs_dict['googletrend.csv'].notnull().any().any():
AttributeError: 'NoneType' object has no attribute 'notnull'

与ipython会话比较,其中所有nan的数据框仍然是数据框:

>>> import pandas as pd
>>> import numpy as np
>>> tester = pd.DataFrame({'test': [np.NaN]})
>>> tester
   test
0   NaN
>>> tester.notnull().any().any()
False

我正在明确测试notnull(),以考虑各种病理示例。有什么建议吗?

1 个答案:

答案 0 :(得分:0)

您似乎以某种方式以无(None)而不是数据帧作为input_dfs_dict中的那个值而结束。您能否发布正在使用的完整测试,或者至少发布功能定义和策略?仅回溯并没有足够的信息来说明正在发生的事情。快速检查:

  • 该策略可以在此处生成None而不是生成数据框吗?如果是这样,那就没有什么神秘的了,因为假设报告它可以触发AttributeError。
  • 如果没有,您可以仅使用此数据框的逻辑和策略来编写更简单的测试吗?