Navigation

    Gpushare.com

    • Register
    • Login
    • Search
    • Popular
    • Categories
    • Recent
    • Tags

    【杂谈】记一个关于Pandas读取csv文件的警告

    技术分享📚有奖励
    1
    1
    68
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • 173****7719
      173****7719 last edited by

      前言

      我习惯于把实验结果存储成csv文件,然后一般用pandas读取csv,如下

      import pandas as pd
      df = pd.read('XXX.csv')
      

      没想到就这么一行代码,今天竟然报警了。

      警告信息

      “DtypeWarning:Column (6,7) have mixed types. Specify dtype option on import or set low_memory=False.”

      解决方案

      经过搜索才知道,这个警告信息的重点在mixed types,原来pandas在读取数据的时候,由于没有明确每一列的数据类型,它是靠猜(某个算法)的,这个过程需要耗费比较大的memory,这就引出了以下解决方案

      1. 别让它猜,读取的时候明确每一列的数据类型,如
      df = pd.read('XXX.csv', dtype={"model": np.string_, "predict": np.int8, "actual": np.int8, "confidence": np.float16})
      df_new  = 
      df = pd.concat([df, df_new], ignore_index=True)
      # 明确数据类型后,这样我们就可以放心的去更新这个csv文件了
      
      1. 既然每一列的数据类型需要统一,那么存储的时候也要讲究规范,在存储的时候, 可以把所有小数类型统一以下,
      df.to_csv('results.csv', float_format=np.float16, index=False)
      

      启示

      有些时候用同样的代码去读取和存储数据时,没有遇到问题,但是如果中途改动了代码,再想要读取和存储数据时,过程不规范所产生的问题可能就会暴露出来,注意一些基础的规范可以帮助我们避免遇到不必要的bug。

      1 Reply Last reply Reply Quote 1
      • First post
        Last post