【问题标题】:Proper way of writing and reading Dataframe to file in Python在 Python 中写入和读取 Dataframe 到文件的正确方法
【发布时间】:2017-08-21 06:21:34
【问题描述】:

我想在 Python 中编写并稍后读取数据帧。

df_final.to_csv(self.get_local_file_path(hash,dataset_name), sep='\t', encoding='utf8')
...
df_final = pd.read_table(self.get_local_file_path(hash,dataset_name), encoding='utf8',index_col=[0,1])

然后我得到:

sys:1: DtypeWarning: 列 (7,17,28) 具有混合类型。指定数据类型 导入选项或设置 low_memory=False。

我发现了这个question。在底线中说我应该在读取文件时指定字段类型,因为“low_memory”已被弃用......我发现它非常低效。

没有一种简单的方法来编写和稍后读取数据帧吗?我不关心文件的可读性。

【问题讨论】:

    标签: python file pandas dataframe


    【解决方案1】:

    你可以腌制你的数据框:

    df_final.to_pickle(self.get_local_file_path(hash,dataset_name))
    

    稍后再读:

    df_final = pd.read_pickle(self.get_local_file_path(hash,dataset_name))
    

    如果您的数据框很大并且速度变慢,则使用 HDF5 格式可能会更幸运:

    df_final.to_hdf(self.get_local_file_path(hash,dataset_name))
    

    稍后再读:

    df_final = pd.read_hdf(self.get_local_file_path(hash,dataset_name))
    

    您可能需要先安装 PyTables。

    两种方式都存储数据及其类型。因此,这应该可以解决您的问题。

    【讨论】:

      【解决方案2】:

      警告是因为 Pandas 在您的列中检测到冲突的数据值。如果您愿意,可以在 DataFrame 构造函数中指定数据类型。

      ,dtype={'FIELD':int,'FIELD2':str} 
      

      等等

      【讨论】:

        猜你喜欢
        • 2012-09-04
        • 1970-01-01
        • 1970-01-01
        • 2012-11-12
        • 1970-01-01
        • 2015-03-24
        • 2020-02-26
        • 2022-01-23
        • 1970-01-01
        相关资源
        最近更新 更多