2.1.0 の新機能 (2023 年 8 月 30 日)#
これらは pandas 2.1.0 の変更点です。他のバージョンの pandas を含む完全な変更履歴については、リリースノートを参照してください。
機能強化#
PyArrow は pandas 3.0 で必須の依存関係になります#
PyArrow は pandas 3.0 以降、pandas の必須の依存関係になります。この決定は PDEP 10 に基づいています。
これにより、pandas ユーザーに多大な利益をもたらすさらなる変更が可能になります。これには以下が含まれますが、これらに限定されません。
デフォルトで文字列を PyArrow のバックアップされた文字列として推論し、メモリフットプリントを大幅に削減し、パフォーマンスを大幅に向上させます。
デフォルトで
Decimal、lists、bytes、structured dataなど、より複雑な dtype を PyArrow で推論します。Apache Arrow に依存する他のライブラリとの相互運用性が向上します。
この決定に対するフィードバックはこちらで収集しています。
デフォルトで文字列に NumPy object dtype を使用しないようにします#
以前は、すべての文字列はデフォルトで NumPy object dtype を持つ列に格納されていました。このリリースでは、すべての文字列を dtype "string[pyarrow_numpy]" を持つ PyArrow のバックアップされた文字列として推論するオプション future.infer_string が導入されました。これは、比較操作で NumPy セマンティクスに従い、欠損値インジケーターとして np.nan を返す新しい文字列 dtype 実装です。このオプションを設定すると、dtype "string" も、オプション mode.string_storage の値に関係なく、ストレージが "pyarrow_numpy" に設定された StringDtype として推論されます。
このオプションは PyArrow がインストールされている場合にのみ機能します。PyArrow のバックアップされた文字列は、NumPy object と比較してメモリフットプリントが大幅に削減され、パフォーマンスが大幅に向上します (GH 54430)。
このオプションは、
pd.options.future.infer_string = True
で有効にできます。この動作は pandas 3.0 でデフォルトになります。
DataFrame の削減は拡張 dtype を保持します#
以前のバージョンの pandas では、DataFrame の削減 (DataFrame.sum() DataFrame.mean() など) の結果は、DataFrame が拡張 dtype であっても NumPy dtype を持っていました。pandas は、共通の dtype を持つ DataFrame 列に対する削減を行う際に、dtype を保持できるようになりました (GH 52788)。
以前の動作
In [1]: df = pd.DataFrame({"a": [1, 1, 2, 1], "b": [np.nan, 2.0, 3.0, 4.0]}, dtype="Int64")
In [2]: df.sum()
Out[2]:
a 5
b 9
dtype: int64
In [3]: df = df.astype("int64[pyarrow]")
In [4]: df.sum()
Out[4]:
a 5
b 9
dtype: int64
新しい動作
In [1]: df = pd.DataFrame({"a": [1, 1, 2, 1], "b": [np.nan, 2.0, 3.0, 4.0]}, dtype="Int64")
In [2]: df.sum()
Out[2]:
a 5
b 9
dtype: Int64
In [3]: df = df.astype("int64[pyarrow]")
In [4]: df.sum()
Out[4]:
a 5
b 9
dtype: int64[pyarrow]
以前は NumPy 整数 dtype であったのに対し、dtype がそれぞれマスクされた dtype と PyArrow dtype になったことに注目してください。
DataFrame の削減が拡張 dtype を保持できるようにするために、ExtensionArray._reduce() に新しいキーワードパラメータ keepdims が追加されました。keepdims=True を指定して ExtensionArray._reduce() を呼び出すと、削減軸に沿って長さ 1 の配列を返す必要があります。後方互換性を維持するために、このパラメータは必須ではありませんが、将来的には必須になります。シグネチャにこのパラメータが見つからない場合、DataFrame の削減は拡張 dtype を保持できません。また、このパラメータが見つからない場合、FutureWarning が発行され、mypy のような型チェッカーはシグネチャが ExtensionArray._reduce() と互換性がないと警告する可能性があります。
コピーオンライトの改善#
funcがSeriesをインプレースで変更する場合、Series.transform()がコピーオンライトを尊重しない (GH 53747)Index.values()の呼び出しは、読み取り専用の NumPy 配列を返すようになりました (GH 53704)DataFrameにSeriesを設定すると、ディープコピーではなくレイジーコピーが作成されるようになりました (GH 53142)DataFrameコンストラクタは、Index オブジェクトの辞書から DataFrame を構築し、copy=Falseを指定した場合、DataFrame の列にそれらの Index オブジェクトのレイジーコピーを使用するようになりました (GH 52947)Series または DataFrame のシャローコピー (
df.copy(deep=False)) は、データのシャローコピーだけでなく、行/列Indexオブジェクトのシャローコピーも返すようになりました。つまり、結果のインデックスはもはや同一ではありません (df.copy(deep=False).index is df.indexはもはや True ではありません) (GH 53721)DataFrame.head()およびDataFrame.tail()はディープコピーを返すようになりました (GH 54011)DataFrame.eval()にレイジーコピーメカニズムを追加しました (GH 53746)一時的な列選択でインプレース操作を試みる (例:
df["a"].fillna(100, inplace=True)) と、コピーオンライトが有効な場合は常に警告が発行されるようになりました。このモードでは、選択が一時的なコピーとして機能するため、このようなインプレース操作は機能しません。これは以下の場合に当てはまります。DataFrame.update / Series.update
DataFrame.fillna / Series.fillna
DataFrame.replace / Series.replace
DataFrame.clip / Series.clip
DataFrame.where / Series.where
DataFrame.mask / Series.mask
DataFrame.interpolate / Series.interpolate
DataFrame.ffill / Series.ffill
DataFrame.bfill / Series.bfill
新しい DataFrame.map() メソッドと ExtensionArray のサポート#
DataFrame.map() が追加され、DataFrame.applymap() は非推奨になりました。DataFrame.map() は DataFrame.applymap() と同じ機能を持っていますが、新しい名前は、これが Series.map() の DataFrame 版であることをよりよく伝えています (GH 52353)。
呼び出し可能オブジェクトが与えられた場合、Series.map() は Series のすべての要素に呼び出し可能オブジェクトを適用します。同様に、DataFrame.map() は DataFrame のすべての要素に呼び出し可能オブジェクトを適用し、Index.map() は Index のすべての要素に呼び出し可能オブジェクトを適用します。
多くの場合、呼び出し可能オブジェクトを配列の NaN ライクな値に適用することは望ましくなく、それを避けるために map メソッドを na_action="ignore"、つまり ser.map(func, na_action="ignore") で呼び出すことができます。しかし、多くの ExtensionArray および Index 型では na_action="ignore" が実装されておらず、nullable な数値型 (つまり、dtype が Int64 など) を除くすべての ExtensionArray サブクラスでは na_action="ignore" が正しく機能しませんでした。
na_action="ignore" はすべての配列型で機能するようになりました (GH 52219, GH 51645, GH 51809, GH 51936, GH 52033; GH 52096)。
以前の動作:
In [1]: ser = pd.Series(["a", "b", np.nan], dtype="category")
In [2]: ser.map(str.upper, na_action="ignore")
NotImplementedError
In [3]: df = pd.DataFrame(ser)
In [4]: df.applymap(str.upper, na_action="ignore") # worked for DataFrame
0
0 A
1 B
2 NaN
In [5]: idx = pd.Index(ser)
In [6]: idx.map(str.upper, na_action="ignore")
TypeError: CategoricalIndex.map() got an unexpected keyword argument 'na_action'
新しい動作:
In [5]: ser = pd.Series(["a", "b", np.nan], dtype="category")
In [6]: ser.map(str.upper, na_action="ignore")
Out[6]:
0 A
1 B
2 NaN
dtype: category
Categories (2, object): ['A', 'B']
In [7]: df = pd.DataFrame(ser)
In [8]: df.map(str.upper, na_action="ignore")
Out[8]:
0
0 A
1 B
2 NaN
In [9]: idx = pd.Index(ser)
In [10]: idx.map(str.upper, na_action="ignore")
Out[10]: CategoricalIndex(['A', 'B', nan], categories=['A', 'B'], ordered=False, dtype='category')
また、Categorical.map() は暗黙的に na_action がデフォルトで "ignore" に設定されていたことに注意してください。これは非推奨となり、Categorical.map() のデフォルトは、他のすべての配列型と一貫して na_action=None に変更されます。
DataFrame.stack() の新しい実装#
pandas は DataFrame.stack() を再実装しました。新しい実装を使用するには、引数 future_stack=True を渡します。これは pandas 3.0 で唯一のオプションになります。
以前の実装には、主に2つの動作上の欠点がありました。
以前の実装では、結果に不必要な NA 値が導入されました。ユーザーは
dropna=True(デフォルト) を渡すことで NA 値を自動的に削除できましたが、これを行うと、入力に存在した NA 値も結果から削除される可能性がありました。以下の例を参照してください。sort=True(デフォルト) を使用した以前の実装では、結果のインデックスの一部がソートされたり、ソートされなかったりすることがありました。入力の列がMultiIndexでない場合、結果のインデックスはソートされませんでした。列がMultiIndexの場合、ほとんどの場合、列レベルのスタッキングに由来する結果のインデックスのレベルはソートされました。まれに、列の作成方法によっては、そのようなレベルが非標準の順序でソートされることがありました。
新しい実装 (future_stack=True) では、複数のレベルをスタックする際に不必要な NA 値を導入せず、決してソートされません。そのため、future_stack=True を使用する場合、引数 dropna と sort は使用されず、指定されていない状態を維持する必要があります。これらの引数は次のメジャーリリースで削除されます。
In [11]: columns = pd.MultiIndex.from_tuples([("B", "d"), ("A", "c")])
In [12]: df = pd.DataFrame([[0, 2], [1, 3]], index=["z", "y"], columns=columns)
In [13]: df
Out[13]:
B A
d c
z 0 2
y 1 3
以前のバージョン (future_stack=False) では、dropna=True のデフォルトは不必要に導入された NA 値を削除しましたが、その過程で dtype を float64 に強制変換しました。新しいバージョンでは、NA は導入されないため、dtype の強制変換もありません。
In [14]: df.stack([0, 1], future_stack=False, dropna=True)
Out[14]:
z A c 2.0
B d 0.0
y A c 3.0
B d 1.0
dtype: float64
In [15]: df.stack([0, 1], future_stack=True)
Out[15]:
z B d 0
A c 2
y B d 1
A c 3
dtype: int64
入力に NA 値が含まれている場合、以前のバージョンは dropna=True でそれらも削除するか、dropna=False で新しい NA 値を導入しました。新しいバージョンは入力からのすべての値を保持します。
In [16]: df = pd.DataFrame([[0, 2], [np.nan, np.nan]], columns=columns)
In [17]: df
Out[17]:
B A
d c
0 0.0 2.0
1 NaN NaN
In [18]: df.stack([0, 1], future_stack=False, dropna=True)
Out[18]:
0 A c 2.0
B d 0.0
dtype: float64
In [19]: df.stack([0, 1], future_stack=False, dropna=False)
Out[19]:
0 A d NaN
c 2.0
B d 0.0
c NaN
1 A d NaN
c NaN
B d NaN
c NaN
dtype: float64
In [20]: df.stack([0, 1], future_stack=True)
Out[20]:
0 B d 0.0
A c 2.0
1 B d NaN
A c NaN
dtype: float64
その他の機能強化#
Series.ffill()およびSeries.bfill()は、IntervalDtypeを持つオブジェクトでサポートされるようになりました (GH 54247)read_parquet()にfiltersパラメータが追加され、両方のenginesと互換性のあるデータのフィルタリングができるようになりました (GH 53212)Categorical.map()およびCategoricalIndex.map()にna_actionパラメータが追加されました。Categorical.map()は暗黙的にna_actionのデフォルト値として"ignore"を持っていました。これは正式に非推奨となり、将来的にはNoneに変更されます。また、Series.map()はデフォルトでna_action=Noneであり、カテゴリカルデータを含む Series への呼び出しは、明示的に設定されていない限りna_action=Noneを使用するようになることに注意してください (GH 44279)api.extensions.ExtensionArrayにmap()メソッドが追加されました (GH 51809)DataFrame.applymap()は、基となるapi.extensions.ExtensionArrayインスタンスのmap()メソッドを使用するようになりました (GH 52219)MultiIndex.sort_values()がna_positionをサポートするようになりました (GH 51612)MultiIndex.sortlevel()とIndex.sortlevel()に新しいキーワードna_positionが追加されました (GH 51612)arrays.DatetimeArray.map()、arrays.TimedeltaArray.map()、およびarrays.PeriodArray.map()がna_action引数を受け入れるようになりました (GH 51644)arrays.SparseArray.map()がna_actionをサポートするようになりました (GH 52096)。pandas.read_html()が URL と一緒に使用されるときにstorage_optionsキーワードをサポートするようになり、ユーザーは送信 HTTP リクエストにヘッダーを追加できるようになりました (GH 49944)Index.diff()およびIndex.round()を追加しました (GH 19708)Stylerのescape引数に"latex-math"オプションを追加しました。これにより、書式設定中に"\("と"\)"の間のすべての文字がエスケープされません (GH 51903)CategoricalDtypeのrepr情報にカテゴリの dtype を追加しました (GH 52179)read_excel()にengine_kwargsパラメータを追加しました (GH 52214)型ヒントに役立つクラスが、新しいサブモジュール
pandas.api.typingにパブリック API として追加されました (GH 48577)Series.dt.is_month_start、Series.dt.is_month_end、Series.dt.is_year_start、Series.dt.is_year_end、Series.dt.is_quarter_start、Series.dt.is_quarter_end、Series.dt.days_in_month、Series.dt.unit、Series.dt.normalize、Series.dt.day_name()、Series.dt.month_name()、Series.dt.tz_convert()がpyarrow.timestampを持つArrowDtypeで実装されました (GH 52388, GH 51718)DataFrameGroupBy.agg()およびDataFrameGroupBy.transform()は、engine="numba"の場合、インデックスがMultiIndexでないときに複数のキーでグループ化できるようになりました (GH 53486)SeriesGroupBy.agg()およびDataFrameGroupBy.agg()は、engine="numba"の場合、複数の関数を渡すことをサポートするようになりました (GH 53486)SeriesGroupBy.transform()およびDataFrameGroupBy.transform()は、engine="numba"の場合、関数として文字列を渡すことをサポートするようになりました (GH 53579)DataFrame.stack()にsortキーワードが追加され、結果のMultiIndexレベルがソートされるかどうかを決定できるようになりました (GH 15105)DataFrame.unstack()にsortキーワードが追加され、結果のMultiIndexレベルがソートされるかどうかを決定できるようになりました (GH 15105)Series.explode()は PyArrow をバックアップするリスト型をサポートするようになりました (GH 53602)Series.str.join()はArrowDtype(pa.string())をサポートするようになりました (GH 53646)Categorical.from_codes()にvalidateパラメータを追加しました (GH 50975)Series.interpolate()およびDataFrame.interpolate()で使用されるExtensionArray.interpolate()を追加しました (GH 53659)DataFrame.to_excel()にengine_kwargsパラメータを追加しました (GH 53220)DatetimeTZDtypeのapi.interchange.from_dataframe()を実装しました (GH 54239)DatetimeTZDtypeに__from_arrow__を実装しました (GH 52201)算術演算の場合に、カスタム型が
DataFrame、Series、Index、またはExtensionArrayよりも優先されるように__pandas_priority__を実装しました。開発者ガイドを参照してください (GH 48347)DataFrame.merge()を使用して互換性のない列がある場合のエラーメッセージを改善しました (GH 51861)DataFrame.isetitem()を介して間違った列数でDataFrameを設定する場合のエラーメッセージを改善しました (GH 51701)DataFrame.to_json()を互換性のないindexおよびorient引数で使用する場合のエラー処理を改善しました (GH 52143)空のデータ (0 行)、インデックスなし、および間違った列数で DataFrame を作成する際のエラーメッセージを改善しました (GH 52084)
VariableOffsetWindowIndexerに無効なindexまたはoffset引数を提供する場合のエラーメッセージを改善しました (GH 54379)DataFrame.to_feather()が非デフォルトのIndexと非文字列の列名を受け入れるようになりました (GH 51787)Series.apply()およびDataFrame.apply()に新しいパラメータby_rowを追加しました。Falseに設定すると、提供された呼び出し可能オブジェクトは常に Series または DataFrame 全体で動作します (GH 53400, GH 53601)。DataFrame.shift()およびSeries.shift()は、期間のリストを提供することで複数の期間でシフトできるようになりました (GH 44424)numbaを使用した Groupby 集計 (例:DataFrameGroupBy.sum()) は、float64にキャストする代わりに、入力の dtype を保持できるようになりました (GH 44952)DataFrameGroupBy.agg()が失敗した場合のエラーメッセージを改善しました (GH 52930)DataFrame.to_pickle()やread_csv()など、多くの read/to_* 関数がlzma.LZMAFileに圧縮引数を転送することをサポートするようになりました (GH 52979)削減
Series.argmax()、Series.argmin()、Series.idxmax()、Series.idxmin()、Index.argmax()、Index.argmin()、DataFrame.idxmax()、DataFrame.idxmin()が object-dtype でサポートされるようになりました (GH 4279, GH 18021, GH 40685, GH 43697)DataFrame.to_parquet()およびread_parquet()は、それぞれattrsを書き込みおよび読み込みするようになりました (GH 54346)浮動小数点 dtype および timedelta64 dtypes を持つ
Index.all()およびIndex.any()は、Series.all()およびSeries.any()の動作と一致するようになり、TypeErrorを発生させなくなりました (GH 54566)Series.cummax()、Series.cummin()およびSeries.cumprod()は、PyArrow バージョン 13.0 以降の PyArrow dtypes でサポートされるようになりました (GH 52085)DataFrame Consortium Standard のサポートを追加しました (GH 54383)
DataFrameGroupBy.quantile()およびSeriesGroupBy.quantile()のパフォーマンスを改善しました (GH 51722)PyArrow のバックアップされた整数 dtypes がビット演算をサポートするようになりました (GH 54495)
下位互換性のない API の変更#
Python の最小バージョンが引き上げられました#
pandas 2.1.0 は Python 3.9 以降をサポートしています。
依存関係の最小バージョン引き上げ#
一部の依存関係の最小サポートバージョンが更新されました。インストールされている場合、以下のバージョンが必要になります。
パッケージ |
最小バージョン |
必須 |
変更済み |
|---|---|---|---|
numpy |
1.22.4 |
X |
X |
mypy (開発) |
1.4.1 |
X |
|
beautifulsoup4 |
4.11.1 |
X |
|
bottleneck |
1.3.4 |
X |
|
dataframe-api-compat |
0.1.7 |
X |
|
fastparquet |
0.8.1 |
X |
|
fsspec |
2022.05.0 |
X |
|
hypothesis |
6.46.1 |
X |
|
gcsfs |
2022.05.0 |
X |
|
jinja2 |
3.1.2 |
X |
|
lxml |
4.8.0 |
X |
|
numba |
0.55.2 |
X |
|
numexpr |
2.8.0 |
X |
|
openpyxl |
3.0.10 |
X |
|
pandas-gbq |
0.17.5 |
X |
|
psycopg2 |
2.9.3 |
X |
|
pyreadstat |
1.1.5 |
X |
|
pyqt5 |
5.15.6 |
X |
|
pytables |
3.7.0 |
X |
|
pytest |
7.3.2 |
X |
|
python-snappy |
0.6.1 |
X |
|
pyxlsb |
1.0.9 |
X |
|
s3fs |
2022.05.0 |
X |
|
scipy |
1.8.1 |
X |
|
sqlalchemy |
1.4.36 |
X |
|
表計算 |
0.8.10 |
X |
|
xarray |
2022.03.0 |
X |
|
xlsxwriter |
3.0.3 |
X |
|
zstandard |
0.17.0 |
X |
オプションライブラリについては、最新バージョンを使用することが一般的な推奨事項です。
詳細については、依存関係 および オプションの依存関係 を参照してください。
その他の API の変更#
arrays.PandasArrayはNumpyExtensionArrayに名前が変更され、関連する dtype 名がPandasDtypeからNumpyEADtypeに変更されました。PandasArrayのインポートは次のメジャーバージョンまで機能します (GH 53694)
非推奨#
setitem-like Series 操作でのサイレントアップキャストは非推奨になりました#
PDEP-6: https://pandas.dokyumento.jp/pdeps/0006-ban-upcasting.html
dtype をサイレントにアップキャストする Series (または DataFrame 列) の setitem-like 操作は非推奨となり、警告が表示されます。影響を受ける操作の例は次のとおりです。
ser.fillna('foo', inplace=True)ser.where(ser.isna(), 'foo', inplace=True)ser.iloc[indexer] = 'foo'ser.loc[indexer] = 'foo'df.iloc[indexer, 0] = 'foo'df.loc[indexer, 'a'] = 'foo'ser[indexer] = 'foo'
ここで、ser は Series、df は DataFrame、indexer はスライス、マスク、単一値、値のリストまたは配列、またはその他の許可されたインデクサーです。
将来のバージョンでは、これらはエラーを発生させるため、最初に共通の dtype にキャストする必要があります。
以前の動作:
In [1]: ser = pd.Series([1, 2, 3])
In [2]: ser
Out[2]:
0 1
1 2
2 3
dtype: int64
In [3]: ser[0] = 'not an int64'
In [4]: ser
Out[4]:
0 not an int64
1 2
2 3
dtype: object
新しい動作:
In [1]: ser = pd.Series([1, 2, 3])
In [2]: ser
Out[2]:
0 1
1 2
2 3
dtype: int64
In [3]: ser[0] = 'not an int64'
FutureWarning:
Setting an item of incompatible dtype is deprecated and will raise an error in a future version of pandas.
Value 'not an int64' has dtype incompatible with int64, please explicitly cast to a compatible dtype first.
In [4]: ser
Out[4]:
0 not an int64
1 2
2 3
dtype: object
現在の動作を維持するには、上記の場合、最初に ser を object dtype にキャストすることができます。
In [21]: ser = pd.Series([1, 2, 3])
In [22]: ser = ser.astype('object')
In [23]: ser[0] = 'not an int64'
In [24]: ser
Out[24]:
0 not an int64
1 2
2 3
dtype: object
使用例に応じて、別の dtype にキャストする方が適切な場合があります。以下の例では、float64 にキャストしています。
In [25]: ser = pd.Series([1, 2, 3])
In [26]: ser = ser.astype('float64')
In [27]: ser[0] = 1.1
In [28]: ser
Out[28]:
0 1.1
1 2.0
2 3.0
dtype: float64
詳細については、https://pandas.dokyumento.jp/pdeps/0006-ban-upcasting.html を参照してください。
混合タイムゾーンを持つ日付時刻の解析は非推奨になりました#
ユーザーが to_datetime() に utc=True を渡さない限り、混合タイムゾーンを持つ日付時刻の解析は非推奨となり、警告が表示されます (GH 50887)
以前の動作:
In [7]: data = ["2020-01-01 00:00:00+06:00", "2020-01-01 00:00:00+01:00"]
In [8]: pd.to_datetime(data, utc=False)
Out[8]:
Index([2020-01-01 00:00:00+06:00, 2020-01-01 00:00:00+01:00], dtype='object')
新しい動作:
In [9]: pd.to_datetime(data, utc=False)
FutureWarning:
In a future version of pandas, parsing datetimes with mixed time zones will raise
a warning unless `utc=True`. Please specify `utc=True` to opt in to the new behaviour
and silence this warning. To create a `Series` with mixed offsets and `object` dtype,
please use `apply` and `datetime.datetime.strptime`.
Index([2020-01-01 00:00:00+06:00, 2020-01-01 00:00:00+01:00], dtype='object')
この警告を抑制し、将来のバージョンの pandas でのエラーを回避するには、utc=True を指定してください。
In [29]: data = ["2020-01-01 00:00:00+06:00", "2020-01-01 00:00:00+01:00"]
In [30]: pd.to_datetime(data, utc=True)
Out[30]: DatetimeIndex(['2019-12-31 18:00:00+00:00', '2019-12-31 23:00:00+00:00'], dtype='datetime64[ns, UTC]', freq=None)
混合オフセットと object dtype を持つ Series を作成するには、apply と datetime.datetime.strptime を使用してください。
In [31]: import datetime as dt
In [32]: data = ["2020-01-01 00:00:00+06:00", "2020-01-01 00:00:00+01:00"]
In [33]: pd.Series(data).apply(lambda x: dt.datetime.strptime(x, '%Y-%m-%d %H:%M:%S%z'))
Out[33]:
0 2020-01-01 00:00:00+06:00
1 2020-01-01 00:00:00+01:00
dtype: object
その他の非推奨事項#
DataFrameGroupBy.dtypesは非推奨になりました。代わりに基となるオブジェクトのdtypesを確認してください (GH 51045)DataFrame._dataおよびSeries._dataは非推奨になりました。代わりにパブリック API を使用してください (GH 33333)concat()の動作で、連結されるオブジェクトのいずれかの長さが 0 の場合が非推奨になりました。過去には、結果の dtype を決定する際に空のオブジェクトの dtypes は無視されていましたが、将来のバージョンでは無視されません (GH 39122)Categorical.to_list()は非推奨になりました。代わりにobj.tolist()を使用してください (GH 51254)DataFrameGroupBy.all()およびDataFrameGroupBy.any()を datetime64 またはPeriodDtype値で使用する場合が非推奨になりました。SeriesおよびDataFrameの非推奨事項と一致します (GH 34479)DataFrame.ewm()、DataFrame.rolling()、DataFrame.expanding()でのaxis=1は非推奨になりました。代わりにメソッドを呼び出す前に転置してください (GH 51778)DataFrame.groupby()およびGrouperコンストラクタでのaxis=1は非推奨になりました。代わりにframe.T.groupby(...)を実行してください (GH 51203)Series.align()およびDataFrame.align()でのbroadcast_axisキーワードは非推奨になりました。left = DataFrame({col: left for col in right.columns}, index=right.index)でalignを呼び出す前にアップキャストしてください (GH 51856)Index.fillna()でのdowncastキーワードは非推奨になりました (GH 53956)DataFrame.pct_change()、Series.pct_change()、DataFrameGroupBy.pct_change()、およびSeriesGroupBy.pct_change()でのfill_methodおよびlimitキーワードは非推奨になりました。pct_changeを呼び出す前に、例えばDataFrame.ffill()またはDataFrame.bfill()を明示的に呼び出してください (GH 53491)DataFrame.align()およびSeries.align()でのmethod、limit、およびfill_axisキーワードは非推奨になりました。代わりに、アラインメント結果に対してDataFrame.fillna()またはSeries.fillna()を明示的に呼び出してください (GH 51856)Rolling.quantile()およびExpanding.quantile()でのquantileキーワードは非推奨になりました。代わりにqに変更されました (GH 52550)DataFrame.take()でのスライスの受け入れは非推奨になりました。代わりにobj[slicer]を呼び出すか、整数のシーケンスを渡してください (GH 51539)すべて NA エントリまたは任意の NA と
skipna=Falseを持つDataFrame.idxmax()、DataFrame.idxmin()、Series.idxmax()、Series.idxmin()の動作は非推奨になりました。将来のバージョンでは、これらはValueErrorを発生させます (GH 51276)Series.agg()に与えられた関数が、Seriesの各要素に対して操作を試み、要素ごとの操作が失敗した場合にのみSeries全体で操作する動作は非推奨になりました。将来は、Series.agg()に与えられた関数は常にSeries全体でのみ動作します。現在の動作を維持するには、代わりにSeries.transform()を使用してください (GH 53325)DataFrame.agg()に与えられた関数のリストの関数が、DataFrameの各要素に対して操作を試み、要素ごとの操作が失敗した場合にのみDataFrameの列で操作する動作は非推奨になりました。現在の動作を維持するには、代わりにDataFrame.transform()を使用してください (GH 53325)DataFrame.from_records()にDataFrameを渡すことは非推奨になりました。代わりにDataFrame.set_index()またはDataFrame.drop()を使用してください (GH 51353)文字列を日付時刻に解析する際に、認識されないタイムゾーンをサイレントに削除する動作は非推奨になりました (GH 18702)
DataFrame.ewm()、Series.ewm()、DataFrame.rolling()、Series.rolling()、DataFrame.expanding()、Series.expanding()でのaxisキーワードは非推奨になりました (GH 51778)DataFrame.resample()、Series.resample()でのaxisキーワードは非推奨になりました (GH 51778)Series.interpolate()、DataFrame.interpolate()、Series.fillna()、DataFrame.fillna()、Series.ffill()、DataFrame.ffill()、Series.bfill()、DataFrame.bfill()でのdowncastキーワードは非推奨になりました (GH 40988)len(keys) != len(objs)の両方でconcat()を使用する動作は非推奨になりました。将来のバージョンでは、2つのシーケンスの短い方に切り捨てられるのではなく、エラーが発生します (GH 43485)NA 値が存在する場合の
Series.argsort()の動作は非推奨になりました。将来のバージョンでは、-1 を与えるのではなく、最後にソートされます (GH 54219)DataFrame.groupby()およびSeries.groupby()でのobserved=Falseのデフォルトは非推奨になりました。これは将来のバージョンでTrueになります (GH 43999)SeriesGroupBy.aggregate()集計で各グループにgroup.nameをピン留めする動作は非推奨になりました。操作で groupby キーを利用する必要がある場合は、代わりに groupby オブジェクトを反復処理してください (GH 41090)DataFrameGroupBy.idxmax()、DataFrameGroupBy.idxmin()、DataFrameGroupBy.fillna()、DataFrameGroupBy.take()、DataFrameGroupBy.skew()、DataFrameGroupBy.rank()、DataFrameGroupBy.cumprod()、DataFrameGroupBy.cumsum()、DataFrameGroupBy.cummax()、DataFrameGroupBy.cummin()、DataFrameGroupBy.pct_change()、DataFrameGroupBy.diff()、DataFrameGroupBy.shift()、およびDataFrameGroupBy.corrwith()でのaxisキーワードは非推奨になりました。axis=1の場合は、代わりに基となるDataFrameで操作してください (GH 50405, GH 51046)as_index=Falseを持つDataFrameGroupByが、DataFrame の列でないグループ化を結果に含めない動作は非推奨になりました (GH 49519)is_categorical_dtype()は非推奨になりました。代わりにisinstance(obj.dtype, pd.CategoricalDtype)を使用してください (GH 52527)非推奨の
is_datetime64tz_dtype()は、代わりにisinstance(dtype, pd.DatetimeTZDtype)を使用して確認してください (GH 52607)非推奨の
is_int64_dtype()は、代わりにdtype == np.dtype(np.int64)を使用して確認してください (GH 52564)非推奨の
is_interval_dtype()は、代わりにisinstance(dtype, pd.IntervalDtype)を使用して確認してください (GH 52607)非推奨の
is_period_dtype()は、代わりにisinstance(dtype, pd.PeriodDtype)を使用して確認してください (GH 52642)非推奨の
is_sparse()は、代わりにisinstance(dtype, pd.SparseDtype)を使用して確認してください (GH 52642)非推奨の
Styler.applymap_index()。代わりに新しいStyler.map_index()メソッドを使用してください (GH 52708)非推奨の
Styler.applymap()。代わりに新しいStyler.map()メソッドを使用してください (GH 52708)非推奨の
DataFrame.applymap()。代わりに新しいDataFrame.map()メソッドを使用してください (GH 52353)非推奨の
DataFrame.swapaxes()とSeries.swapaxes()は、代わりにDataFrame.transpose()またはSeries.transpose()を使用してください (GH 51946)PeriodArrayコンストラクタのfreqパラメータは非推奨です。代わりにdtypeを渡してください (GH 52462)take()で非標準の入力を許可することは非推奨です。代わりにnumpy.ndarray、ExtensionArray、Index、またはSeriesのいずれかを渡してください (GH 52981)isin()、value_counts()、unique()、factorize()で非標準のシーケンスを許可することは非推奨です。呼び出す前にnumpy.ndarray、Index、ExtensionArray、またはSeriesのいずれかに変換してください (GH 52986)DataFrameのリダクションsum、prod、std、var、semでaxis=Noneを使用する動作は非推奨です。将来のバージョンでは、これはaxis=0のように動作するのではなく、両軸で操作してスカラーを返します。これはnp.sum(df)などの NumPy 関数にも影響することに注意してください (GH 21597)concat()の動作で、DataFrameがすべてNAの列を持つ場合に、将来のバージョンでは結果のdtypeを決定する際にこれらの列は破棄されなくなります (GH 40893)Series.dt.to_pydatetime()の動作は非推奨です。将来のバージョンでは、これは datetime のndarrayではなく、Python のdatetimeオブジェクトを含むSeriesを返します。これは他のSeries.dtプロパティの動作と一致します (GH 20306)pandas オブジェクトと dtype のないシーケンス (例:
list、tuple) の間の論理演算 (|、&、^) は非推奨です。代わりに操作を行う前にシーケンスをSeriesまたは NumPy 配列でラップしてください (GH 51521)Series.apply()のパラメータconvert_typeは非推奨です (GH 52140)SeriesGroupBy.agg()に辞書を渡すことは非推奨です。代わりに集計のリストを渡してください (GH 50684)Categoricalコンストラクタのfastpathキーワードは非推奨です。代わりにCategorical.from_codes()を使用してください (GH 20110)オブジェクト dtype のブールオブジェクトの
Indexに対してis_bool_dtype()がTrueを返す動作は非推奨です (GH 52680)メソッド
Series.bool()およびDataFrame.bool()は非推奨です (GH 51749)DatetimeIndexコンストラクタの未使用のclosedおよびnormalizeキーワードは非推奨です (GH 52628)TimedeltaIndexコンストラクタの未使用のclosedキーワードは非推奨です (GH 52628)インデックスが異なる2つの非ブール
Series間の論理演算で、常に結果がブールdtypeに強制される動作は非推奨です。将来のバージョンでは、これは入力の戻り値を維持します (GH 52500、GH 52538)BDayfreq を持つPeriodおよびPeriodDtypeは非推奨です。代わりにBDayfreq を持つDatetimeIndexを使用してください (GH 53446)非推奨の
value_counts()は、代わりにpd.Series(obj).value_counts()を使用してください (GH 47862)非推奨の
Series.first()およびDataFrame.first()は、代わりにマスクを作成し.locを使用してフィルタリングしてください (GH 45908)オブジェクト dtype の
Series.interpolate()およびDataFrame.interpolate()は非推奨です (GH 53631)非推奨の
Series.last()およびDataFrame.last()は、代わりにマスクを作成し.locを使用してフィルタリングしてください (GH 53692)SparseDtypeで任意のfill_valueを許可することは非推奨です。将来のバージョンでは、fill_valueはdtype.subtypeと互換性がある必要があります。つまり、そのサブタイプで保持できるスカラーであるか、整数またはブールサブタイプの場合はNaNである必要があります (GH 23124)DataFrameGroupBy.quantile()およびSeriesGroupBy.quantile()でブールdtypeを許可することは非推奨です。Series.quantile()およびDataFrame.quantile()の動作と整合性があります (GH 51424)testing.assert_series_equal()およびtesting.assert_frame_equal()でNAに似た値 (例:NaNとNoneを同等と見なす) を考慮する動作は非推奨です (GH 52081)read_excel()へのバイト入力は非推奨です。ファイルパスを読み込むには、文字列またはパスのようなオブジェクトを使用してください (GH 53767)スカラーデータからの
SparseArrayの構築は非推奨です。代わりにシーケンスを渡してください (GH 53039)DataFrame.replace()およびSeries.replace()で、valueが指定されておらず、to_replaceが辞書のようなものでない場合に、フォールバックして埋める動作は非推奨です (GH 33302)read_json()へのリテラル JSON 入力は非推奨です。代わりにリテラル JSON 文字列入力をio.StringIOでラップしてください (GH 53409)read_xml()へのリテラル文字列入力は非推奨です。代わりにリテラル文字列/バイト入力をio.StringIO/io.BytesIOでラップしてください (GH 53767)read_html()へのリテラル文字列/バイト入力は非推奨です。代わりにリテラル文字列/バイト入力をio.StringIO/io.BytesIOでラップしてください (GH 53767)オプション
mode.use_inf_as_naは非推奨です。代わりにNaNに変換してから使用してください (GH 51684)DataFrameGroupBy.get_group()のパラメータobjは非推奨です (GH 53545)Series.__getitem__()およびSeries.__setitem__()を使用したSeriesへの位置インデックス付けは非推奨です。将来のバージョンでは、ser[item]はitemを位置ではなくラベルとして*常に*解釈します (GH 50617).agg、.apply、.transformでの組み込み関数と NumPy 関数の置換は非推奨です。代わりに、対応する文字列エイリアス (例:sumまたはnp.sumの"sum") を使用してください (GH 53425)to_timedelta()で単位を示す文字列T、t、L、lは非推奨です (GH 52536).ExtensionArray.fillnaの "method" および "limit" キーワードは非推奨です。代わりに_pad_or_backfillを実装してください (GH 53621)DataFrame.replace()およびSeries.replace()のmethodおよびlimitキーワードは非推奨です (GH 33302)Series.fillna()、DataFrame.fillna()、SeriesGroupBy.fillna()、DataFrameGroupBy.fillna()、およびResampler.fillna()のmethodおよびlimitキーワードは非推奨です。代わりにobj.bfill()またはobj.ffill()を使用してください (GH 53394)浮動小数点 dtype インデックスを持つオブジェクトに対する整数スライスでの
Series.__getitem__()、Series.__setitem__()、DataFrame.__getitem__()、DataFrame.__setitem__()の動作は非推奨です。将来のバージョンでは、これは *位置* インデックス付けとして扱われます (GH 49612)pandas.array()でサポートされていない datetime64 および timedelta64 解像度の使用は非推奨です。サポートされている解像度は、「s」、「ms」、「us」、「ns」解像度です (GH 53058)Series.interpolate()およびDataFrame.interpolate()の値"pad"、"ffill"、"bfill"、"backfill"は非推奨です。代わりにobj.ffill()またはobj.bfill()を使用してください (GH 53581)Index.argmax()、Index.argmin()、Series.argmax()、Series.argmin()の動作で、すべてNAかつskipna=Trueの場合、または任意のNAかつskipna=Falseの場合に -1 を返すのは非推奨です。将来のバージョンではValueErrorが発生します (GH 33941、GH 33942)DataFrame.to_sql()でnameとcon以外の非キーワード引数を許可することは非推奨です (GH 54229)DataFrame.shift()、Series.shift()、およびDataFrameGroupBy.shift()にfreqとfill_valueの両方を渡した場合に、fill_valueが暗黙的に無視される動作は非推奨です。将来のバージョンではValueErrorが発生します (GH 53832)
パフォーマンス改善#
同種の
np.float64またはnp.float32dtype を持つconcat()のパフォーマンスが向上しました (GH 52685)文字列を含まないオブジェクト列に対する
factorize()のパフォーマンスが向上しました (GH 51921)リモート URI ファイルパスを読み込む際の
read_orc()のパフォーマンスが向上しました (GH 51609)engine="pyarrow"でリモートファイルを読み込む際のread_parquet()およびDataFrame.to_parquet()のパフォーマンスが向上しました (GH 51609)use_nullable_dtypes=Trueを使用した場合の文字列列に対するread_parquet()のパフォーマンスが向上しました (GH 47345)DataFrame.clip()およびSeries.clip()のパフォーマンスが向上しました (GH 51472)itemsが与えられた場合のDataFrame.filter()のパフォーマンスが向上しました (GH 52941)拡張配列 dtype に対する
DataFrame.first_valid_index()およびDataFrame.last_valid_index()のパフォーマンスが向上しました (GH 51549)condが拡張 dtype に対応している場合のDataFrame.where()のパフォーマンスが向上しました (GH 51574)verify_integrity=Trueの場合のMultiIndex.set_levels()およびMultiIndex.set_codes()のパフォーマンスが向上しました (GH 51873)ascendingがリストである場合のMultiIndex.sortlevel()のパフォーマンスが向上しました (GH 51612)Series.combine_first()のパフォーマンスが向上しました (GH 51777)配列がnullを含まない場合の
fillna()のパフォーマンスが向上しました (GH 51635)配列がゼロのnullまたはすべてのnullである場合の
isna()のパフォーマンスが向上しました (GH 51630)文字列を
boolean[pyarrow]dtype にパースする際のパフォーマンスが向上しました (GH 51730)Periodのデフォルトフォーマッタ (period_format) は大幅に (約2倍) 高速化されました。これにより、str(Period)、repr(Period)、Period.strftime(fmt=None)()のパフォーマンスが向上し、.PeriodArray.strftime(fmt=None)、.PeriodIndex.strftime(fmt=None)、.PeriodIndex.format(fmt=None)も改善されました。デフォルトのdate_formatを持つPeriodArrayまたはPeriodIndexを含むto_csv操作も大幅に高速化されました (GH 51459)arrays.IntegerArrays.dtypeとarrays.FloatingArray.dtypeへのアクセスパフォーマンスが向上しました (GH 52998)engine="numba"を使用したDataFrameGroupBy/SeriesGroupBy集計 (例:DataFrameGroupBy.sum()) のパフォーマンスが向上しました (GH 53731)axis=1と拡張 dtype を持つDataFrameリダクションのパフォーマンスが向上しました (GH 54341)axis=Noneと拡張 dtype を持つDataFrameリダクションのパフォーマンスが向上しました (GH 54308)インデックス/列の値がすでにソートされている場合の
MultiIndexおよび複数列操作 (例:DataFrame.sort_values()、DataFrame.groupby()、Series.unstack()) のパフォーマンスが向上しました (GH 53806)axis=1でオブジェクトのインデックスが異なる場合のconcat()のパフォーマンスが向上しました (GH 52541)連結軸が
MultiIndexである場合のconcat()のパフォーマンスが向上しました (GH 53574)engine="c"を使用したread_csv()のパフォーマンスが向上しました (GH 52632)ArrowExtensionArray.to_numpy()のパフォーマンスが向上しました (GH 52525)DataFrameGroupBy.groups()のパフォーマンスが向上しました (GH 53088)dtypeが拡張 dtype である場合のDataFrame.astype()のパフォーマンスが向上しました (GH 54299)入力が単一の整数で、DataFrame が拡張 dtype でバックアップされている場合の
DataFrame.iloc()のパフォーマンスが向上しました (GH 54508)拡張 dtype の
DataFrame.isin()のパフォーマンスが向上しました (GH 53514)行と列を選択する場合の
DataFrame.loc()のパフォーマンスが向上しました (GH 53014)単一の PyArrow dtype を持つ DataFrame を転置する際の
DataFrame.transpose()のパフォーマンスが向上しました (GH 54224)単一のマスクされた dtype (例:
Int64) を持つ DataFrame を転置する際のDataFrame.transpose()のパフォーマンスが向上しました (GH 52836)PyArrow 文字列およびバイナリ dtype に対する
Series.add()のパフォーマンスが向上しました (GH 53150)拡張 dtype に対する
Series.corr()およびSeries.cov()のパフォーマンスが向上しました (GH 52502)ArrowDtypeに対するSeries.drop_duplicates()のパフォーマンスが向上しました (GH 54667)。PyArrow dtype を使用した
Series.ffill()、Series.bfill()、DataFrame.ffill()、DataFrame.bfill()のパフォーマンスが向上しました (GH 53950)PyArrow バックアップの文字列に対する
Series.str.get_dummies()のパフォーマンスが向上しました (GH 53655)PyArrow バックアップの文字列に対する
Series.str.get()のパフォーマンスが向上しました (GH 53152)PyArrow バックアップの文字列に対して
expand=Trueを使用した場合のSeries.str.split()のパフォーマンスが向上しました (GH 53585)dtype が NumPy 浮動小数点 dtype で
na_valueがnp.nanである場合のSeries.to_numpy()のパフォーマンスが向上しました (GH 52430)PyArrow のタイムスタンプまたは期間 dtype から NumPy に変換する際の
astype()のパフォーマンスが向上しました (GH 53326)さまざまな
MultiIndexセットおよびインデックス操作のパフォーマンスが向上しました (GH 53955)不要な検証を回避することで、
arrays.IntegerArrayおよびarrays.FloatingArrayでの様々な再整形操作のパフォーマンスが向上しました (GH 53013)PyArrow タイムスタンプおよび期間 dtype を使用したインデックス作成のパフォーマンスが向上しました (GH 53368)
配列を
RangeIndex.take()、DataFrame.loc()、またはDataFrame.iloc()に渡す場合、および DataFrame が RangeIndex を使用している場合のパフォーマンスが向上しました (GH 53387)
バグ修正#
カテゴリカル#
CategoricalIndex.remove_categories()で、順序付けられたカテゴリが維持されないバグを修正しました (GH 53935)。読み取り専用の null 値マスクを持つ nullable 配列に対して
dtype="category"を使用したSeries.astype()のバグを修正しました (GH 53658)Series.map()のバグで、シリーズがCategoricalを保持している場合にna_actionパラメータの値が使用されない問題を修正しました (GH 22527)。
日付時刻ライク#
na_action="ignore"を使用したDatetimeIndex.map()が期待通りに動作するようになりました (GH 51644)DatetimeIndex.slice_indexer()は、スライス境界のいずれかがインデックスにない非単調インデックスに対してKeyErrorを発生させるようになりました。この動作は以前非推奨でしたが、一貫して処理されていませんでした (GH 53983)DateOffsetオブジェクトを定数で乗算したときに一貫性のない動作をするDateOffsetのバグを修正しました (GH 47953)freqがnanosecondsを持つDateOffsetであった場合のdate_range()のバグを修正しました (GH 46877)to_datetime()が PyArrow タイムスタンプのarrays.ArrowExtensionArrayを含むSeriesまたはDataFrameを NumPy datetime に変換する際のバグを修正しました (GH 52545)DatetimeArray.map()およびDatetimeIndex.map()のバグで、指定された呼び出し可能オブジェクトが要素ごとではなく配列全体で動作する問題を修正しました (GH 51977)PyArrow バックアップの日付のような dtype に対して
DataFrame.to_sql()がValueErrorを発生させるバグを修正しました (GH 53854)Timestamp.date()、Timestamp.isocalendar()、Timestamp.timetuple()、およびTimestamp.toordinal()が、Python 標準ライブラリの datetime モジュールでサポートされている範囲外の入力に対して誤った結果を返すバグを修正しました (GH 53668)Timestamp.round()のバグで、実装境界に近い値がOutOfBoundsDatetimeを発生させる代わりに誤った結果を返す問題を修正しました (GH 51494)datetime または timedelta スカラーから
SeriesまたはDataFrameを構築する際に、入力から推論するのではなく常にナノ秒解像度を推論するバグを修正しました (GH 52212)日付なしの時間を表す文字列から
Timestampを構築する際に、誤った単位を推論するバグを修正しました (GH 54097)ts_input=pd.NAでTimestampを構築する際にTypeErrorが発生するバグを修正しました (GH 45481)曜日があるが日がない datetime 文字列 (例: "2023 Sept Thu") をパースする際に、誤って
ValueErrorではなくAttributeErrorが発生するバグを修正しました (GH 52659)dtype がタイムゾーン対応の datetime でナノ秒以外の解像度を持つ場合に、
Seriesの repr でOutOfBoundsDatetimeが発生するバグを修正しました (GH 54623)
Timedelta#
TimedeltaIndexの除算または乗算で、.freqがNoneではなく「0 Days」になるバグを修正しました (GH 51575)NumPy
timedelta64オブジェクトを持つTimedeltaが適切にValueErrorを発生させないバグを修正しました (GH 52806)to_timedelta()がpyarrow.durationのArrowDtypeを含むSeriesまたはDataFrameを NumPytimedelta64に変換する際のバグを修正しました (GH 54298)Timedelta.__hash__()のバグで、特定の大きな秒解像度の値でOutOfBoundsTimedeltaが発生する問題を修正しました (GH 54037)Timedelta.round()のバグで、実装境界に近い値がOutOfBoundsTimedeltaを発生させる代わりに誤った結果を返す問題を修正しました (GH 51494)na_action="ignore"を使用したTimedeltaIndex.map()のバグを修正しました (GH 51644)arrays.TimedeltaArray.map()およびTimedeltaIndex.map()のバグで、指定された呼び出し可能オブジェクトが要素ごとではなく配列全体で動作する問題を修正しました (GH 51977)
タイムゾーン#
タイムゾーン対応のタイムスタンプの
Seriesに対してinfer_freq()がTypeErrorを発生させるバグを修正しました (GH 52456)DatetimeTZDtype.base()が常にナノ秒解像度の NumPy dtype を返すバグを修正しました (GH 52705)
数値#
RangeIndexが数値から減算されたときにstepを誤って設定するバグを修正しました (GH 53255)マスクされた dtype に対して
Series.corr()およびSeries.cov()がAttributeErrorを発生させるバグを修正しました (GH 51422)Series.kurt()およびSeries.skew()を、すべてゼロの NumPy データに対して呼び出すと、NumPy 型ではなく Python 型が返されるバグ (GH 53482)Series.mean()、DataFrame.mean()で、数値に変換できる文字列 (例: "2") を含む object-dtype 値が不正な数値結果を返すバグ。これらの関数はTypeErrorを発生するようになりました (GH 36703, GH 44008)DataFrame.corrwith()が PyArrow バックエンドの dtypes に対してNotImplementedErrorを発生するバグ (GH 52314)DataFrame.size()およびSeries.size()が Python int ではなく 64 ビット整数を返すバグ (GH 52897)DateFrame.dot()がArrowDtypeデータに対してobjectdtype を返すバグ (GH 53979)Series.any(),Series.all(),DataFrame.any(),DataFrame.all()で、bool_onlyのデフォルト値がFalseではなくNoneに設定されていたバグ。この変更はユーザーに影響を与えないはずです (GH 53258)マスクされた dtype に対して
Series.corr()およびSeries.cov()がAttributeErrorを発生させるバグを修正しました (GH 51422)Series.median()およびDataFrame.median()で、数値に変換できる文字列 (例: "2") を含む object-dtype 値が不正な数値結果を返すバグ。これらの関数はTypeErrorを発生するようになりました (GH 34671)Series.sum()が dtypeuint64をint64に変換するバグ (GH 53401)
変換#
DataFrame.style.to_latex()およびDataFrame.style.to_html()で、DataFrame が浮動小数点倍精度で表現できる桁数よりも多い桁数を持つ整数を含んでいる場合に発生するバグ (GH 52272)array()で、単位が "s"、"us"、または "ms" のdatetime64またはtimedelta64dtype が指定された場合、DatetimeArrayまたはTimedeltaArrayではなくNumpyExtensionArrayが返されるバグ (GH 52859)array()で、空のリストと dtype が指定されなかった場合、FloatingArrayではなくNumpyExtensionArrayが返されるバグ (GH 54371)ArrowDtype.numpy_dtype()が、ナノ秒単位ではないpyarrow.timestampおよびpyarrow.duration型に対してナノ秒単位を返すバグ (GH 51800)DataFrame.__repr__()が、列の dtype がnp.recordの場合にTypeErrorを誤って発生するバグ (GH 48526)DataFrame.info()がuse_numbaが設定されている場合にValueErrorを発生するバグ (GH 51922)DataFrame.insert()がlocがnp.int64の場合にTypeErrorを発生するバグ (GH 53193)HDFStore.select()が、大きな整数を格納して取得する際に精度を失うバグ (GH 54186)Series.astype()がobject_をサポートしないバグ (GH 54251)
文字列#
Series.str()が反復されたときにTypeErrorを発生しなかったバグ (GH 54173)文字列 dtype の列を持つ
DataFrame`のreprのバグ (GH 54797)
Interval#
IntervalIndex.get_indexer()およびIntervalIndex.get_indexer_nonunique()がtargetが読み取り専用配列の場合に発生するバグ (GH 53703)IntervalDtypeで、オブジェクトが削除されたときに生き残る可能性があったバグ (GH 54184)interval_range()で、float 型のstepが浮動小数点アーティファクトから不正な間隔を生成するバグ (GH 54477)
インデックス付け#
DataFrame.__setitem__()が、重複する列にDataFrameを設定する際に dtype を失うバグ (GH 53143)DataFrame.__setitem__()でブールマスクを使用し、DataFrame.putmask()で混合された非数値 dtype とNaN以外の値を使用すると、誤ってTypeErrorが発生するバグ (GH 53291)DataFrame.iloc()で、唯一の要素としてnanを使用した場合のバグ (GH 52234)Series.loc()が、定義済みインデックスのobjectdtype のSeriesにSeriesを割り当てる際に、Seriesをnp.dnarrayにキャストするバグ (GH 48933)
欠損値#
DataFrame.interpolate()が、methodが"pad","ffill","bfill", または"backfill"の場合にデータを埋められないバグ (GH 53898)DataFrame.interpolate()が、DataFrameが空の場合にinplaceを無視するバグ (GH 53199)Series.idxmin(),Series.idxmax(),DataFrame.idxmin(),DataFrame.idxmax()で、NaTを含むDatetimeIndexインデックスを使用した場合に、誤ってNaTではなくNaNが返されるバグ (GH 43587)Series.interpolate()およびDataFrame.interpolate()が、無効なdowncastキーワード (Noneまたは"infer"のみ可能) に対してエラーを発生しないバグ (GH 53103)Series.interpolate()およびDataFrame.interpolate()で、複雑な dtype の場合にNaNエントリを埋められないバグ (GH 53635)
MultiIndex#
MultiIndex.set_levels()がCategoricalの dtypes を保持しないバグ (GH 52125)長い要素を持つ
MultiIndexを表示する際のバグ (GH 52960)
I/O#
DataFrame.to_orc()が、デフォルト以外のIndexが与えられた場合にValueErrorを発生するようになりました (GH 51828)DataFrame.to_sql()が、SQLAlchemy を使用して接続する際に name パラメータが空の場合にValueErrorを発生するようになりました (GH 52675)json_normalize()がメタデータフィールドのリスト型を解析できなかったバグ (GH 37782)read_csv()で、parse_datesがリストまたは辞書に設定され、engine="pyarrow"が使用された場合にエラーが発生するバグ (GH 47961)read_csv()で、engine="pyarrow"とindex_colを指定してdtypeを指定した場合にエラーが発生するバグ (GH 53229)read_hdf()がIndexErrorが発生した後、ストアを適切に閉じないバグ (GH 52781)read_html()で、スタイル要素が DataFrame に読み込まれるバグ (GH 52197)read_html()で、display:noneスタイルを含む要素とともに末尾のテキストが削除されるバグ (GH 51629)read_sql_table()がビューを読み込む際に例外を発生するバグ (GH 52969)read_sql()で、同じ列名を持つ複数のタイムゾーン対応列を読み込む場合のバグ (GH 44421)read_xml()が文字列データの空白を削除するバグ (GH 53811)DataFrame.to_html()で、マルチインデックス列の場合にcolspaceが誤って適用されるバグ (GH 53885)DataFrame.to_html()で、複雑な dtype を持つ空のDataFrameの変換がValueErrorを発生するバグ (GH 54167)DataFrame.to_json()で、ナノ秒以外の精度を持つDateTimeArray/DateTimeIndexが正しくシリアライズできないバグ (GH 53686)空の Stata dta ファイルを書き込み、読み込む際に dtype 情報が失われるバグ (GH 46240)
bz2が必須要件として扱われていたバグ (GH 53857)
期間#
PeriodDtypeコンストラクタが、引数が渡されなかった場合やNoneが渡された場合にTypeErrorを発生しないバグ (GH 27388)PeriodDtypeコンストラクタが、異なるDateOffsetfreq入力に対して同じnormalizeを誤って返すバグ (GH 24121)PeriodDtypeコンストラクタが、無効な型が渡された場合にTypeErrorではなくValueErrorを発生するバグ (GH 51790)PeriodDtypeで、オブジェクトが削除されたときに生き残る可能性があったバグ (GH 54184)read_csv()で、engine="pyarrow"の場合に空文字列を null 値として処理しないバグ (GH 52087)read_csv()で、engine="pyarrow"の場合に、すべての列が null の場合にfloat64dtype の列ではなくobjectdtype の列を返すバグ (GH 52087)Period.now()がfreqパラメータをキーワード引数として受け入れないバグ (GH 53369)PeriodIndex.map()でna_action="ignore"を使用した場合のバグ (GH 51644)arrays.PeriodArray.map()およびPeriodIndex.map()で、指定された呼び出し可能オブジェクトが要素ごとではなく配列ごとに動作するバグ (GH 51977)CustomBusinessDayfreq を持つPeriodまたはPeriodDtypeの構築を誤って許可していたバグ。代わりにBusinessDayを使用してください (GH 52534)
プロット#
Series.plot()でcolor=Noneが指定された場合のバグ (GH 51953)DataFrame.plot.scatter()でc="b"が指定された場合の UserWarning を修正しました (GH 53908)
Groupby/resample/rolling#
DataFrameGroupBy.idxmin(),SeriesGroupBy.idxmin(),DataFrameGroupBy.idxmax(),SeriesGroupBy.idxmax()が、空の DataFrameGroupBy または SeriesGroupBy で使用された場合に誤った dtype を返すバグ (GH 51423)DataFrame.groupby.rank()で、na_option="bottom"またはna_option="top"を渡した場合にヌル許容データ型に対して発生するバグ (GH 54206)DataFrame.resample()およびSeries.resample()で、TimedeltaIndexでリサンプリングする際に、非固定のfreqを誤って許可するバグ (GH 51896)DataFrame.resample()およびSeries.resample()で、空のデータをリサンプリングする際にタイムゾーンを失うバグ (GH 53664)DataFrame.resample()およびSeries.resample()で、軸の範囲外の値の場合にoriginがリサンプリングに影響を与えないバグ (GH 53662)重み付き移動集計で
min_periods=0を指定した場合のバグ (GH 51449)DataFrame.groupby()およびSeries.groupby()で、グループ化されたSeriesまたはDataFrameのインデックスがDatetimeIndex,TimedeltaIndexまたはPeriodIndexであり、groupbyメソッドの最初の引数に関数が与えられた場合に、その関数がインデックスの各要素ではなくインデックス全体に対して動作するバグ (GH 51979)DataFrameGroupBy.agg()でリストを使用した場合にas_index=Falseが尊重されないバグ (GH 52849)DataFrameGroupBy.apply()で、入力DataFrameが groupby 後にDataFrameとしてサブセット化され ([['a']]であり['a']ではない)、与えられた呼び出し可能オブジェクトがすべて同じようにインデックス付けされていないSeriesを返した場合にエラーが発生するバグ (GH 52444)DataFrameGroupBy.apply()で、複数の列を選択し、np.ndarray結果を返す関数を指定した場合にTypeErrorが発生するバグ (GH 18930)DataFrameGroupBy.groups()およびSeriesGroupBy.groups()で、日付時刻キーと別のキーを組み合わせて使用すると、グループキーの数が誤って生成されるバグ (GH 51158)DataFrameGroupBy.quantile()およびSeriesGroupBy.quantile()が、sort=Falseの場合に結果インデックスを暗黙的にソートする可能性があるバグ (GH 53009)SeriesGroupBy.size()で、ArrowDtypeまたはマスクされた dtypes (例:Int64) を持つデータの場合に dtype がnp.int64になるバグ (GH 53831)DataFrame.groupby()で、グループ化オブジェクトに対する列選択が、単一要素からなるリストでグループ化した場合に名前をタプルとして返さないバグ (GH 53500)DataFrameGroupBy.var()およびSeriesGroupBy.var()が、datetime64, timedelta64 またはPeriodDtype値で呼び出された場合にTypeErrorを発生しないバグ (GH 52128, GH 53045)DataFrameGroupBy.resample()で、kind="period"の場合にAttributeErrorが発生するバグ (GH 24103)Resampler.ohlc()で、空のオブジェクトが空のDataFrameではなくSeriesを返すバグ (GH 42902)SeriesGroupBy.count()およびDataFrameGroupBy.count()で、ArrowDtypeまたはマスクされた dtypes (例:Int64) を持つデータの場合に dtype がnp.int64になるバグ (GH 53831)SeriesGroupBy.nth()およびDataFrameGroupBy.nth()で、dropna="any"またはdropna="all"を使用して列選択を実行した後で列がサブセット化されないバグ (GH 53518)SeriesGroupBy.nth()およびDataFrameGroupBy.nth()で、dropna="any"またはdropna="all"を使用して列選択を実行した後に、行がドロップされるバグ (GH 53518)SeriesGroupBy.sum()およびDataFrameGroupBy.sum()がnp.inf + np.infおよび(-np.inf) + (-np.inf)をそれぞれnp.infおよび-np.infではなくnp.nanに合計するバグ (GH 53606)Series.groupby()で、グループ化されたSeriesがDatetimeIndexインデックスを持ち、名前が月のSeriesがby引数に与えられた場合にエラーが発生するバグ (GH 48509)
再整形#
concat()が、1つの列がpa.null()dtype を持つ場合にobjectdtype に強制変換するバグ (GH 53702)crosstab()で、dropna=Falseの場合に結果にnp.nanが保持されないバグ (GH 10772)merge_asof()が拡張 dtypes に対してKeyErrorを発生するバグ (GH 52904)merge_asof()が、読み取り専用 ndarray でバックアップされたデータに対してValueErrorを発生するバグ (GH 53513)merge_asof()で、left_index=Trueまたはright_index=Trueと、一致しないインデックス dtype を使用した場合に、MergeErrorを発生する代わりに一部のケースで誤った結果を返すバグ (GH 53870)merge()で、整数ExtensionDtypeと浮動小数点 NumPy dtype でマージする際にTypeErrorが発生するバグ (GH 46178)DataFrame.agg()およびSeries.agg()で、一意でない列に対して dict-like 引数が渡された場合に不正な型を返すバグ (GH 51099)DataFrame.combine_first()がotherが空の場合に他の列を無視するバグ (GH 53792)DataFrame.idxmin()およびDataFrame.idxmax()で、空のフレームの場合に軸の dtype が失われるバグ (GH 53265)DataFrame.merge()で、単一レベルのMultiIndexを持つ場合に正しくマージされないバグ (GH 52331)DataFrame.stack()が、列がMultiIndexであり、フレームが混合された dtypes を含む場合に拡張 dtypes を失うバグ (GH 45740)DataFrame.stack()が列を辞書順にソートするバグ (GH 53786)DataFrame.transpose()がオブジェクト列の dtype を推測するバグ (GH 51546)Series.combine_first()がint64dtype をfloat64に変換し、非常に大きな整数で精度を失うバグ (GH 51764)空の
DataFrameオブジェクトを結合する際に、結合されたインデックスが結合されたインデックス型ではなくRangeIndexになるバグ (GH 52777)
スパース#
SparseDtypeコンストラクタが、そのサブタイプ (NumPy dtype である必要がある) に互換性のないdtypeが与えられた場合にTypeErrorを発生しないバグ (GH 53160)arrays.SparseArray.map()が、fill 値を sparse 値に含めることを許可していたバグ (GH 52095)
ExtensionArray#
ArrowStringArrayコンストラクタが、文字列の辞書型でValueErrorを発生するバグ (GH 54074)DataFrameコンストラクタが、dict で与えられた場合に拡張 dtype を持つSeriesをコピーしないバグ (GH 53744)ArrowExtensionArrayが、pandas のナノ秒以外の時間オブジェクトを非ゼロ値からゼロ値に変換するバグ (GH 53171)Series.quantile()で、PyArrow の時間型に対してArrowInvalidを発生するバグ (GH 52678)Series.rank()で、Float64dtype の小さな値に対して誤った順序を返すバグ (GH 52471)Series.unique()で、NA値を持つブール型ArrowDtypeに対して発生するバグ (GH 54667)__iter__()および__getitem__()が、ナノ秒以外の dtype に対して python の datetime および timedelta オブジェクトを返すバグ (GH 53326)factorize()が、複数のチャンクを持つpyarrow.dictionary型pyarrow.chunked_arrayに対して不正なユニーク値を返すバグ (GH 54844)ExtensionArrayサブクラスをdtypeキーワードに渡す場合のバグ。これはインスタンスを渡すことを推奨するためにUserWarningを発生するようになりました (GH 31356, GH 54592)DataFrameの repr が、列にpyarrow.ExtensionDtypeを持つArrowDtypeがある場合に機能しないバグ (GH 54063)マスクされた ExtensionDtypes (例:
Float64Dtype,BooleanDtype) の__from_arrow__メソッドが、pyarrow.null()型の PyArrow 配列を受け入れないバグ (GH 52223)
Styler#
メタデータ#
DataFrame.max(),DataFrame.min(),DataFrame.prod(),DataFrame.mean(),Series.mode(),DataFrame.median(),DataFrame.sem(),DataFrame.skew(),DataFrame.kurt()でのメタデータ伝播を修正しました (GH 28283)DataFrame.squeeze()およびDataFrame.describe()でのメタデータ伝播を修正しました (GH 28283)DataFrame.std()でのメタデータ伝播を修正しました (GH 28283)
その他#
FloatingArray.__contains__で、NaN値が存在する場合にNaNアイテムが誤ってFalseを返すバグ (GH 52840)DataFrameおよびSeriesで、NaN値が存在する場合に複雑な dtype のデータに対してエラーが発生するバグ (GH 53627)DatetimeIndexで、時間が深夜で、日ベースではない freq を持つインデックスのreprが時間を表示しないバグ (GH 53470)testing.assert_frame_equal()およびtesting.assert_series_equal()が、2つの異なるセットに対してアサーションエラーを発生するようになりました (GH 51727)testing.assert_frame_equal()が、インデックスタイプをチェックしないように要求された場合でもカテゴリ dtype をチェックするバグ (GH 52126)api.interchange.from_dataframe()がallow_copy引数を尊重しないバグ (GH 54322)api.interchange.from_dataframe()が、null 値を含む非pandas tz-aware データから交換する際に発生するバグ (GH 54287)api.interchange.from_dataframe()で、空の DataFrame オブジェクトを変換する際のバグ (GH 53155)from_dummies()で、結果のIndexが元のIndexと一致しないバグ (GH 54300)from_dummies()で、結果のデータが列の dtype ではなく常にobjectdtype になるバグ (GH 54300)DataFrameGroupBy.first(),DataFrameGroupBy.last(),SeriesGroupBy.first(), およびSeriesGroupBy.last()で、空のグループが対応するExtensionArrayNA 値ではなくnp.nanを返すバグ (GH 39098)DataFrame.pivot_table()で、int の平均を int にキャストし直すバグ (GH 16676)DataFrame.reindex()で、ExtensionDtypeで推測されるべきfill_valueが誤ってobjectdtype を推測するバグ (GH 52586)DataFrame.shift()で、単一のExtensionDtype列を持つDataFrameに対してaxis=1を使用した場合に不正な結果を返すバグ (GH 53832)keyが渡された際のIndex.sort_values()のバグ (GH 52764)method=”asfreq”が指定されたときに正しくエラーを発生させない
Series.align()、DataFrame.align()、Series.reindex()、DataFrame.reindex()、Series.interpolate()、DataFrame.interpolate()のバグ (GH 53620)無効な
axisが渡されたときにエラーを発生させないSeries.argsort()のバグ (GH 54257)空のシリーズに関数を渡した際に、返されるシリーズのdtypeが
objectになっていたSeries.map()のバグ。現在は元のdtypeを保持するようになった (GH 52384)deep=Trueの場合に、オブジェクトのSeriesでエラーを発生させ、GC補正を考慮しないため返される値が正しくないSeries.memory_usage()のバグ (GH 51858)period_range()で、freqが引数として渡されなかった場合のデフォルトの挙動が誤っていた (GH 53687)pandas._libs.jsonの誤った__name__属性を修正 (GH 52898)
貢献者#
このリリースには合計266人がパッチを寄稿しました。名前の横に「+」が付いている人は、初めてパッチを寄稿しました。
AG +
Aarni Koskela
Adrian D’Alessandro +
Adrien RUAULT +
Ahmad +
Aidos Kanapyanov +
Alex Malins
Alexander Seiler +
Ali Asgar +
Allison Kwan
Amanda Bizzinotto +
Andres Algaba +
Angela Seo +
Anirudh Hegde +
Antony Evmorfopoulos +
Anushka Bishnoi
ArnaudChanoine +
Artem Vorobyev +
Arya Sarkar +
Ashwin Srinath
Austin Au-Yeung +
Austin Burnett +
Bear +
Ben Mangold +
Bernardo Gameiro +
Boyd Kane +
Brayan Alexander Muñoz B +
Brock
Chetan0402 +
Chris Carini
ChristofKaufmann
Clark-W +
Conrad Mcgee Stocks
Corrie Bartelheimer +
Coulton Theuer +
D067751 +
ダニエル・アイザック
Daniele Nicolodi +
David Samuel +
David Seifert +
Dea Leon +
Dea María Léon
Deepyaman Datta
Denis Sapozhnikov +
Dharani Akurathi +
DimiGrammatikakis +
Dirk Ulbricht +
Dmitry Shemetov +
Dominik Berger
Efkan S. Goktepe +
Ege Özgüroğlu
Eli Schwartz
Erdi +
Fabrizio Primerano +
Facundo Batista +
ファンチェン・リー
Felipe Maion +
Francis +
Future Programmer +
Gabriel Kabbe +
Gaétan Ramet +
Gianluca Ficarelli
Godwill Agbehonou +
Guillaume Lemaitre
Guo Ci
Gustavo Vargas +
Hamidreza Sanaee +
HappyHorse +
Harald Husum +
Hugo van Kemenade
Ido Ronen +
アーブ・ラスティッグ
JHM ダービーシャー
JHM ダービーシャー (iMac)
JJ +
Jarrod Millman
Jay +
ジェフ・リーバック
Jessica Greene +
Jiawei Zhang +
Jinli Xiao +
Joanna Ge +
Jona Sassenhagen +
ヨナス・ハーグ
Joris Van den Bossche
Joshua Shew +
Julian Badillo
Julian Ortiz +
Julien Palard +
Justin Tyson +
Justus Magin
Kabiir Krishna +
Kang Su Min
Ketu Patel +
Kevin +
Kevin Anderson
Kevin Jan Anker
Kevin Klein +
ケビン・シェパード
Kostya Farber
LM +
Lars Lien Ankile +
Lawrence Mitchell
Liwei Cai +
Loic Diridollou
Luciana Solorzano +
Luke Manley
Lumberbot (aka Jack)
Marat Kopytjuk +
Marc Garcia
Marco Edward Gorelli
MarcoGorelli
Maria Telenczuk +
MarvinGravert +
Mateusz Sokół +
Matt Richards
Matthew Barber +
Matthew Roeschke
Matus Valo +
Mia Reimer +
Michael Terry +
Michael Tiemann +
Milad Maani Jou +
Miles Cranmer +
MirijaH +
Miyuu +
Natalia Mokeeva
Nathan Goldbaum +
Nicklaus Roach +
Nicolas Camenisch +
Nikolay Boev +
Nirav
Nishu Choudhary
ノア・タミール
Noy Hanan +
Numan +
Numan Ijaz +
Omar Elbaz +
Pandas Development Team
パーフェイト・ガサナ
Parthi
Patrick Hoefler
Patrick Schleiter +
Pawel Kranzberg +
Philip
Philip Meier +
Pranav Saibhushan Ravuri
PrathumP +
Rahul Siloniya +
Rajasvi Vinayak +
Rajat Subhra Mukherjee +
Ralf Gommers
RaphSku
Rebecca Chen +
Renato Cotrim Maciel +
Reza (Milad) Maanijou +
Richard Shadrach
Rithik Reddy +
Robert Luce +
Ronalido +
Rylie Wei +
SOUMYADIP MAL +
Sanjith Chockan +
Sayed Qaiser Ali +
Scott Harp +
Se +
Shashwat Agrawal
Simar Bassi +
Simon Brugman +
Simon Hawkins
Simon Høxbro Hansen
Snorf Yang +
Sortofamudkip +
Stefan Krawczyk
ステファニー・モリン
Stefanie Senger
Stelios Petrakis +
スティン・ヴァン・ホーイ
スヴェン
Sylvain MARIE
シルヴァン・マリー
テルジ・ピーターセン
ティエリー・モワザン
Thomas
トーマス・A・キャスウェル
トーマス・グレンジャー
Thomas Li
Thomas Vranken +
Tianye Song +
Tim Hoffmann
Tim Loderhose +
Tim Swast
Timon Jurschitsch +
Tolker-KU +
Tomas Pavlik +
Toroi +
トルステン・ヴェルトワイン
Travis Gibbs +
Umberto Fasci +
Valerii +
VanMyHu +
Victor Momodu +
Vijay Vaidyanathan +
VomV +
ウィリアム・アンドレア
ウィリアム・エイド
Wolf Behrenhoff +
Xiao Yuan
Yao Xiao
Yasin Tatar
Yaxin Li +
Yi Wei +
Yulia +
Yusharth Singh +
Zach Breger +
Zhengbo Wang
abokey1 +
ahmad2901 +
assafam +
auderson
august-tengland +
bunardsheng +
cmmck +
cnguyen-03 +
coco +
dependabot[bot]
giplessis +
github-actions[bot]
gmaiwald +
gmollard +
jbrockmendel
kathleenhang
kevx82 +
lia2710 +
liang3zy22 +
ltartaro +
lusolorz +
m-ganko +
mKlepsch +
mattkeanny +
mrastgoo +
nabdoni +
omar-elbaz +
paulreece +
penelopeysm +
potap75 +
pre-commit-ci[bot] +
raanasn +
raj-thapa +
ramvikrams +
レベッカ-パーマー
reddyrg1 +
rmhowe425 +
segatrade +
shteken +
sweisss +
taytzehao
tntmatthews +
tpaxman +
tzehaoo +
v-mcoutinho +
wcgonzal +
yonashub
yusharth +
Ádám Lippai
Štěpán Műller +