背景

在Python里面处理数据,必然离不开Pandas,但目前网上的文章大部分都是介绍函数怎么使用,至于为什么有时数据处理结果是错误的,并没有深入研究,也可能是由于Pandas的一些BUG,没有人提出,下面介绍几个误区,看与你一直以为的一样吗

数据准备

平时大家都是从其他一些文件或数据库导入,在这里直接手动模拟一些数据,大家可以仔细看看这些数据有什么区别

>>> import pandas as pd
>>> df=pd.DataFrame({'x':[1,1,2,3,4,5,5,6],'y':['A','B','C','D','E','F','E','A'],'z':[11,21,32,34,'65',56,31,45]})
>>> dfx  y   z
0  1  A  11
1  1  B  21
2  2  C  32
3  3  D  34
4  4  E  65
5  5  F  56
6  5  E  31
7  6  A  45

df['x'] 与 df[['x']] 区别

乍一看上去,这两个可能并没有什么区别,都是对x列的引用,其实是有区别的,并且区别还是比较大,不信就看看

>>> df['x']
0    1
1    1
2    2
3    3
4    4
5    5
6    5
7    6
Name: x, dtype: int64
>>> df[['x']]x
0  1
1  1
2  2
3  3
4  4
5  5
6  5
7  6
>>>
df['x'] 与 df[['x']]区别

上面程序打印结果一下看不出什么区别,下面的图片是不是一下就有区别了,为什么一个没有显示格式,一个是有格式;一个显示变量名称、数据类型,一个什么都没有,那就接着往下看,打印一下他们是Pandas里面的什么类型

>>> type(df['x'])
<class 'pandas.core.series.Series'>
>>> type(df[['x']])
<class 'pandas.core.frame.DataFrame'>

是不是恍然大悟,虽然都是对x列变量的引用,但是返回的结果是不一样的,一个是Series,一个是DataFrame,那么后续在这个结果上的操作肯定也是有很大区别,Series与DataFrame的方法、属性 各有千秋,区别很大

数据类型'object'

在创建数据时,一共创建了3列,其中x列与z列看出有什么区别了吗?没有仔细看的认为两列不都是数值吗???,其实并不然

>>> df.dtypes
x     int64
y    object
z    object
dtype: object

怎么z列是object类型,那就再看一下创建数据时的z到底是什么:'z':[11,21,32,34,'65',56,31,45],中间的'65'是字符型,所以导致zobject类型,也就说明:pandas在检查数据类型时,当遇到数值型与字符型时,用字符型类型来代表这一列的类型,但里面每个值具体的类型还是原来的真实类型;都是数值型的则会转变,具体测试如下所示

>>> df1=pd.DataFrame({'x':[1,1,2,3.0,4,5,5,6],'y':['A','B','C','D','E','F','E','A']})
>>> df1x  y
0  1.0  A
1  1.0  B
2  2.0  C
3  3.0  D
4  4.0  E
5  5.0  F
6  5.0  E
7  6.0  A
>>> df1.dtypes
x    float64
y     object
dtype: object
>>> dfx  y   z
0  1  A  11
1  1  B  21
2  2  C  32
3  3  D  34
4  4  E  65
5  5  F  56
6  5  E  31
7  6  A  45
>>> for i in df['z']:print(type(i))
<class 'int'>
<class 'int'>
<class 'int'>
<class 'int'>
<class 'str'>
<class 'int'>
<class 'int'>
<class 'int'>
>>> for i in df1['x']:print(type(i))
<class 'float'>
<class 'float'>
<class 'float'>
<class 'float'>
<class 'float'>
<class 'float'>
<class 'float'>
<class 'float'>

http://www.taodudu.cc/news/show-4628982.html

相关文章:

  • Python 两个字典如何实现相加?(相同的键,值相加)
  • Python pandas在读取csv文件时(linux与windows之间传输),数据行数不一致的问题
  • Hive中各种日期格式转换方法总结
  • 数据分析师常用的 Linux 命令总结
  • Python 利用数据分布直方图来确定合适的阈值
  • 利用Python计算两个地理位置之间的中点
  • pandas 错误提醒:FutureWarning: elementwise comparison failed;
  • Python 基于pyecharts自定义经纬度热力图可视化
  • Python pandas 里面的数据类型坑,astype要慎用
  • Python数据处理中 pd.concat 与 pd.merge 区别
  • Python 利用聚类算法对图片进行颜色压缩
  • Hive 中的各种常用set设置
  • Python 利用4行代码实现图片灰度化
  • Python 字符串格式化 f-string f“{}“ .format
  • apollo服务器集成java_Apollo Server 集成性能监控
  • SQL语句大全 作者:阿多
  • MD5算法在PB中的实现(转载自 - 阿多米 - 博客园)
  • E站账号cookie分享_不用输入密码无风险?扫描二维码登录QQ账号也不安全!
  • E.164号码,E.214号码,E.212号码
  • E码通电子凭证服务平台 通用接口接入规范
  • 【论文笔记-NER综述】A Survey on Deep Learning for Named Entity Recognition
  • MT-BERT在文本检索任务中的实践
  • 2021-03-4:task04_NFM模型
  • 美团外卖推荐智能流量分发的实践与探索
  • Encoding History with Context-aware Representation Learning for Personalized Search(2020SIGIR)
  • 【SIGIR22】使用反事实生成器来消除知识感知推荐中的虚假联系
  • SIGIR2020|基于自注意力机制和多鉴别器的序列推荐
  • 2019_SIGIR_A Neural Influence Diffusion Model for Social Recommendation
  • SetRank(2020SIGIR)
  • 一站式SCI投稿大全(感谢pennhmp116版主的整理)

Pandas数据处理误区要知其然知其所以然相关推荐

  1. 知行合一:知其然知其所以然

    知行合一:知其然知其所以然. 一个事情做成了,并不意味着你知道做成这件事背后蕴藏的原理. 只有使用冥思.事上练的方法了,将背后的原理提取出来,才能说做到了执行合一. 这个过程是行对知的精进过程. 转载 ...

  2. 锁,知其然知其所以然

    ​ Taken by iCola 今天,从一个小问题聊起. 假设你账户上原来有100元钱,你用微信支付100元,与此同时你女票用支付宝给你转100元零花钱,你帐户的余额有没有可能变成200元或者0元? ...

  3. 算出当前系统后某个月的日期_Python3.7知其然知其所以然-第十八章 日期函数

    时光不可追,往事不可回.以往创建的数据,如若没有日期做标识,不堪回首.几乎任何一个产品都会用到日期,如登录日期.创建日期.修改日期等.正因如此,编程语言中,几乎都有内置日期函数. 18.1 当前日期 ...

  4. 字符串去掉两端的引号_Python3.7知其然知其所以然-第六章 字符串

    在开发过程中,经常会用到字符串来存储字符内容.在其他编程语言中用成对双引号" "声明字符串,用成对单引号' '声明单个字符,而Python没有这种区别,它无论单个或多个字符都用字符 ...

  5. redis zset转set 反序列化失败_关于Redis中的五种数据结构,要知其然知其所以然...

    Redis作为Nosql的代表,想必大家已经再熟悉不过了,除了作为缓存来使用,Redis还提供了其他很多有用的功能,例如可作为消息队列.分布式锁.不隆过滤器.限流等功能使用.今天先来说一说redis作 ...

  6. bootstraptable获取所有数据_关于Redis中的五种数据结构,要知其然知其所以然

    Redis作为Nosql的代表,想必大家已经再熟悉不过了,除了作为缓存来使用,Redis还提供了其他很多有用的功能,例如可作为消息队列.分布式锁.不隆过滤器.限流等功能使用.今天先来说一说redis作 ...

  7. Vue2.0源码解析 - 知其然知其所以然之Vue.use

    前言 小伙伴们大家好.用过Vue的小伙伴都知道,在我们进行Vue开发时,避免不了会使用一些第三方的库,比如说ElementUI组件库.当我们导入好这些组件库后会执行一个Vue.use函数,然后把导进来 ...

  8. Android转换位图BUG,知其然不知其所以然

    在开发某App的时候,发现了一个很奇怪的bug,前面我也发了关于bitmap的总结,但是这个问题恰恰出在BitmapFactory.decodeFile(pathName)这个函数上,使用这个函数在我 ...

  9. Vue2.0源码解析 - 知其然知其所以然之keep-alive

    前言 [一天一个小知识,每天进步一点点]小伙伴们大家好,今天将要给大家分享是Vue中关于组件缓存的一个内置组件 - keep-alive 不知道小伙伴们有没有遇到这样一种情况,在我们的项目开发中,有时 ...

最新文章

  1. 吴恩达老师深度学习视频课笔记:单隐含层神经网络公式推导及C++实现(二分类)
  2. 记录一次git的误删除操作--恢复
  3. 【Java基础】语言基础知识
  4. 关于中英数字混排的字符串分割问题(转)
  5. 【设计模式系列】行为型模式之Mediator模式
  6. zookeeper zoo.cfg配置文件
  7. JVM内存模型与GC回收器
  8. IT-标准化-系列-15.在VPC 2007中构建虚拟网络
  9. 深入了解VPP关键技术有哪些?
  10. 2018年11月26日 练习3
  11. Tomcat历史版本下载
  12. python photoshop自动化_你会用Python 搞定你的电子签名吗?
  13. 《微观经济学》学习笔记
  14. 在遗忘边缘试探的matlab函数
  15. python百位数千位数取整
  16. 正宇控股带你认识区块链技术
  17. tensorflow应用系列3:使用tensorflow完成多项式回归
  18. django orm原理_django 动态创建一个模型的多个table name, 并通过 Django ORM 操作
  19. Detours库APIHook演示抓取微信界面绘制文字函数
  20. \t\t工信部:要求对网站主办者身份信息当面核验

热门文章

  1. 电机PID控制和闭环控制
  2. NAT ALG DNS — DNS在内部,外网通过域名访问内部服务器
  3. 餐厅食材采购信息管理系统的设计与实现
  4. Cocos 引擎助力游戏开发者突围
  5. c语言s10 是什么意思啊,【S10】A.FortunatelyB.ComparativelyC.ConsequentlyD.Conversely - 试题答案网问答...
  6. iphone使用技巧大全
  7. 阿里JAVA开发手册(泰山版)
  8. 从零开始学python的第19天
  9. 4、keil C51多文件创建小记
  10. [教程]通过注册表关闭win10 xbox dvr 游戏录像