版本 0.7.3 (2012 年 4 月 12 日)#

这是 0.7.2 的一个次要版本,修复了许多小错误并添加了一些不错的新功能。还有一些值得注意的 API 变更;这些变更应该不会影响太多用户,尽管它们确实构成了行为上的变化,但我们倾向于称之为“错误修复”。有关完整列表,请参阅完整的发行说明或 GitHub 上的问题追踪器。

新特性#

from pandas.tools.plotting import scatter_matrix

scatter_matrix(df, alpha=0.2)  # noqa F821
  • 为 Series 和 DataFrame 的 plot 方法添加 stacked 参数,用于生成堆叠柱状图

df.plot(kind="bar", stacked=True)  # noqa F821
df.plot(kind="barh", stacked=True)  # noqa F821
  • DataFrame.plotSeries.plot 添加对数 x 轴和 y 轴的缩放选项

  • 为 Series 和 DataFrame 添加 kurt 方法,用于计算峰度。

NA 布尔比较 API 变更#

恢复了对非数值 Series 中 NA 值(通常表示为 NaNNone)处理方式的一些变更。

In [1]: series = pd.Series(["Steve", np.nan, "Joe"])

In [2]: series == "Steve"
Out[2]:
0     True
1    False
2    False
Length: 3, dtype: bool

In [3]: series != "Steve"
Out[3]:
0    False
1     True
2     True
Length: 3, dtype: bool

在比较中,NA / NaN 将始终返回 False,但使用 != 时除外,此时返回 True请在布尔运算中务必小心,特别是否定操作,在存在 NA 数据的情况下。如果您对此感到担忧,可以考虑在布尔数组操作中添加一个明确的 NA 过滤器。

In [4]: mask = series == "Steve"

In [5]: series[mask & series.notnull()]
Out[5]:
0    Steve
Length: 1, dtype: object

尽管在比较中传播 NA 对于某些用户来说可能看似是正确的行为(并且从纯技术角度来看,可以争辩说这是正确的做法),但评估结果是,在包括数值数组在内的所有地方传播 NA 会给用户带来大量问题。因此,我们采取了“实用性胜于纯粹性”的方法。这个问题将来可能会重新审视。

其他 API 变更#

当在分组 Series 上调用 apply 时,返回的值也将是一个 Series,以便与 DataFrame 的 groupby 行为更加一致。

In [6]: df = pd.DataFrame(
   ...:     {
   ...:         "A": ["foo", "bar", "foo", "bar", "foo", "bar", "foo", "foo"],
   ...:         "B": ["one", "one", "two", "three", "two", "two", "one", "three"],
   ...:         "C": np.random.randn(8),
   ...:         "D": np.random.randn(8),
   ...:     }
   ...: )
   ...:

In [7]: df
Out[7]:
   A      B         C         D
0  foo    one  0.469112 -0.861849
1  bar    one -0.282863 -2.104569
2  foo    two -1.509059 -0.494929
3  bar  three -1.135632  1.071804
4  foo    two  1.212112  0.721555
5  bar    two -0.173215 -0.706771
6  foo    one  0.119209 -1.039575
7  foo  three -1.044236  0.271860

[8 rows x 4 columns]

In [8]: grouped = df.groupby("A")["C"]

In [9]: grouped.describe()
Out[9]:
   count      mean       std       min       25%       50%       75%       max
A
bar    3.0 -0.530570  0.526860 -1.135632 -0.709248 -0.282863 -0.228039 -0.173215
foo    5.0 -0.150572  1.113308 -1.509059 -1.044236  0.119209  0.469112  1.212112

[2 rows x 8 columns]

In [10]: grouped.apply(lambda x: x.sort_values()[-2:])  # top 2 values
Out[10]:
A
bar  1   -0.282863
     5   -0.173215
foo  0    0.469112
     4    1.212112
Name: C, Length: 4, dtype: float64

贡献者#

共有 15 人为本次发行贡献了补丁。名字旁边带有“+”的人是首次贡献补丁。

  • Abraham Flaxman +

  • Adam Klein

  • Andreas H. +

  • Chang She

  • Dieter Vandenbussche

  • Jacques Kvam +

  • K.-Michael Aye +

  • Kamil Kisiel +

  • Martin Blais +

  • Skipper Seabold

  • Thomas Kluyver

  • Wes McKinney

  • Wouter Overmeire

  • Yaroslav Halchenko

  • lgautier +