sqlsumnull转为0_数据清洗中的深坑:NULL、NaN、None和
空字符,都是什么。。。
上⼀篇⽂章,⽼海分享了关于Pyhon类和对象的⽩话理解
本篇我想分享⼀下 空值:None、NULL 与 空字符: “” 的区别和联系
具体的实验环境为Python3.7、mysql8.0、Excel2016
为什么需要搞清楚None、NULL和空字符“”?
其实,⽆论作为数据分析、数据科学⼯作者,还是⽇常职场⼈⼠处理数据时
我们经常需要将数据在Python、SQL数据库、CSV/EXCEL⽂件之间来回导出导⼊
⽽数据天⽣就是混乱的,复杂的,总是伴随着异常值和特殊值。
所以出现这三个特殊值的情况,在所难免,有时甚⾄同时出现在同⼀组数据当中。
加之三者在不同环境下⽐如python、mysql、excel中,理解⾓度和设计逻辑各有不同,
往往会造成这些数据,在数据处理中前后不⼀致、各种奇怪BUG报错发⽣。
因此对于它们,我们处理时⼀定要特别⼩⼼,尽量避免后续数据存储和计算出现⿇烦!
python怎么读入excel下⾯⽼海从三个⾓度来解释⼀下:
⼀张图看透,None、NULL、空字符在Python、SQL、EXCEL中的整体规则
具体规则见下图:
⼀张图直观解释
⽹上关于它们的解释说法很多,说实话有些眼花缭乱了。
我⾃⼰整理⼀个简化的表格,这样看起来直观多了。
注意三点:
pandas中时间型数据的空值,显⽰为NaT,含义与NaN相同
Exel中的空值表⽰,就是空,没有什么特别字符来表达
NULL只出现在数据库数据中,Python中没有这个东西!
下⾯我们通过具体的数据案例来实验⼀下:
从excel、mysql数据库对⽐来看
我们先看⼀下None、NULL和空字符“”在Excel与数据库之间切换时是如何变化的⾸先在excel中原始数据如下:
存储在xlsx中,excel2016版本
其中,性别字段包括了⼀个空字符、⼀个空值;年龄字段包括了⼀个空字符、⼀个空值
其次,将excel数据导⼊到mysql中
可以发现excel中的空值,在数据库中显⽰Null
⽽空字符显⽰为空⽩,空数值显⽰为0(与数据库设置有关)
然后,我们把从数据库导出数据到CSV中
我们可以发现从数据库到CSV中,NULL显⽰为空,其他没有变化加⼊Python、pandas后再来看⼀下
⾸先,看看Python中空值表达
None、NaN、空字符“”,它们看似都是表达空值含义,⽽实际上它们都有各⾃不同的数据类型None是⼀个空值,即空对象,它Python⾥⼀个特殊的值
None不能理解为0,因为0是有意义的;⽽None是⼀个特殊的空值,None不是空字符串。
⽽NaN,是pandas和numpy的专属类型,属于浮点型数据,代表缺失值
⽽“”,是空字符的表⽰。
再次,Python中没有看到NULL
事实是,null 和 NULL 表⽰数据库中的空值, python中不存在它们这个对象!
可能很多资料把NULL也写进了Python解释说明中,这个就真的有些说不过去了
如果直接将xlsx⽂件读取到pandas中
我们发现excel中的空值和空字符,都转为了NaN缺失值的表达!注意此时并没有出现None空值对象如果从pandas导出到xlsx⽂件中
我们可以看出pandas中的NaN,在excel中显⽰为空,没有任何内容。
那Python中数据转为pandas会发⽣什么?
Python中的None被转为numpy中的NaN了,不再以None显⽰
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论