pandas.read_stata#
- pandas.read_stata(filepath_or_buffer, *, convert_dates=True, convert_categoricals=True, index_col=None, convert_missing=False, preserve_dtypes=True, columns=None, order_categoricals=True, chunksize=None, iterator=False, compression='infer', storage_options=None)[源代码][源代码]#
将 Stata 文件读取到 DataFrame 中。
- 参数:
- filepath_or_bufferstr, 路径对象或类文件对象
任何有效的字符串路径都是可接受的。该字符串可以是一个URL。有效的URL方案包括http、ftp、s3和file。对于文件URL,需要一个主机。一个本地文件可以是:
file://localhost/path/to/table.dta
。如果你想传递一个路径对象,pandas 接受任何
os.PathLike
。通过类文件对象,我们指的是具有
read()
方法的对象,例如文件句柄(例如通过内置的open
函数)或StringIO
。- convert_dates布尔值, 默认为 True
将日期变量转换为 DataFrame 时间值。
- convert_categoricals布尔值, 默认为 True
读取值标签并将列转换为分类/因子变量。
- index_colstr, 可选
要设置为索引的列。
- convert_missing布尔值, 默认为 False
指示是否将缺失值转换为其 Stata 表示形式的标志。如果为 False,缺失值将被替换为 nan。如果为 True,包含缺失值的列将以对象数据类型返回,并且缺失值由 StataMissingValue 对象表示。
- preserve_dtypes布尔值, 默认为 True
保留 Stata 数据类型。如果为 False,数值数据会被转换为 pandas 对外部数据默认的数据类型(float64 或 int64)。
- 列列表或无
要保留的列。列将按给定的顺序返回。无返回所有列。
- order_categoricals布尔值, 默认为 True
指示转换后的分类数据是否有序的标志。
- chunksizeint, 默认为 None
返回用于迭代的 StataReader 对象,返回给定行数的块。
- 迭代器布尔值, 默认为 False
返回 StataReader 对象。
- 压缩str 或 dict,默认 ‘infer’
用于即时解压磁盘数据。如果 ‘infer’ 并且 ‘filepath_or_buffer’ 是类路径,则从以下扩展名检测压缩:’.gz’, ‘.bz2’, ‘.zip’, ‘.xz’, ‘.zst’, ‘.tar’, ‘.tar.gz’, ‘.tar.xz’ 或 ‘.tar.bz2’(否则不压缩)。如果使用 ‘zip’ 或 ‘tar’,ZIP 文件必须仅包含一个要读取的数据文件。设置为
None
表示不解压。也可以是一个字典,键'method'
设置为 {'zip'
,'gzip'
,'bz2'
,'zstd'
,'xz'
,'tar'
} 之一,其他键值对将转发给zipfile.ZipFile
,gzip.GzipFile
,bz2.BZ2File
,zstandard.ZstdDecompressor
,lzma.LZMAFile
或tarfile.TarFile
,分别。例如,以下内容可以传递用于使用自定义压缩字典的 Zstandard 解压:compression={'method': 'zstd', 'dict_data': my_compression_dict}
。Added in version 1.5.0: 增加了对 .tar 文件的支持。
- storage_optionsdict, 可选
对于特定存储连接有意义的额外选项,例如主机、端口、用户名、密码等。对于HTTP(S) URL,键值对会作为头选项转发到
urllib.request.Request
。对于其他URL(例如以“s3://”和“gcs://”开头),键值对会转发到fsspec.open
。请参阅fsspec
和urllib
获取更多详细信息,关于存储选项的更多示例请参考 这里。
- 返回:
- DataFrame, pandas.api.typing.StataReader
如果指定了迭代器或块大小,则返回 StataReader,否则返回 DataFrame。
参见
io.stata.StataReader
用于Stata数据文件的低级读取器。
DataFrame.to_stata
导出 Stata 数据文件。
备注
通过迭代器读取的分类变量可能没有相同的类别和数据类型。当存储在DTA文件中的变量与一组不完整的值标签相关联时,会发生这种情况,这些值标签仅标记值的严格子集。
示例
为这个例子创建一个虚拟状态
>>> df = pd.DataFrame({'animal': ['falcon', 'parrot', 'falcon', 'parrot'], ... 'speed': [350, 18, 361, 15]}) >>> df.to_stata('animals.dta')
读取一个 Stata dta 文件:
>>> df = pd.read_stata('animals.dta')
以 10,000 行为块读取 Stata dta 文件:
>>> values = np.random.randint(0, 10, size=(20_000, 1), dtype="uint8") >>> df = pd.DataFrame(values, columns=["i"]) >>> df.to_stata('filename.dta')
>>> with pd.read_stata('filename.dta', chunksize=10000) as itr: >>> for chunk in itr: ... # Operate on a single chunk, e.g., chunk.mean() ... pass