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 看具体能不能存储,如果不能专。

相关推荐
菜冻鱼3 天前
Python-pandas-索引与筛选
开发语言·笔记·python·numpy·pandas·学习方法
小趴蔡ha4 天前
03 NumPy 入门:机器学习中的数组和矩阵
python·线性代数·机器学习·numpy
乱七八糟的屋子6 天前
【C++数值计算】NumCpp超详细入门教程(纯正Numpy语法、零学习成本、C++首选科学计算库、性能压测对比)
c++·数值计算·numpy·高性能计算·科学计算·ndarray
Lee_jerome7 天前
python神经网络编程入门(二十)——RNN LSTM 数学原理与结构拆解
深度学习·numpy·lstm·参数量·sigmoid·tanh·门控机制
赤羽尾风7 天前
NumPy快速入门
python·numpy
Xiaok10188 天前
NumPy 数组 vs PyTorch Tensor
人工智能·pytorch·numpy
MIUMIUKK8 天前
数据分析(1/3)——Numpy数组基础学习笔记
numpy
Lee_jerome8 天前
python神经网络编程入门(十七)——RNN BPTT算法(上):梯度沿时间轴传播的链式法则
rnn·深度学习·神经网络·numpy·反向传播·梯度消失·bptt
编程阿峰10 天前
Python 环境配置(二)安装jupyter、matplotlib、numpy库
开发语言·python·jupyter·numpy·matplotlib
swany10 天前
同步数据中,只需要几秒钟 & milvus向量数据库不可用 dify1.16.1 升级后踩坑记录
开发语言·python·numpy