pandas.read_stata #
- 熊猫。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 ,迭代器= False ,压缩= 'infer' , storage_options =无) [来源] #
将 Stata 文件读入 DataFrame。
- 参数:
- filepath_or_buffer str,路径对象或类文件对象
任何有效的字符串路径都是可接受的。该字符串可以是 URL。有效的 URL 方案包括 http、ftp、s3 和 file。对于文件 URL,需要一个主机。本地文件可以是:
file://localhost/path/to/table.dta
.如果你想传入一个路径对象,pandas 接受任何
os.PathLike
.通过类文件对象,我们引用具有
read()
方法的对象,例如文件句柄(例如通过内置open
函数)或StringIO
.- Convert_dates bool, 默认 True
将日期变量转换为 DataFrame 时间值。
- Convert_categoricals bool, 默认 True
读取值标签并将列转换为分类/因子变量。
- index_col str,可选
要设置为索引的列。
- Convert_missing bool,默认 False
指示是否将缺失值转换为其 Stata 表示形式的标志。如果为 False,则缺失值将替换为 nan。如果为 True,则包含缺失值的列将以对象数据类型返回,缺失值由 StataMissingValue 对象表示。
- keep_dtypes bool, 默认 True
保留 Stata 数据类型。如果为 False,则数字数据将向上转换为 pandas 外部数据的默认类型(float64 或 int64)。
- 列列表或无
要保留的列。列将按给定顺序返回。 None 返回所有列。
- order_categoricals bool, 默认 True
指示转换后的分类数据是否有序的标志。
- chunksize int,默认无
返回 StataReader 对象进行迭代,返回具有给定行数的块。
- 迭代器bool,默认 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'
之一的字典,其他键值对分别转发到 , , , ,或 。作为示例,可以使用自定义压缩字典传递以下内容以进行 Zstandard 解压缩: 。'zip'
'gzip'
'bz2'
'zstd'
'xz'
'tar'
zipfile.ZipFile
gzip.GzipFile
bz2.BZ2File
zstandard.ZstdDecompressor
lzma.LZMAFile
tarfile.TarFile
compression={'method': 'zstd', 'dict_data': my_compression_dict}
1.5.0 版本中的新增功能:添加了对.tar文件的支持。
- storage_options字典,可选
对于特定存储连接有意义的额外选项,例如主机、端口、用户名、密码等。对于 HTTP(S) URL,键值对将
urllib.request.Request
作为标头选项转发。对于其他 URL(例如以“s3://”和“gcs://”开头),键值对将转发到fsspec.open
。请参阅fsspec
和urllib
了解更多详细信息,有关存储选项的更多示例,请参阅此处。
- 返回:
- DataFrame 或 pandas.api.typing.StataReader
也可以看看
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