(数据科学学习手札73)盘点pandas 1.0.0中的新特性
本文对应脚本及数据已上传至我的
Github仓库https://github.com/CNFeffery/DataScienceStudyNotes
1 简介
毫无疑问pandas已经成为基于Python的数据分析领域最重要的包,而就在最近,pandas终于迎来了1.0.0版本,对于pandas来说这是一次更新是里程碑式的,删除了很多旧版本中臃肿的功能,新增了一些崭新的特性,更加专注于高效实用的数据分析,本文就将针对pandas 1.0.0在笔者眼中比较重要的特性进行介绍,对于想要完整彻底了解新版本特性的朋友可以直接去看官方文档。
图1
2 pandas 1.0.0中的新特性
由于1.0.0并不作为正式版发布,因此要安装它需要指定版本(请注意,pandas 1.0.0目前只支持Python 3.6.1及以上版本):
pip install --upgrade pandas==1.0.0rc0
成功安装后,让我们来体验一下全新版本的pandas给我们带来了哪些令人兴奋的功能吧。
2.1 新增StringDtype数据类型
一直以来,pandas中的字符串类型都是用object来存储的,这次更新带来的新的更有针对性的StringDtye主要是为了解决如下问题:
object类型对于字符串与非字符串混合的数据无差别的统一存储为一个类型,而现在的StringDtype则只允许存储字符串对象
我们通过下面的例子更好的理解这个新特性,首先我们在excel中创建如下的表格(图2),其包含两列V1和V2,且V1中的元素并不是纯粹的字符串,混杂了数字,而V2则为纯粹的字符串列:
图2
在jupyter lab中我们首先读入该数据并查看其具体信息:
# 读入StringDtype_test.xlsx并查看其具体信息
StringDtype_test = pd.read_excel('StringDtype test.xlsx')
StringDtype_test.info()
图3
可以看到在数据读入阶段两列都被当作object型,接下来我们使用astype方法分别对两列强制转换类型为string,看看在我们的新版本中会发生什么(注意,在1.0.0版本中StringDtype的简称为string):
# 对V1进行强制类型
StringDtype_test['V1'].astype('string')
图4
可以看到,运行这段代码后抛出了对应的错误,因为StringDtype只允许字符串出现,包含数字1的V1便被拒绝转换为string型,而对于V2:
# 对V2进行强制类型
StringDtype_test['V2'].astype('string')
图5
则正常完成了数据类型的转换,而pandas中丰富的字符串方法对新的string同样适用,譬如英文字母大写化:
StringDtype_test['V2'].astype('string').str.upper()
图6
2.2 markdown表格导出
在新版本的pandas中新增了一个很有意思的方法to_markdown(),通过它我们可以将表格导出为markdown格式,下面是一个例子:
df = pd.DataFrame({"A": [1, 2, 3], "B": [1, 2, 3]}, index=['a', 'a', 'b'])
# 导出为markdown表格字符串
print(df.to_markdown())
图7
下面的表格就是我直接将图7中打印出的markdown格式表格放到编辑器中再修改了表格居中的效果,只要你的编辑器支持markdown格式,就可以这样方便地生成表格:
| A | B | |
|---|---|---|
| a | 1 | 1 |
| a | 2 | 2 |
| b | 3 | 3 |
2.3 新增ignore_index参数
我们在过去版本对DataFrame或Series按列使用sort_values()、按index使用sort_index()排序或使用drop_duplicates()去除数据框中的重复值时,经常会发现处理后的结果index随着排序或行的删除而被打乱,在index无意义时我们需要使用reset_index()方法对结果的index进行重置,而在新版本的pandas中,为sort_values()、sort_index()以及drop_duplicates()引入了新参数ignore_index(),这是一个bool型变量,默认值为False,当被设置为True时,排序后结果的index会被自动重置:
df = pd.DataFrame({
'V1': [_ for _ in range(5)],
})
# ignore_index设置为False
df.sort_values(by='V1', ignore_index=False, ascending=False)
这时因为ignore_index参数设置为False,排序后的结果index未被重置:
图8
接下来设置ignore_index参数为True:
# ignore_index设置为True
df.sort_values(by='V1', ignore_index=True, ascending=False)
这时返回的结果就已经被重置了index:
图9
sort_index()和drop_duplicates()效果同上,不重复展示。
2.4 美化info()输出
新版本的pandas对DataFrame.info()输出内容进行了美化,增强了使用体验:
df = pd.DataFrame({"int_col": [1, 2, 3],
"text_col": ["a", "b", "c"],
"float_col": [0.0, 0.1, 0.2]})
df.info()
图10
还有很多更新内容,比如为rolling.apply()新增了参数engine,以使用numba后端极大提升numpy相关运算速度等,这里就不再赘述,感兴趣的读者可以前往 https://pandas.pydata.org/pandas-docs/version/1.0.0/whatsnew/v1.0.0.html
以上就是本文的全部内容,如有笔误望指出!
(数据科学学习手札73)盘点pandas 1.0.0中的新特性的更多相关文章
- (数据科学学习手札131)pandas中的常用字符串处理方法总结
本文示例代码及文件已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 在日常开展数据分析的过程中,我们经常需要对 ...
- (数据科学学习手札124)pandas 1.3版本主要更新内容一览
本文示例代码及文件已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 就在几天前,pandas发布了其1.3版本 ...
- (数据科学学习手札52)pandas中的ExcelWriter和ExcelFile
一.简介 pandas中的ExcelFile()和ExcelWriter(),是pandas中对excel表格文件进行读写相关操作非常方便快捷的类,尤其是在对含有多个sheet的excel文件进行操控 ...
- (数据科学学习手札68)pandas中的categorical类型及应用
一.简介 categorical是pandas中对应分类变量的一种数据类型,与R中的因子型变量比较相似,例如性别.血型等等用于表征类别的变量都可以用其来表示,本文就将针对categorical的相关内 ...
- (数据科学学习手札57)用ggplotly()美化ggplot2图像
一.简介 经常利用Python进行数据可视化的朋友一定用过或听说过plotly这样的神器,我在(数据科学学习手札43)Plotly基础内容介绍中也曾做过非常详细的介绍,其渲染出的图像以浏览器为载体,非 ...
- (数据科学学习手札69)详解pandas中的map、apply、applymap、groupby、agg
*从本篇开始所有文章的数据和代码都已上传至我的github仓库:https://github.com/CNFeffery/DataScienceStudyNotes 一.简介 pandas提供了很多方 ...
- (数据科学学习手札72)用pdpipe搭建pandas数据分析流水线
1 简介 在数据分析任务中,从原始数据读入,到最后分析结果出炉,中间绝大部分时间都是在对数据进行一步又一步的加工规整,以流水线(pipeline)的方式完成此过程更有利于梳理分析脉络,也更有利于查错改 ...
- (数据科学学习手札47)基于Python的网络数据采集实战(2)
一.简介 马上大四了,最近在暑期实习,在数据挖掘的主业之外,也帮助同事做了很多网络数据采集的内容,接下来的数篇文章就将一一罗列出来,来续写几个月前开的这个网络数据采集实战的坑. 二.马蜂窝评论数据采集 ...
- (数据科学学习手札40)tensorflow实现LSTM时间序列预测
一.简介 上一篇中我们较为详细地铺垫了关于RNN及其变种LSTM的一些基本知识,也提到了LSTM在时间序列预测上优越的性能,本篇就将对如何利用tensorflow,在实际时间序列预测任务中搭建模型来完 ...
随机推荐
- tf.reduce_sum()
#axis 表示在哪个维度进行sum操作,不写代表所有维 #keep_dims 是否保留原始数据维度 reduce_sum( input_tensor, axis=None, keep_dims=Fa ...
- PowerShell 拿到显卡信息
本文告诉大家如何在 PowerShell 通过 WMI 拿到显卡信息 在 PowerShell 可以使用下面代码拿到显卡的信息 Get-WmiObject Win32_VideoController ...
- 2019-9-24-dotnet-remoting-抛出异常
title author date CreateTime categories dotnet remoting 抛出异常 lindexi 2019-09-24 15:39:50 +0800 2018- ...
- Linux 内核VLB 总线
另一个对 ISA 的扩展是 VESA Local Bus(VLB) 接口总线, 它扩展了 ISA 连接器, 通过 添加第 3 个知道长度的槽位. 一个设备可只插入这个额外的连接器(不用插入 2 个关联 ...
- Weblogic/WAS之Full GC监控与计算
在网上看到关于内存回收机制,同大家一起分析探讨.堆内存划分为Eden.Survivor 和 Tenured/Old 空间,如下图所示: Minor GC 会清理年轻代的内存,Major GC 是清理老 ...
- WPF TreeView 展开到指定节点
最近在做一个交换机管理的项目,有一个交换机的树,做树的搜索的时候 展开节点居然有点难,自己记录下来 ,以后用的到的时候可以看一下. 展开代码如下,其中 SwitchTree是treeview空间的名称 ...
- python3中lambda函数
def make_repeater(n): return lambda s:s*n twice=make_repeater(2) print(twice('wwss')) print(twice(2) ...
- The Struts dispatcher cannot be found异常的解决方法
系统错误:HTTP Status 500 异常信息:The Struts dispatcher cannot be found. This is usually caused by using St ...
- Ubuntu14.04虚拟机下基本操作(typical安装)
1.打开终端:ctrl+alt+T 2.图形桌面和命令行界面切换:Ctrl+Alt+F1和Ctrl+Alt+F7 3.切换到root用户:激活前,sudo su+回车: 激活后,su+回车. 切换回 ...
- python OrderedDict
15年16年接触python时候,还不知道这个函数,只知道dict的无序,造成了一些麻烦 今天view 代码,发现了 OrderedDict() 在python2.7中比较吃内存 pop(获取指定ke ...