What’s new in 0.23.1 (2018年6月12日)#

これは0.23.xシリーズのマイナーなバグ修正リリースで、いくつかの小さなリグレッション修正とバグ修正が含まれています。すべてのユーザーにこのバージョンへのアップグレードをお勧めします。

警告

2019年1月1日以降、pandasの機能リリースはPython 3のみをサポートします。詳細については、Python 2.7のサポート終了を参照してください。

修正されたリグレッション#

Series と datetime.date の比較

datetime を保持する Seriesdatetime.date オブジェクトの比較に関する 0.23.0 の変更を元に戻しました (GH 21152)。pandas 0.22 以前では、datetime を保持する Series と datetime.date オブジェクトを比較すると、比較前に datetime.date が datetime に強制されていました。これは、datetime と datetime.date を等しいとみなさない Python、NumPy、および DatetimeIndex とは矛盾していました。

0.23.0 では、DatetimeIndex と Series の操作を統合し、その過程で datetime の Series と datetime.date の比較を警告なしに変更しました。

一時的に 0.22.0 の動作に戻したため、datetime と日付は再び等しいと比較される可能性がありますが、将来のリリースで 0.23.0 の動作を復元します。

まとめると、0.22.0、0.23.0、0.23.1 の動作は以下のとおりです。

# 0.22.0... Silently coerce the datetime.date
>>> import datetime
>>> pd.Series(pd.date_range('2017', periods=2)) == datetime.date(2017, 1, 1)
0     True
1    False
dtype: bool

# 0.23.0... Do not coerce the datetime.date
>>> pd.Series(pd.date_range('2017', periods=2)) == datetime.date(2017, 1, 1)
0    False
1    False
dtype: bool

# 0.23.1... Coerce the datetime.date with a warning
>>> pd.Series(pd.date_range('2017', periods=2)) == datetime.date(2017, 1, 1)
/bin/python:1: FutureWarning: Comparing Series of datetimes with 'datetime.date'.  Currently, the
'datetime.date' is coerced to a datetime. In the future pandas will
not coerce, and the values not compare equal to the 'datetime.date'.
To retain the current behavior, convert the 'datetime.date' to a
datetime with 'pd.Timestamp'.
  #!/bin/python3
0     True
1    False
dtype: bool

さらに、順序比較は将来 TypeError を発生させます。

その他の修正

  • to_sql() がマルチバリュー挿入を実行する機能を元に戻しました。これは特定の場合にリグレッションを引き起こしたためです (GH 21103)。将来、この機能は設定可能になります。

  • タイムゾーン対応データの場合の DatetimeIndex.date および DatetimeIndex.time 属性でのリグレッションを修正しました: DatetimeIndex.time が tz-naive ではなく tz-aware の時刻を返していた (GH 21267) および入力日付が非 UTC タイムゾーンの場合に DatetimeIndex.date が誤った日付を返していた (GH 21230) 問題を修正しました。

  • None 値が JSON のネストされたレベルにある場合に pandas.io.json.json_normalize() を呼び出すとリグレッションが発生し、値が None であるキーをドロップしないように修正しました (GH 21158, GH 21356)。

  • to_csv() で、圧縮とエンコーディングが指定された場合にエンコーディングエラーを引き起こすバグ (GH 21241, GH 21118) を修正しました。

  • -OO 最適化で pandas がインポートできないバグ (GH 21071) を修正しました。

  • Categorical.fillna() で、value および個々のカテゴリがイテラブルであり、value がイテラブルである場合に誤って TypeError を発生させるバグ (GH 21097, GH 19788) を修正しました。

  • dtype=str を渡したときに None のような NA 値を文字列に強制するコンストラクタでのリグレッション (GH 21083) を修正しました。

  • pivot_table() で、ピボットの index に欠損値を持つ順序付き Categorical がアラインメントのずれた結果を与えるリグレッション (GH 21133) を修正しました。

  • ブールインデックス/列でのマージにおけるリグレッション (GH 21119) を修正しました。

パフォーマンス改善#

  • CategoricalIndex.is_monotonic_increasing(), CategoricalIndex.is_monotonic_decreasing() および CategoricalIndex.is_monotonic() のパフォーマンスを改善しました (GH 21025)。

  • CategoricalIndex.is_unique() のパフォーマンスを改善しました (GH 21107)。

バグ修正#

グループ化/リサンプル/ローリング

  • DataFrame.agg() で、重複した列名を持つ DataFrame に複数の集計関数を適用するとスタックオーバーフローを引き起こすバグ (GH 21063) を修正しました。

  • GroupBy.ffill() および GroupBy.bfill() で、実装が非安定ソートを使用しているため、グループ内の埋め込みが常に意図どおりに適用されないバグ (GH 21207) を修正しました。

  • GroupBy.rank() で、method='dense' および pct=True を指定した場合に結果が 100% にスケーリングされないバグを修正しました。

  • pandas.DataFrame.rolling() および pandas.Series.rolling() が 0 のウィンドウサイズを誤って受け入れ、エラーを発生させなかったバグ (GH 21286) を修正しました。

データ型固有

  • Series.str.replace() で、Python 3.5.2 でメソッドが TypeError をスローするバグ (GH 21078) を修正しました。

  • Timedelta で、単位付きの float を渡すと float の精度が prematurely に丸められるバグ (GH 14156) を修正しました。

  • pandas.testing.assert_index_equal() で、check_categorical=False パラメータを使用して 2 つの CategoricalIndex オブジェクトを比較した場合に、誤って AssertionError が発生するバグ (GH 19776) を修正しました。

スパース

  • SparseArray.shape で、以前は SparseArray.sp_values の形状のみを返していたバグ (GH 21126) を修正しました。

インデックス付け

  • Series.reset_index() で、無効なレベル名が指定されたときに適切なエラーが発生しなかったバグ (GH 20925) を修正しました。

  • interval_range() で、start/periods または end/periods が float の start または end と共に指定された場合のバグ (GH 21161) を修正しました。

  • MultiIndex.set_names() で、nlevels == 1MultiIndex でエラーが発生するバグ (GH 21149) を修正しました。

  • IntervalIndex コンストラクタで、カテゴリデータからの IntervalIndex の作成が完全にサポートされていなかったバグ (GH 21243, GH 21253) を修正しました。

  • MultiIndex.sort_index() で、level=1 で正しくソートされることが保証されていなかったバグを修正しました。これにより、特定の DataFrame.stack() 操作でデータのミスマッチも発生していました (GH 20994, GH 20945, GH 21052)。

プロット

  • pandas.DataFrame().groupby().boxplot() で生成されるサブプロットの x/y 軸の共有をオン/オフする新しいキーワード (sharex, sharey) を追加しました (GH 20968)。

I/O

  • compression='zip' を指定した IO メソッドで、非圧縮の zip アーカイブが生成されるバグ (GH 17778, GH 21144) を修正しました。

  • DataFrame.to_stata() で、DataFrame をバッファやほとんどのファイルライクオブジェクトにエクスポートできないバグ (GH 21041) を修正しました。

  • read_stata() および StataReader で、Python 3 で Stata 14 ファイル (dta バージョン 118) からの utf-8 文字列を正しくデコードできなかったバグ (GH 21244) を修正しました。

  • IO JSON read_json() で、orient='table' を使用して空の JSON スキーマを DataFrame に読み込むとエラーが発生するバグ (GH 21287) を修正しました。

再整形

  • concat() で、numpy スカラおよびタプル名を持つ Series を連結するとエラーが発生するバグ (GH 21015) を修正しました。

  • concat() の警告メッセージが、将来の動作に対して誤ったガイダンスを提供していたバグ (GH 21101) を修正しました。

その他

  • IPython での Index のタブ補完で、非推奨警告が出力されなくなりました (GH 21125)。

  • C++ 再配布可能パッケージがインストールされていない Windows で pandas が使用できないバグ (GH 21106) を修正しました。

貢献者#

このリリースには合計 30 人がパッチを提供しました。「+」が付いている人は初めてパッチを提供しました。

  • Adam J. Stewart

  • Adam Kim +

  • Aly Sivji

  • Chalmer Lowe +

  • Damini Satya +

  • Dr. Irv

  • Gabe Fernando +

  • Giftlin Rajaiah

  • ジェフ・リーバック

  • Jeremy Schendel +

  • Joris Van den Bossche

  • Kalyan Gokhale +

  • ケビン・シェパード

  • Matthew Roeschke

  • Max Kanter +

  • Ming Li

  • Pyry Kovanen +

  • Stefano Cianciulli

  • Tom Augspurger

  • Uddeshya Singh +

  • Wenhuan

  • ウィリアム・エイド

  • クリス・B1

  • ジーエフヤング

  • h-vetinari

  • nprad +

  • ssikdar1 +

  • tmnhat2001

  • topper-123

  • zertrin +