更新: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
读取。
Series
和DataFrame
可以在创建的时候使用allows_duplicate_labels=False
标识来控制index或者列名是否可以重复。这样就可以避免因为重复的标签导致的问题了。默认情况下,还是运行重复标签。
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]
在Series
和DataFrame
的操作中,allows_duplicate_labels的标识会被传递。
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
设置
许多读写函数获取storage_options
参数来传递字典形式的参数到存储后端。这运行传递证书到S3和GCS存储。
GH35655增加fsspec支持来读取excel文件
fsspec:file system specification,文件系统规范
to_csv()
支持二进制模式的文件处理,需要提供参数mode="wb"
确保文件在二进制模式打开。
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")
关键词增加position
参数来设置位置
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)来增加短标题
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_csv
和read_table
的默认浮点数的精度使用C的解析引擎,read_csv()
和read_table()
在解析时,浮点数的最后一位可能存在偏差,以前使用floating_precision="high"
来避免这个问题。
现在floating_precision=None
默认使用高精度解析器,floating_precision="legacy"
使用legacy解析器。
增加了Float32DType
和FloatingArray
。这些数据类型用来保存浮点数列缺失的数据。缺失值可以使用np.nan
来表示,现在增加了pd.NA
。
在进行比较操作时,这两个结果不同,例子如下:
# 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
# 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
本文分享自 Python与MySQL 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!