前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >pandas1.2.0更新

pandas1.2.0更新

作者头像
福贵
发布2021-01-08 15:34:06
1.2K0
发布2021-01-08 15:34:06
举报
文章被收录于专栏:合集合集

更新:2020.12.26 版本:1.2.0

警告

不再维护写老格式xls的xlwt包,xlrd包仅用来读取旧格式xls文件。 之前,read_excel()使用默认参数engine=None会默认使用xlrd的引擎,即使是Excel2007+的xlsx文件。 如果安装了openpyxl,那现在一般会先使用。更多细节参考read_excel()文档。 因此,强烈推荐安装openpyxl读取xlxs文件。如果io.excel.xls.writer没有设置成xlwt,那么使用wlwt引擎会有一个警告FutureWarning。现在这个设置被弃用了,还会出现相同的警告,建议用户使用openpyxl读取。

增强

可选择禁用重复的标签

SeriesDataFrame可以在创建的时候使用allows_duplicate_labels=False标识来控制index或者列名是否可以重复。这样就可以避免因为重复的标签导致的问题了。默认情况下,还是运行重复标签。

代码语言:javascript
复制
In [1]: pd.Series([1, 2], index=['a', 'a'])
Out[1]:
a 1
a 2
Length: 2, dtype: int64
In [2]: pd.Series([1, 2], index=['a', 'a']).set_flags(allows_duplicate_labels=False)
...
DuplicateLabelError: Index has duplicates.
positions
label
a [0, 1]

SeriesDataFrame的操作中,allows_duplicate_labels的标识会被传递。

代码语言:javascript
复制
In [3]: a = (
...: pd.Series([1, 2], index=['a', 'b'])
...: .set_flags(allows_duplicate_labels=False)
...: )
In [4]: a
Out[4]:
a 1
b 2
Length: 2, dtype: int64
# An operation introducing duplicates
In [5]: a.reindex(['a', 'b', 'a'])
...
DuplicateLabelError: Index has duplicates.
positions
label
a [0, 2]
[1 rows x 1 columns]

现阶段,存在许多方法并不会传递这个标识,但是这个特性之后会全部支持。allows_duplicate_labels属性由DataFrame.flags设置

传递参数到fsspec后端

许多读写函数获取storage_options参数来传递字典形式的参数到存储后端。这运行传递证书到S3和GCS存储。 GH35655增加fsspec支持来读取excel文件 fsspec:file system specification,文件系统规范

to_csv支持二进制文件

to_csv()支持二进制模式的文件处理,需要提供参数mode="wb"确保文件在二进制模式打开。

代码语言:javascript
复制
In [1]: import io
In [2]: data = pd.DataFrame([0, 1, 2])
In [3]: buffer = io.BytesIO()
In [4]: data.to_csv(buffer, encoding="utf-8", compression="gzip")

to_latex支持短标题和表格位置

关键词增加position参数来设置位置

代码语言:javascript
复制
In [5]: data = pd.DataFrame({'a': [1, 2], 'b': [3, 4]})
In [6]: table = data.to_latex(position='ht')
In [7]: print(table)
\begin{table}[ht]
\centering
\begin{tabular}{lrr}
\toprule
{} & a & b \\
\midrule
0 & 1 & 3 \\
1 & 2 & 4 \\
\bottomrule
\end{tabular}
\end{table}

关键词caption的功能扩展了。除了使用一个文本作为标题,还可以输入一个元组(full_caption, short_caption)来增加短标题

代码语言:javascript
复制
In [8]: data = pd.DataFrame({'a': [1, 2], 'b': [3, 4]})
In [9]: table = data.to_latex(caption=('the full long caption', 'short caption'))
In [10]: print(table)
\begin{table}
\centering
\caption[short caption]{the full long caption}
\begin{tabular}{lrr}
\toprule
{} & a & b \\
\midrule
0 & 1 & 3 \\
1 & 2 & 4 \\
\bottomrule
\end{tabular}
\end{table}

改变read_csvread_table的默认浮点数的精度

使用C的解析引擎,read_csv()read_table()在解析时,浮点数的最后一位可能存在偏差,以前使用floating_precision="high"来避免这个问题。 现在floating_precision=None默认使用高精度解析器,floating_precision="legacy"使用legacy解析器。

浮点数可以是空数据类型

增加了Float32DTypeFloatingArray。这些数据类型用来保存浮点数列缺失的数据。缺失值可以使用np.nan来表示,现在增加了pd.NA。 在进行比较操作时,这两个结果不同,例子如下:

代码语言:javascript
复制
# the default NumPy float64 dtype
In [11]: s1 = pd.Series([1.5, None])
In [12]: s1
Out[12]:
0 1.5
1 NaN
Length: 2, dtype: float64
In [13]: s1 > 1
Out[13]:
0 True
1 False
Length: 2, dtype: bool
代码语言:javascript
复制
# the new nullable float64 dtype
In [14]: s2 = pd.Series([1.5, None], dtype="Float64")
In [15]: s2
Out[15]:
0 1.5
1 <NA>
Length: 2, dtype: Float64
In [16]: s2 > 1
Out[16]:
0 True
1 <NA>
Length: 2, dtype: boolean
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-01-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python与MySQL 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 警告
  • 增强
    • 可选择禁用重复的标签
      • 传递参数到fsspec后端
        • to_csv支持二进制文件
          • to_latex支持短标题和表格位置
            • 改变read_csv和read_table的默认浮点数的精度
              • 浮点数可以是空数据类型
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档