首页 > 其他分享 >pandas读取CSV文件时出现警告:DtypeWarning: Columns (2) have mixed types. Specify dtype option on import or set

pandas读取CSV文件时出现警告:DtypeWarning: Columns (2) have mixed types. Specify dtype option on import or set

时间:2024-05-14 17:32:24浏览次数:15  
标签:False 读取 low csv pandas Specify names

问题描述:

用pandas清洗数据时发现爆出告警,且清洗出来的数据大小格式不对

DtypeWarning: Columns (2) have mixed types. Specify dtype option on import or set low_memory=False

意思是第二列出现类型混乱,原因如下

pandas读取csv文件默认是按块读取的,即不一次性全部读取;
另外pandas对数据的类型是完全靠猜的,所以pandas每读取一块数据就对csv字段的数据类型进行猜一次,所以有可能pandas在读取不同块时对同一字段的数据类型猜测结果不一致。

解决方法:

方法一:

           按照提示,读入数据时指定参数low_memory=False,可以部分解决这类问题。

原来代码:

data1 = pandas.read_csv(sheet_names[i], header=None, names=['BatteryCode', 'ParameterCode', 'Value'])

添加指定参数后:

data1 = pandas.read_csv(sheet_names[i], header=None, names=['BatteryCode', 'ParameterCode', 'Value'], low_memory=False)

方法二:

            给出现问题的混合类型(mixed types)的列,指定类型。

代码示例:

data1 = pandas.read_csv(sheet_names[i],
                                header=None,
                                names=['BatteryCode', 'ParameterCode', 'Value'],
                                dtype={'BatteryCode': 'str', 'ParameterCode': 'str', 'Value': 'float'})  # 读文件
       

总结:

low_memory=False 参数设置后,pandas会一次性读取csv中的所有数据,然后对字段的数据类型进行唯一的一次猜测。这样就不会导致同一字段的Mixed types问题了。
但是这种方式真的非常不好,一旦csv文件过大,就会内存溢出;所以推荐用第2种解决方案。

标签:False,读取,low,csv,pandas,Specify,names
From: https://www.cnblogs.com/xunzf0402/p/18191788

相关文章

  • Windows下git配合Unity要设置autocrlf=false
    Unity的.asset文件的换行符一定是Unix(LF)格式的,哪怕在设置里选了用Windows(CRLF)也没用。这个选项貌似只对创建的C#Script有效。这些Unix换行文件提交上去没问题,但如果你想revert或者checkout,就会变成Windows换行,然后如果在Unity里面修改了,哪怕最后实际数值没有变化,也会给你......
  • c++ true_type与false_type
    std::true_type和std::false_type实际上是类型别名是两个类型(类模板)注意区分true_type与false_type与true和false区别true_type,false_type代表类型true,false代表值nmsp1::FalseTypemyfunc1();//返回假这种含义nmsp1::TrueTypemyfunc2();//返回真这种含......
  • dbeaver连接mysql报错Public Key Retrieval is not allowed
    这个错误通常发生在尝试通过JDBC连接MySQL数据库时,并且是由于MySQL的配置不允许公钥检索导致的。从MySQL5.0开始,连接时默认需要使用密钥进行密码加密传输。如果JDBC驱动程序尝试通过不允许公钥检索的方式进行连接,就会抛出这个错误。解决方法:更新JDBC连接字符串,添加允许公钥检......
  • SciTech-BigDataAIML-TensorFlow-Model: 模型建立与训练
    TensorFlow模型建立与训练TensorFlow模型建立与训练本章介绍如何使用TensorFlow快速搭建动态模型。模型的构建:tf.keras.Model和tf.keras.layers模型的损失函数:tf.keras.losses模型的优化器:tf.keras.optimizer模型的评估:tf.keras.metrics前置知识Python-{zh-......
  • Lowest Common Ancestor
    SourceGiventherootandtwonodesinaBinaryTree.Findthelowestcommonancestor(LCA)ofthetwonodes.Thelowestcommonancestoristhenodewithlargestdepthwhichistheancestorofbothnodes.Example4/\37......
  • SciTech-BigDataAIML-TensorFlow-Model的编译:设置(LossFunction+Optimizer+Metrics)与
    机器学习|model.compile()用法model.compile()的作用:为经过设计的Model(神经网络模型)设置好:loss损失函数、optimizer优化器、metrics准确性评价函数。并且进行编译;Optimizers优化器:Optimizer的主要功能是作用在GD(梯度下降)的过程,使得Gradient(梯度)更快(快速......
  • mysql Code: 1093. You can't specify target table for update in FROM clause
    执行如下sql会报错,大概是delete的where条件里面不能包含自身的表deletefromt_plan_newwhereplan2codeisnotnullandplan2versionisnotnulland(plan2code,plan2version)notin(selectplan2code,max(plan2version)fromt_plan_newgroupbyplan2code) 所以用临......
  • openfeign接口Springboot启动Bean报错未找到Singleton bean creation not allowed whi
    检查步骤检查springboot启动类是否标注@EnableFeignClients注解,未标注该注解会导致无法注入bean检查远程调用模块是否标注注解@FeignClient检查@FeignClient注解中是否写了正确的微服务名称(区分大小写)检查@FeignClient注解中标识的微服务是否启动​​原因:此处接......
  • 【Azure Standard Logic App】Workflow积压非常严重的情况下, 执行实例居然不能自动缩
    问题描述测试标准版本的LogicApp应用,消费ServiceBus中的消息。当ServiceBus中堆积了大量消息的情况下,Workflow依旧只在一个实例上运行。而LogicApp的自动缩放设置的最大为20个,为什么没有自动缩放呢? 问题解答因为这个StandardLogicApp集成进入到一个虚拟网络中,默认情......
  • TextClip构造方法报OSError:MoviePy creation of None failed because of the followi
    在使用moviepy的构造方法创建实例时报错:这可能是两个原因导致的:未安装ImageMagick应用ImageMagick是一套功能强大、稳定而且开源的多平台工具集和开发包,可以用来读、写和处理超过200种基本格式的图片文件,包括PNG,JPEG,GIF,HEIC,TIFF,DPX,EXR,WebP,Postscript,PDF和SVG等格式。利用ImageM......