本文对应脚本及数据已上传至个人
Github
仓库https://github.com/CNFeffery/DataScienceStudyNoteshtml
毫无疑问pandas
已经成为基于Python
的数据分析领域最重要的包,而就在最近,pandas
终于迎来了1.0.0版本,对于pandas
来讲这是一次更新是里程碑式的,删除了不少旧版本中臃肿的功能,新增了一些崭新的特性,更加专一于高效实用的数据分析,本文就将针对pandas 1.0.0
在笔者眼中比较重要的特性进行介绍,对于想要完整完全了解新版本特性的朋友能够直接去看官方文档。python
因为1.0.0
并不做为正式版发布,所以要安装它须要指定版本(请注意,pandas 1.0.0
目前只支持Python 3.6.1
及以上版本):git
pip install --upgrade pandas==1.0.0rc0
成功安装后,让咱们来体验一下全新版本的pandas
给咱们带来了哪些使人兴奋的功能吧。github
一直以来,pandas
中的字符串类型都是用object
来存储的,此次更新带来的新的更有针对性的StringDtye
主要是为了解决以下问题:后端
object
类型对于字符串与非字符串混合的数据无差异的统一存储为一个类型,而如今的StringDtype
则只容许存储字符串对象bash
咱们经过下面的例子更好的理解这个新特性,首先咱们在excel
中建立以下的表格(图2),其包含两列V1和V2,且V1中的元素并非纯粹的字符串,混杂了数字,而V2则为纯粹的字符串列:markdown
在jupyter lab
中咱们首先读入该数据并查看其具体信息:app
# 读入StringDtype_test.xlsx并查看其具体信息 StringDtype_test = pd.read_excel('StringDtype test.xlsx') StringDtype_test.info()
能够看到在数据读入阶段两列都被看成object
型,接下来咱们使用astype
方法分别对两列强制转换类型为string
,看看在咱们的新版本中会发生什么(注意,在1.0.0
版本中StringDtype
的简称为string
):编辑器
# 对V1进行强制类型 StringDtype_test['V1'].astype('string')
能够看到,运行这段代码后抛出了对应的错误,由于StringDtype
只容许字符串出现,包含数字1的V1便被拒绝转换为string
型,而对于V2:excel
# 对V2进行强制类型 StringDtype_test['V2'].astype('string')
则正常完成了数据类型的转换,而pandas
中丰富的字符串方法对新的string
一样适用,譬如英文字母大写化:
StringDtype_test['V2'].astype('string').str.upper()
在新版本的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中打印出的markdown
格式表格放到编辑器中再修改了表格居中的效果,只要你的编辑器支持markdown
格式,就能够这样方便地生成表格:
A | B | |
---|---|---|
a | 1 | 1 |
a | 2 | 2 |
b | 3 | 3 |
咱们在过去版本对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未被重置:
接下来设置ignore_index参数为True:
# ignore_index设置为True df.sort_values(by='V1', ignore_index=True, ascending=False)
这时返回的结果就已经被重置了index:
sort_index()
和drop_duplicates()
效果同上,不重复展现。
新版本的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()
还有不少更新内容,好比为rolling.apply()
新增了参数engine,以使用numba
后端极大提高numpy
相关运算速度等,这里就再也不赘述,感兴趣的读者能够前往 https://pandas.pydata.org/pandas-docs/version/1.0.0/whatsnew/v1.0.0.html 以上就是本文的所有内容,若有笔误望指出!