numpy.nan Nan

每次读取文件啊

都只有int float object

Object类型: 默认情况下,包含字符串的列被定义为 object。这种类型可以包含多种数据类型,但通常存储字符串。

Int64 string category都是pandas自带了,

所有每次读取都要转化各种,可以读取dtype就指定,不用单独指定哈

但是如果用pkl这种文件,就不存在了

df = pd.read_pickle("清洗好的数据.pkl")

缺失值(numpy.nan)--float

NaN 是显示出来的样子,说明缺少值

真正的值是 np.nan, 相当于一个数值 是NaN, 区别于空值,空字符串,无法区别啊

在 Jupyter / IPython 里,系统会自动帮你定义: 写NaN不会报错,系统帮忙定义成numpy.nan

numpy 自带

类型:float(浮点数)

pandas 读取文件时默认空值

只能用于:float64 / object / category

一进整数列 强制变 float

因为 np.nan 是 float,不能放进 int

只要读 Excel/CSV 有空单元格,pandas 就自动填 np.nan

把numpy.nan当成float类型+空值判断

isna ntna fillan

np.nan in

numpy.NaN = 数字空值

None(Python 原生)

Python 自带的空值

类型:NoneType

作用:表示 "空、无"

放进 pandas 会自动变:

放入 object 列 → 保持 None

放入数值列 → 变成 np.nan

放入新版 string/Int64 → 变成 pd.NA

int Int64

int:不能存空值

Int64:pandas 专门做的可空整数类型

它天生就支持空值,所以遇到 NaN 直接变成 pd.NA

str string

np.nan → astype (str) → 变成字符串 'nan'

str = 老版本,对应(object),空值卫np.nan,是floatl类型,这一列还有str类型,是混合的。

string = 新版本(专用字符串),空值变成pd.NA

boolean Int64 stirng 才可以用pd.NA

pd.NA 无类型

pandas.NA--String, Int64类型识别到

只能手动产生,

df.loc0, '姓名' = pd.NA

df"列名" = 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.NA

pd.NA = 通用空值(字符串、整数、布尔都能用)

category

空值是numpy.nan

category类型

省空间

category 不是为了解决空值问题而生的!

它是为了重复值多、省内存用的。

category在分组,会把全部组列出

To show only the categories that actually appear in your data, set observed=Truein 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 看具体能不能存储,如果不能专。

相关推荐
m沐沐1 天前
【计算机视觉】OpenCV 模板匹配银行卡数字识别---上
人工智能·后端·python·opencv·计算机视觉·pycharm·numpy
iRayCheung3 天前
virtualbox安装的ubuntu系统跑numpy报错
linux·ubuntu·numpy
SilentSamsara4 天前
scikit-learn 工作流工程化:Pipeline、ColumnTransformer 与自定义转换器
开发语言·人工智能·python·机器学习·青少年编程·numpy·scikit-learn
SilentSamsara5 天前
NumPy 进阶:广播机制、ufunc 与向量化计算的工程实践
开发语言·python·青少年编程·性能优化·numpy
DogDaoDao5 天前
【第 04 篇】列表与元组 —— 序列类型核心详解
人工智能·python·深度学习·神经网络·机器学习·conda·numpy
zyl837216 天前
Python NumPy 学习
python·学习·numpy
留白_7 天前
numpy学习
学习·numpy
北暮城南8 天前
使用 Claude Code 高效实现图像边缘检测:多算法对比与工程实践
python·opencv·numpy·matplotlib·边缘检测·claude code
Kobebryant-Manba8 天前
安装cuda
pytorch·python·深度学习·conda·numpy
m沐沐9 天前
【机器学习】信用卡欺诈检测实战:逻辑回归 + 下采样
人工智能·python·机器学习·pycharm·逻辑回归·numpy