如何通过pandas导入.dta并描述数据?

时间:2016-08-21 13:28:57

标签: python-3.x pandas import error-handling stata

我是python的新手并且有一个简单的问题。在第一步中,我想加载我在Stata中创建的一些示例数据。在第二步中,我想描述python中的数据 - 也就是说,我喜欢导入的变量名列表。到目前为止,我已经做到了这一点:

from pandas.io.stata import StataReader

reader = StataReader('sample_data.dta')
data = reader.data()

dir()

我收到以下错误:

anaconda/lib/python3.5/site-packages/pandas/io/stata.py:1375: UserWarning: 'data' is deprecated, use 'read' instead
  warnings.warn("'data' is deprecated, use 'read' instead")

这是什么意思,我该如何解决这个问题?并且,dir()是了解数据中我的变量的正确方法吗?

2 个答案:

答案 0 :(得分:1)

使用pandas.io.stata.StataReader.datav[0]文件中读取已在MySphere::operator()版本中弃用,因此您收到了警告。

相反,您必须使用pandas.read_stata来读取文件,如下所示:

stata

答案 1 :(得分:0)

有时候这对我不起作用,尤其是在数据集很大时。所以我在这里建议的是两个步骤(Stata和Python)

在Stata中编写以下命令:

export excel Cevdet.xlsx, firstrow(variables)

要复制变量标签,请写以下内容

describe, replace
    list
    export excel using myfile.xlsx, replace first(var)
restore

这将为您生成两个文件Cevdet.xlsxmyfile.xlsx

现在您要去Jupyter笔记本

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_excel('Cevdet.xlsx')

这将允许您将两个文件读入jupyter(python 3)

我的建议是保存此数据文件(尤其是大文件时)

df.to_pickle('Cevdet')

下次打开jupyter时,您只需运行

df=pd.read_pickle("Cevdet")