Pandas 0.14.1 StataReader - 读取.dta文件

时间:2014-08-14 22:14:17

标签: python python-2.7 pandas stata

我正在尝试使用StataReader将Stata 13中的大型数据集导入到pandas中。这与pandas 0.13.1一起工作正常,但在我升级到0.14.1之后,读取.dta文件的能力似乎已经大大恶化。有没有人知道发生了什么(我在PANDAS网站的"什么是新的"部分找不到任何StataReader的变化),和/或如何解决这个问题?

重现我的问题的步骤:

  1. 在Stata 13中创建一个大型数据集:

    clear
    
    set obs 11500
    forvalues i = 1/8000{
    gen var`i' = 1
    }
    
    saveold bigdataset, replace
    
  2. 尝试使用StataReader将其读入pandas:

    from pandas.io.stata import StataReader
    
    reader = StataReader('bigdataset.dta')
    data = reader.data()
    
  3. 使用pandas 0.13.1,这需要大约220秒,这是可以接受的,但使用pandas 0.14.1,即使在等待大约20分钟后也没有发生任何事情。

    当我使用较小的数据集测试此问题时:

    1. 在Stata 13中创建一个较小的数据集:

      clear
      
      set obs 11500
      forvalues i = 1/1000{
      gen var`i' = 1
      }
      
      saveold smalldataset, replace
      
    2. 尝试使用StataReader将其读入pandas:

      from pandas.io.stata import StataReader
      
      reader = StataReader('smalldataset.dta')
      data = reader.data()
      
    3. 使用pandas 0.13.1,这需要大约20秒,但使用pandas 0.14.1,这需要大约300秒。

      我真的想升级到新的pandas版本并使用我的数据,大小与bigdataset.dta相当。有没有人知道我能有效导入数据的方法?

1 个答案:

答案 0 :(得分:0)

对于任何偶然发现并且对答案感兴趣的人 - 我根据Roberto的建议在熊猫Github页面上发布了这个问题,他们已经找到并修复了性能问题。它现在使用他们的主分支很好用!