【发布时间】:2020-07-26 01:37:46
【问题描述】:
当我使用 pandas 读取 csv 文件时,我使用字典 (dict_types) 设置 dtype 以节省内存:
dict_types = {
"Id": "object",
"COD_OPE": "object",
"NUM_OPE": "float32",
"STR_ANA": "category",
"COD_EXO": "category",
"NUM_CPT": "object",
"MTT_DEV": "float32",
"SEN_MTT": "category",
}
columns = [
"Id",
"COD_OPE",
"NUM_OPE",
"STR_ANA",
"COD_EXO",
"NUM_CPT",
"MTT_DEV",
"SEN_MTT",
"DTE_OPE",
"DTE_CPT",
"DTE_VAL",
"DTE_TRT"
]
df_chunk = pd.read_csv(
"../SIDP_Operations/SAB_OPE_02_2020/SAB_OPE_02_2020.rpt",
sep="\t",
dtype=dict_types,
usecols=columns,
error_bad_lines=False,
chunksize=1000000,
parse_dates=["DTE_OPE", "DTE_CPT", "DTE_VAL", "DTE_TRT"],
infer_datetime_format=True,
)
但是,当文件被加载并且我查看df.info() 和df.dtypes 时,它告诉我STR_ANA 的类型是object,而我希望它应该是category。
而“COD_EXO”“SEN_MTT”确实是类型category
为什么?
也许是因为我使用 chunk 的方式? 实际上我这样做是为了读取数据帧
chunk_list=[]
for chunk in df_chunk:
chunk_list.append(chunk)
df=pd.concat(chunk_list,ignore_index=True)
【问题讨论】:
-
您是否尝试在导入数据后使用
df_chunk['STR_ANA'] = df_chunk['STR_ANA'].astype('category')手动转换? -
df_chunk.dtypes()的输出是什么? -
是的,使用
df_chunk['STR_ANA'] = df_chunk['STR_ANA'].astype('category')会起作用,但我想做的是在开始读取数据时节省内存,因为我的电脑读取所有数据太差了.. . -
df_chunk.dtypes()也是冒号“STR_ANA”和其他应该属于类别的冒号的对象...
标签: python pandas data-science