zoukankan      html  css  js  c++  java
  • DtypeWarning: Columns (1,5,7,16,......) have mixed types. Specify dtype option on import or set low_memory=False.

    DtypeWarning: Columns (1,5,7,16,......) have mixed types. Specify dtype option on import or set low_memory=False. 
    意思就是:列1,5,7,16....的数据类型不一样。
    调试进去看了看,发现pandas在读取的时候确实把同一列数据中同一
    个数值识别为不同的类型,比如:2000行第3列值为0的数据识别为Int类型,
    而在4000行第3列值为0的数据识别为str类型。

    两种解决方法:

    # 1.设置read_csv的dtype参数,指定字段的数据类型
    pd.read_csv(sio, dtype={"user_id": int, "username": object})
    # 2.设置read_csv的low_memory参数为False
     pd.read_csv(sio, low_memory=False})

    注:low_memory

    pandas读取csv文件默认是按块读取的,即不一次性全部读取;
    另外pandas对数据的类型是完全靠猜的,所以pandas每读取一块数据就对csv字段的数据类型进行猜一次,所以有可能pandas在读取不同块时对同一字段的数据类型猜测结果不一致。
    low_memory=False 参数设置后,pandas会一次性读取csv中的所有数据,然后对字段的数据类型进行唯一的一次猜测。这样就不会导致同一字段的Mixed types问题了。
    但是这种方式真的非常不好,一旦csv文件过大,就会内存溢出;所以推荐用第1中解决方案。


     
     
    pandas 更改数据类型:
    选中列名,设置type
    df[['two', 'three']] = df[['two', 'three']].astype(float)
     
  • 相关阅读:
    [CQOI2015]选数
    利用匈牙利算法&HopcroftKarp算法解决二分图中的最大二分匹配问题 例poj 1469 COURSES
    玩家死亡,屏幕灰白效果实现
    Bool值相加
    (转)D3D性能优化
    Flash AS3视频教程
    Accurately Profiling Direct3D API Calls (Direct3D 9)
    菲涅尔反射
    sscanf时用到郁闷问题
    如何精确测量程序运行时间(转)
  • 原文地址:https://www.cnblogs.com/bigtreei/p/10496740.html
Copyright © 2011-2022 走看看