首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将.dta读入Python

如何将.dta读入Python
EN

Stack Overflow用户
提问于 2022-03-20 18:04:05
回答 1查看 291关注 0票数 1

我想从http://fmwww.bc.edu/ec-p/data/wooldridge/401k.dta读取数据。我试过在下面,

代码语言:javascript
复制
import pandas as pd
import pyreadstat as pyreadstat

dataframe, meta = pyreadstat.read_dta("http://fmwww.bc.edu/ec-p/data/wooldridge/401k.dta")

有了这个,我的错误就少了。

代码语言:javascript
复制
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "pyreadstat/pyreadstat.pyx", line 260, in pyreadstat.pyreadstat.read_dta
  File "pyreadstat/_readstat_parser.pyx", line 1012, in pyreadstat._readstat_parser.run_conversion
pyreadstat._readstat_parser.PyreadstatError: File http://fmwww.bc.edu/ec-p/data/wooldridge/401k.dta does not exist!

我也尝试过使用pandas,但是失败了

代码语言:javascript
复制
>>> Data = pd.read_stata("http://fmwww.bc.edu/ec-p/data/wooldridge/401k.dta")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python3.9/site-packages/pandas/io/stata.py", line 1898, in read_stata
    reader = StataReader(
  File "/usr/local/lib/python3.9/site-packages/pandas/io/stata.py", line 1066, in __init__
    self._read_header()
  File "/usr/local/lib/python3.9/site-packages/pandas/io/stata.py", line 1095, in _read_header
    self._read_old_header(first_char)
  File "/usr/local/lib/python3.9/site-packages/pandas/io/stata.py", line 1299, in _read_old_header
    raise ValueError(_version_error.format(version=self.format_version))
ValueError: Version of given Stata file is 110. pandas supports importing versions 105, 108, 111 (Stata 7SE), 113 (Stata 8/9), 114 (Stata 10/11), 115 (Stata 12), 117 (Stata 13), 118 (Stata 14/15/16),and 119 (Stata 15/16, over 32,767 variables).

然而,使用R,我可以使用数据下载它,没有任何问题,

代码语言:javascript
复制
> head(read.dta("http://fmwww.bc.edu/ec-p/data/wooldridge/401k.dta"))
  prate mrate totpart totelg age totemp sole  ltotemp
1  26.1  0.21    1653   6322   8   8709    0 9.072112
2 100.0  1.42     262    262   6    315    1 5.752573
3  97.6  0.91     166    170  10    275    1 5.616771
4 100.0  0.42     257    257   7    500    0 6.214608
5  82.5  0.53     591    716  28    933    1 6.838405
6 100.0  1.82      92     92   7    143    1 4.962845

你能帮我用Python下载这些数据吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-20 18:47:42

代码语言:javascript
复制
import requests
import pyreadstat

url = 'http://fmwww.bc.edu/ec-p/data/wooldridge/401k.dta'

def download_file(url):
    local_filename = url.split('/')[-1]
    with requests.get(url, stream=True) as r:
        r.raise_for_status()
        with open(local_filename, 'wb') as f:
            for chunk in r.iter_content(chunk_size=8192): 
                f.write(chunk)
    return local_filename

# download_file(url)

df, meta = pyreadstat.read_dta(download_file(url))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71549342

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档