バージョン 0.17.1 (2015年11月21日)#
注
pandasがNumFOCUS組織の支援プロジェクトになったことを発表できることを誇りに思います(NumFOCUS組織)。これにより、世界クラスのオープンソースプロジェクトとしてのpandasの開発の成功が確実になります。
これは0.17.0からのマイナーなバグ修正リリースであり、多数のバグ修正に加え、いくつかの新機能、機能強化、パフォーマンス改善が含まれています。すべてのユーザーにこのバージョンへのアップグレードを推奨します。
主な機能は以下の通りです。
条件付きHTMLフォーマットのサポートについては、こちらを参照してください。
CSVリーダーおよびその他の操作でのGILの解放については、こちらを参照してください。
DataFrame.drop_duplicatesにおける0.16.2からのリグレッションが修正され、整数値で誤った結果を引き起こしていたバグが解決しました(GH 11376)。
v0.17.1の新機能
新機能#
条件付きHTMLフォーマット#
警告
これは新しい機能であり、現在活発に開発中です。将来のリリースでは機能を追加したり、互換性のない変更を行う可能性があります。フィードバックはGH 11610で歓迎します。
条件付きHTMLフォーマット、つまりデータに基づいたDataFrameの視覚的なスタイル設定について、実験的なサポートが追加されました。スタイル設定はHTMLとCSSで行われます。データが添付されたStylerのインスタンスであるpandas.DataFrame.style属性を使用して、スタイラークラスにアクセスします。
簡単な例を次に示します。
In [1]: np.random.seed(123) In [2]: df = pd.DataFrame(np.random.randn(10, 5), columns=list("abcde")) In [3]: html = df.style.background_gradient(cmap="viridis", low=0.5)
HTMLをレンダリングして、次のテーブルを取得できます。
| a | b | c | d | e | |
|---|---|---|---|---|---|
| 0 | -1.085631 | 0.997345 | 0.282978 | -1.506295 | -0.5786 |
| 1 | 1.651437 | -2.426679 | -0.428913 | 1.265936 | -0.86674 |
| 2 | -0.678886 | -0.094709 | 1.49139 | -0.638902 | -0.443982 |
| 3 | -0.434351 | 2.20593 | 2.186786 | 1.004054 | 0.386186 |
| 4 | 0.737369 | 1.490732 | -0.935834 | 1.175829 | -1.253881 |
| 5 | -0.637752 | 0.907105 | -1.428681 | -0.140069 | -0.861755 |
| 6 | -0.255619 | -2.798589 | -1.771533 | -0.699877 | 0.927462 |
| 7 | -0.173636 | 0.002846 | 0.688223 | -0.879536 | 0.283627 |
| 8 | -0.805367 | -1.727669 | -0.3909 | 0.573806 | 0.338589 |
| 9 | -0.01183 | 2.392365 | 0.412912 | 0.978736 | 2.238143 |
機能強化#
DatetimeIndexがastype(str)による文字列への変換をサポートしました (GH 10442)。pandas.DataFrame.to_csv()におけるcompression(gzip/bz2) のサポート (GH 7615)。pd.read_*関数は、filepath_or_buffer引数としてpathlib.Pathまたはpy:py._path.local.LocalPathオブジェクトも受け入れるようになりました。( GH 11033 ) -DataFrameおよびSeriesの関数.to_csv()、.to_html()および.to_latex()が、チルダで始まるパス (例:~/Documents/) を処理できるようになりました。( GH 11438 )DataFrameは、列が指定されていない場合、namedtupleのフィールドを列として使用するようになりました(GH 11181)。DataFrame.itertuples()は、可能な場合、namedtupleオブジェクトを返すようになりました。( GH 11269, GH 11625 )並行座標プロットに
axvlines_kwdsが追加されました(GH 10709)。.info()および.memory_usage()に、メモリ消費量の詳細な内部検査を提供するオプションが追加されました。これは計算にコストがかかる場合があるため、オプションのパラメータであることに注意してください。( GH 11595 )In [4]: df = pd.DataFrame({"A": ["foo"] * 1000}) # noqa: F821 In [5]: df["B"] = df["A"].astype("category") # shows the '+' as we have object dtypes In [6]: df.info() <class 'pandas.core.frame.DataFrame'> RangeIndex: 1000 entries, 0 to 999 Data columns (total 2 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 A 1000 non-null object 1 B 1000 non-null category dtypes: category(1), object(1) memory usage: 9.0+ KB # we have an accurate memory assessment (but can be expensive to compute this) In [7]: df.info(memory_usage="deep") <class 'pandas.core.frame.DataFrame'> RangeIndex: 1000 entries, 0 to 999 Data columns (total 2 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 A 1000 non-null object 1 B 1000 non-null category dtypes: category(1), object(1) memory usage: 59.9 KB
Indexにfillnaメソッドが追加されました(GH 10089)。In [8]: pd.Index([1, np.nan, 3]).fillna(2) Out[8]: Index([1.0, 2.0, 3.0], dtype='float64')
category型のSeriesは、その型カテゴリである場合、.str.<...>および.dt.<...>アクセサーメソッド/プロパティを利用できるようになりました。( GH 10661 )In [9]: s = pd.Series(list("aabb")).astype("category") In [10]: s Out[10]: 0 a 1 a 2 b 3 b Length: 4, dtype: category Categories (2, object): ['a', 'b'] In [11]: s.str.contains("a") Out[11]: 0 True 1 True 2 False 3 False Length: 4, dtype: bool In [12]: date = pd.Series(pd.date_range("1/1/2015", periods=5)).astype("category") In [13]: date Out[13]: 0 2015-01-01 1 2015-01-02 2 2015-01-03 3 2015-01-04 4 2015-01-05 Length: 5, dtype: category Categories (5, datetime64[ns]): [2015-01-01, 2015-01-02, 2015-01-03, 2015-01-04, 2015-01-05] In [14]: date.dt.day Out[14]: 0 1 1 2 2 3 3 4 4 5 Length: 5, dtype: int32
pivot_tableにmargins_name引数が追加され、デフォルトの「All」以外のものを使用できるようになりました(GH 3335)。固定HDF5ストアによる
datetime64[ns, tz]dtypeのエクスポートを実装しました(GH 11411)。セットの整形表示 (DataFrameセル内など) が、従来のPython構文 (
set([x, y])) の代わりにセットリテラル構文 ({x, y}) を使用するようになりました。( GH 11215 )pandas.io.gbq.to_gbq()でストリーミング挿入が失敗した場合(GH 11285)、およびDataFrameが宛先テーブルのスキーマと一致しない場合(GH 11359)のエラーメッセージを改善しました。
APIの変更点#
非サポートのインデックスタイプの場合、
Index.shiftでNotImplementedErrorを発生させるようにしました(GH 8038)。datetime64とtimedelta64dtyped seriesのminとmaxの削減が、nanではなくNaTを返すようになりました(GH 11245)。nullキーによるインデックス付けは、
ValueErrorではなくTypeErrorを発生させるようになりました(GH 11356)。Series.ptpはデフォルトで欠損値を無視するようになりました(GH 11163)。
非推奨#
パフォーマンス改善#
インデックスのソート前に単調性を確認するようにしました(GH 11080)。
Series.dropnaのパフォーマンスが向上しました。これは、dtypeがNaNを含まない場合です(GH 11159)。ほとんどのdatetimeフィールド操作(例:
DatetimeIndex.year、Series.dt.year)、正規化、およびPeriodとの変換、DatetimeIndex.to_periodおよびPeriodIndex.to_timestampにおけるGILを解放しました(GH 11263)。いくつかのローリングアルゴリズムでGILを解放しました:
rolling_median、rolling_mean、rolling_max、rolling_min、rolling_var、rolling_kurt、rolling_skew(GH 11450)。read_csv、read_tableでテキストファイルを読み込み、パースする際にGILを解放しました(GH 11272)。rolling_medianのパフォーマンスが向上しました(GH 11450)。to_excelのパフォーマンスが向上しました(GH 11352)。Categoricalカテゴリのreprにおけるパフォーマンスバグを修正しました。これは、表示のために文字列を切り詰める前にレンダリングしていました(GH 11305)。Categorical.remove_unused_categoriesのパフォーマンスが向上しました(GH 11643)。データなしで
DatetimeIndexを持つSeriesコンストラクタのパフォーマンスが向上しました(GH 11433)。groupbyにおける
shift、cumprod、およびcumsumのパフォーマンスが向上しました(GH 4095)。
バグ修正#
SparseArray.__iter__()はPython 3.5でPendingDeprecationWarningを引き起こさなくなりました(GH 11622)。0.16.2からの回帰である、長い浮動小数点数/NaNの出力フォーマットが(GH 11302)で復元されました。
Series.sort_index()がinplaceオプションを正しく処理するようになりました(GH 11402)。PyPiのビルドで、浮動小数点数のCSVを読み込み、na_values=<a scalar>を渡すと例外が発生する、誤って配布された.cファイル(GH 11374)を修正しました。.to_latex()の出力が、インデックスに名前がある場合に壊れるバグを修正しました(GH 10660)。HDFStore.appendで、エンコードされた長さがエンコードされていない最大長を超えた文字列を扱う際のバグを修正しました(GH 11234)。datetime64[ns, tz]dtypeのマージに関するバグを修正しました(GH 11405)。HDFStore.selectにおいて、where句でnumpyスカラーと比較する際のバグを修正しました(GH 11283)。DataFrame.ixをMultiIndexインデクサーと共に使用する際のバグを修正しました(GH 11372)。曖昧なエンドポイントを持つ
date_rangeのバグを修正しました(GH 11626)。アクセサー
.str、.dt、.catに新しい属性を追加するのを禁止しました。そのような値を取得することはできなかったため、設定時にエラーを発生させます。( GH 10673 )曖昧な時間と
.dtアクセサーによるタイムゾーン変換のバグを修正しました(GH 11295)。曖昧な時間を持つインデックスを使用する際の出力フォーマットのバグを修正しました(GH 11619)。
Seriesとlist-likeオブジェクトの比較に関するバグを修正しました(GH 11339)。
DataFrame.replaceにおけるバグで、datetime64[ns, tz]と互換性のないto_replaceを使用すると発生していました(GH 11326, GH 11153)。isnullにおけるバグを修正しました。numpy.array内のnumpy.datetime64('NaT')がnullと判定されていませんでした(GH 11206)。Mixed-integer Indexを用いたリスト状インデックスのバグを修正しました(GH 11320)。
pivot_tableにおいて、インデックスがCategoricaldtypeである場合にmargins=Trueを使用すると発生するバグを修正しました(GH 10993)。DataFrame.plotが16進数文字列の色を使用できないバグを修正しました(GH 10299)。DataFrame.drop_duplicatesにおける0.16.2からの回帰により、整数値で誤った結果が生じていたバグを修正しました(GH 11376)。pd.evalにおけるバグで、リスト内の単項演算子がエラーを発生させていたものを修正しました(GH 11235)。describe()が階層型インデックスの列名を削除するバグを修正しました(GH 11517)。DataFrame.pct_change()が.fillnaメソッドでaxisキーワードを伝播しないバグを修正しました(GH 11150)。columnsパラメータとして整数と文字列の列名が混在して渡された場合に.to_csv()で発生するバグを修正しました(GH 11637)。rangeによるインデックス作成のバグを修正しました(GH 11652)。numpyスカラーの推論と、列を設定する際のdtypeの保持に関するバグを修正しました(GH 11638)。
to_sqlがUnicodeの列名を使用するとUnicodeEncodeErrorを発生させるバグを修正しました(GH 11431)。plotにおけるxticksの設定に関する回帰を修正しました(GH 11529)。holiday.datesにおける、祝日に遵守規則を適用できないバグとドキュメントの改善を修正しました(GH 11477, GH 11533)。SubplotAxesの代わりにプレーンなAxesインスタンスがある場合のプロットの問題を修正しました(GH 11520, GH 11556)。DataFrame.to_latex()がheader=Falseの場合に余分な罫線を生成するバグを修正しました(GH 7124)。df.groupby(...).apply(func)において、funcが新しい日付時刻のような列を含むSeriesを返す場合のバグを修正しました(GH 11324)。ファイルサイズが大きい場合の
pandas.jsonのバグを修正しました(GH 11344)。dtype
datetime64[ns, tz]の空のシリーズ構築を妨げていたバグを修正しました(GH 11245)。整数を含むMultiIndexを持つ
read_excelのバグを修正しました(GH 11317)。openpyxl 2.2以降でのマージに関する
to_excelのバグを修正しました(GH 11408)。DataFrame.to_dict()が、データにdatetimeのみが存在する場合にTimestampではなくnp.datetime64オブジェクトを生成するバグを修正しました(GH 11327)。DataFrame.corr()が、ブール値と非ブール値の列を持つDataFrameに対してKendall相関を計算する際に例外を発生させるバグを修正しました(GH 11560)。FreeBSD 10+ (with
clang) におけるCinline関数によって引き起こされるリンク時エラーのバグを修正しました。( GH 10510 )DataFrame.to_csvにおける、MultiIndexesのフォーマットのための引数(date_formatを含む)の受け渡しに関するバグを修正しました(GH 7791)。DataFrame.join()でhow='right'を使用するとTypeErrorが発生するバグを修正しました(GH 11519)。Series.quantileで空のリストを渡すと、結果のIndexがobjectdtypeになるバグを修正しました(GH 11588)。pd.mergeの結果が空の場合に、Index(dtype=object)ではなく空のInt64Indexが返されるバグを修正しました(GH 11588)。NaN値がある場合のCategorical.remove_unused_categoriesのバグを修正しました(GH 11599)。DataFrame.to_sparse()がMultiIndexesの列名を失うバグを修正しました(GH 11600)。DataFrame.round()で非ユニークな列インデックスを使用すると致命的なPythonエラーが発生するバグを修正しました(GH 11611)。DataFrame.round()で、decimalsが非ユニークなインデックスを持つSeriesである場合に余分な列が生成されるバグを修正しました(GH 11618)。
貢献者#
このリリースには合計63名がパッチを貢献しました。名前に「+」が付いている人は初めてパッチを貢献した人です。
アレクサンドル・ドロズド +
アレックス・チェイス +
Anthonios Partheniou
ブレンバーン +
ブライアン・J・マクギルク +
Chris
クリスチャン・ベレンツ +
クリスチャン・ペレス +
コーディ・ピアソール +
データとコードの専門家 コードとデータを実験中
ドリールフ +
エヴァン・ライト
ギョーム・ゲイ
ハメド・サルジュギネジャド +
イブリス・リン +
ジェイク・ヴァンダープラス
ヤン・シュルツ
ジャン=マチュー・デシェーヌ +
ジェフ・リーバック
ジミー・カリン +
Joris Van den Bossche
K.-Michael Aye
カ・ウォ・チェン
ロイク・セガン=C +
ルオ・イーチェン +
マグナス・ユード +
マヌエル・レオンハルト +
マシュー・ギルバート
Maximilian Roos
マイケル +
ニコラス・スタール +
ニコラス・ボノット +
パスタファリアニスト +
ペトラ・チョン +
フィル・シャフ +
フィリップ・A +
ロブ・デカルヴァーリョ +
ローマン・ホメンコ +
レミー・レオーネ +
セバスチャン・バンク +
Sinhrks
ステファン・ホイヤー
ティエリー・モワザン
Tom Augspurger
タックス1 +
ヴァルン +
ヴィーラント・ホフマン +
ウィンターフラワー
ヨアブ・ラム +
ヨンガン・キム
ゼケ +
ajcr
azuranski +
behzad nouri
cel4
エミリー・ドルソン +
hironow +
レクシュアル
llllllllll +
ロックg
サイレントクエーサー +
sinhrks
テオールド +