每次读取文件啊都只有int float objectObject类型: 默认情况下包含字符串的列被定义为 object。这种类型可以包含多种数据类型但通常存储字符串。Int64 string category都是pandas自带了所有每次读取都要转化各种可以读取dtype就指定不用单独指定哈但是如果用pkl这种文件就不存在了df pd.read_pickle(“清洗好的数据.pkl”)缺失值numpy.nan–floatNaN 是显示出来的样子,说明缺少值真正的值是 np.nan, 相当于一个数值 是NaN, 区别于空值,空字符串无法区别啊在 Jupyter / IPython 里系统会自动帮你定义 写NaN不会报错系统帮忙定义成numpy.nannumpy 自带类型float浮点数pandas 读取文件时默认空值只能用于float64 / object / category一进整数列 强制变 float因为 np.nan 是 float不能放进 int只要读 Excel/CSV 有空单元格pandas 就自动填 np.nan把numpy.nan当成float类型空值判断isna ntna fillannp.nan innumpy.NaN 数字空值NonePython 原生Python 自带的空值类型NoneType作用表示 “空、无”放进 pandas 会自动变放入 object 列 → 保持 None放入数值列 → 变成 np.nan放入新版 string/Int64 → 变成 pd.NAint Int64int不能存空值Int64pandas 专门做的可空整数类型它天生就支持空值所以遇到 NaN 直接变成 pd.NAstr stringnp.nan → astype (str) → 变成字符串 ‘nan’str 老版本对应object空值卫np.nan,是floatl类型这一列还有str类型是混合的。string 新版本专用字符串空值变成pd.NAboolean Int64 stirng 才可以用pd.NApd.NA 无类型pandas.NA–String, Int64类型识别到只能手动产生df.loc[0, ‘姓名’] pd.NAdf[“列名”] df[“列名”].astype(“string”)df[“列名”] df[“列名”].astype(“Int64”)显示 类似于 None类型 Pandas 缺失值标量这才是真正的空pandas.NA 是 Pandas 在 1.0 版本引入的一个专用 缺失值标量missing value indicator用于统一表示缺失值尤其是在 新扩展类型ExtensionDtype 中例如 string, Int64, boolean 等。它的设计目的是替代 numpy.nan 在非浮点类型中的缺失值表示问题因为 numpy.nan 只能在浮点数组中正常工作而 pandas.NA 可以在整数、布尔、字符串等类型中安全使用。pandas 自家专用类型PandasNull独立空值对象只能用于string / Int64 / boolean优点不改变列类型转 Int64 /string → 空值自动变 pd.NA注意pd.NA只能作用于空值判断isna ntna, fillna这种 fill;加减乘除等于逻辑运算都是pd.NApd.NA 通用空值字符串、整数、布尔都能用category空值是numpy.nancategory类型省空间category 不是为了解决空值问题而生的它是为了重复值多、省内存用的。category在分组会把全部组列出To show only the categories that actually appear in your data, set observedTruein the Pandas groupby method.category里面的元素类型根据列类型得到如果是int,那categroy 元素就是int; 如果object,里面就是str object类型 说明numpy.nan是float类型Panads默认读取数据规则如果存在的值是int,且没有缺失值NaN则为int如果存在的值是int,且有缺失值NaN则为float,变成1.0 ,帮你把.0加上说明是float如果存在的值是包括非数值类型,则为object,但是空值依然是NaN,相当于大杂烩。空值已然搞成数字NaN. 如果用了astype(str) 会把NaN,变成字符串“nan”因为NaN不是字符串啊所以转化成nan如果是sttring,就用pd.NA这个astype(str) → 空值变成字符串 ‘nan’astype(‘string’) → 空值变成[]和.str的不同[].是对一列进行操作.str是对每一行单元格进行操作merge当on 类型不同时候注意category 看里面元素是什么以及合并后是否超出了之前元素的类型int里面出现Nan,变成float, 要改变类型np.nan变成float 看具体能不能存储如果不能专。