2.0.0 の新機能 (2023年4月3日)#
これらは pandas 2.0.0 の変更点です。他のバージョンの pandas を含む完全な変更履歴については、リリースノート を参照してください。
機能強化#
pip extras を使用したオプションの依存関係のインストール#
pip を使用して pandas をインストールする場合、extras を指定することで、オプションの依存関係のセットもインストールできます。
pip install "pandas[performance, aws]>=2.0.0"
インストールガイド にある利用可能な extras は、[all, performance, computation, fss, aws, gcp, excel, parquet, feather, hdf5, spss, postgresql, mysql, sql-other, html, xml, plot, output_formatting, clipboard, compression, test] です (GH 39164)。
Index が NumPy 数値 dtype を保持できるようになりました#
Index で任意の NumPy 数値 dtype を使用できるようになりました (GH 42717)。
以前は int64、uint64、float64 の dtype のみ使用可能でした。
In [1]: pd.Index([1, 2, 3], dtype=np.int8)
Out[1]: Int64Index([1, 2, 3], dtype="int64")
In [2]: pd.Index([1, 2, 3], dtype=np.uint16)
Out[2]: UInt64Index([1, 2, 3], dtype="uint64")
In [3]: pd.Index([1, 2, 3], dtype=np.float32)
Out[3]: Float64Index([1.0, 2.0, 3.0], dtype="float64")
Int64Index、UInt64Index、および Float64Index は pandas バージョン 1.4 で非推奨となり、現在は削除されています。代わりに Index を直接使用する必要があります。これは、すべての NumPy 数値 dtype、つまり int8/int16/int32/int64/uint8/uint16/uint32/uint64/float32/float64 の dtype を受け入れることができます。
In [1]: pd.Index([1, 2, 3], dtype=np.int8)
Out[1]: Index([1, 2, 3], dtype='int8')
In [2]: pd.Index([1, 2, 3], dtype=np.uint16)
Out[2]: Index([1, 2, 3], dtype='uint16')
In [3]: pd.Index([1, 2, 3], dtype=np.float32)
Out[3]: Index([1.0, 2.0, 3.0], dtype='float32')
Index が NumPy 数値 dtype を保持できるようになったことで、Pandas の機能にいくつかの変更が生じました。特に、以前は 64 ビットインデックスの作成を強制されていた操作が、より低いビットサイズ (例: 32 ビットインデックス) のインデックスを作成できるようになりました。
以下は、変更点の網羅的ではないリストです。
NumPy 数値配列を使用してインスタンス化すると、NumPy 配列の dtype に従うようになりました。以前は、NumPy 数値配列から作成されたすべてのインデックスは 64 ビットに強制されていました。例えば、
Index(np.array([1, 2, 3]))は、以前は 32 ビットシステムでもint64でしたが、現在は 32 ビットシステムではint32になります。数値のリストを使用してIndexをインスタンス化すると、以前と同様に 64 ビット dtype が返されます (例:Index([1, 2, 3])はint64dtype を持ちます)。DatetimeIndexの各種数値 datetime 属性 (day、month、yearなど) は、以前はint64の dtype でしたが、arrays.DatetimeArrayの場合はint32でした。これらはDatetimeIndexでもint32になりました。In [4]: idx = pd.date_range(start='1/1/2018', periods=3, freq='ME') In [5]: idx.array.year Out[5]: array([2018, 2018, 2018], dtype=int32) In [6]: idx.year Out[6]: Index([2018, 2018, 2018], dtype='int32')
Series.sparse.from_coo()からのインデックスのレベル dtype は、scipy スパース行列のrows/colsと同じint32の dtype になりました。以前はint64の dtype でした。In [7]: from scipy import sparse In [8]: A = sparse.coo_matrix( ...: ([3.0, 1.0, 2.0], ([1, 0, 0], [0, 2, 3])), shape=(3, 4) ...: ) ...: In [9]: ser = pd.Series.sparse.from_coo(A) In [10]: ser.index.dtypes Out[10]: level_0 int32 level_1 int32 dtype: object
Indexは float16 dtype を使用してインスタンス化できません。以前は、dtypefloat16を使用してIndexをインスタンス化すると、float64dtype を持つFloat64Indexが生成されていました。現在はNotImplementedErrorが発生します。In [11]: pd.Index([1, 2, 3], dtype=np.float16) --------------------------------------------------------------------------- NotImplementedError Traceback (most recent call last) Cell In[11], line 1 ----> 1 pd.Index([1, 2, 3], dtype=np.float16) File ~/work/pandas/pandas/pandas/core/indexes/base.py:577, in Index.__new__(cls, data, dtype, copy, name, tupleize_cols) 573 arr = ensure_wrapped_if_datetimelike(arr) 575 klass = cls._dtype_to_subclass(arr.dtype) --> 577 arr = klass._ensure_array(arr, arr.dtype, copy=False) 578 result = klass._simple_new(arr, name, refs=refs) 579 if dtype is None and is_pandas_object and data_dtype == np.object_: File ~/work/pandas/pandas/pandas/core/indexes/base.py:602, in Index._ensure_array(cls, data, dtype, copy) 599 raise ValueError("Index data must be 1-dimensional") 600 elif dtype == np.float16: 601 # float16 not supported (no indexing engine) --> 602 raise NotImplementedError("float16 indexes are not supported") 604 if copy: 605 # asarray_tuplesafe does not always copy underlying data, 606 # so need to make sure that this happens 607 data = data.copy() NotImplementedError: float16 indexes are not supported
引数 dtype_backend、pyarrow-backed または numpy-backed nullable dtype を返す#
以下の関数に新しいキーワード dtype_backend が追加されました (GH 36712)。
このオプションが "numpy_nullable" に設定されている場合、nullable dtype によってバックアップされた DataFrame を返します。
このキーワードが "pyarrow" に設定されている場合、これらの関数は pyarrow-backed nullable ArrowDtype DataFrame を返します (GH 48957、GH 49997)。
In [12]: import io
In [13]: data = io.StringIO("""a,b,c,d,e,f,g,h,i
....: 1,2.5,True,a,,,,,
....: 3,4.5,False,b,6,7.5,True,a,
....: """)
....:
In [14]: df = pd.read_csv(data, dtype_backend="pyarrow")
In [15]: df.dtypes
Out[15]:
a int64[pyarrow]
b double[pyarrow]
c bool[pyarrow]
d string[pyarrow]
e int64[pyarrow]
f double[pyarrow]
g bool[pyarrow]
h string[pyarrow]
i null[pyarrow]
dtype: object
In [16]: data.seek(0)
Out[16]: 0
In [17]: df_pyarrow = pd.read_csv(data, dtype_backend="pyarrow", engine="pyarrow")
In [18]: df_pyarrow.dtypes
Out[18]:
a int64[pyarrow]
b double[pyarrow]
c bool[pyarrow]
d string[pyarrow]
e int64[pyarrow]
f double[pyarrow]
g bool[pyarrow]
h string[pyarrow]
i null[pyarrow]
dtype: object
Copy-on-Write の改善#
Copy-on-Write の最適化 にリストされているメソッドに、対象のオブジェクトが変更されるまでコピーを遅延させる新しい遅延コピーメカニズムが追加されました。これらのメソッドは、Copy-on-Write が有効になっている場合、ビューを返し、通常の実行と比較して大幅なパフォーマンス向上を実現します (GH 49473)。
DataFrame の単一列を Series としてアクセスする (例:
df["col"]) と、Copy-on-Write が有効になっている場合、毎回新しいオブジェクトが返されるようになりました (同一のキャッシュされた Series オブジェクトが複数回返されることはありません)。これにより、これらの Series オブジェクトが Copy-on-Write ルールに正しく従うことが保証されます (GH 49450)。Seriesコンストラクタは、既存の Series から Series を構築する際に、デフォルトのcopy=Falseで遅延コピー (データの変更が発生するまでコピーを遅延) を作成するようになりました (GH 50471)。DataFrameコンストラクタは、既存のDataFrameから構築する際に、デフォルトのcopy=Falseで遅延コピー (データの変更が発生するまでコピーを遅延) を作成するようになりました (GH 51239)。DataFrameコンストラクタは、Series オブジェクトの辞書から DataFrame を構築し、copy=Falseを指定した場合、それらの Series オブジェクトの遅延コピーを DataFrame の列に使用するようになりました (GH 50777)。DataFrameコンストラクタは、SeriesまたはIndexから DataFrame を構築し、copy=Falseを指定した場合、Copy-on-Write を尊重するようになりました。DataFrameおよびSeriesコンストラクタは、NumPy 配列から構築する場合、配列を変更したときにDataFrame/Seriesが変更されるのを避けるために、デフォルトで配列をコピーするようになりました。copy=Falseを指定すると、以前の動作に戻ります。copy=Falseを設定した場合、pandas はDataFrame/Seriesの作成後に NumPy 配列が変更された場合の正しい Copy-on-Write の動作を保証しません。DataFrame.from_records()は、DataFrameで呼び出されたときに Copy-on-Write を尊重するようになりました。チェーン割り当てを使用して値を設定しようとすると (例:
df["a"][1:3] = 0)、Copy-on-Write が有効になっている場合、常に警告が発生するようになりました。このモードでは、チェーン割り当ては機能しません。なぜなら、常にインデックス操作 (getitem) の結果である一時オブジェクトに設定しており、Copy-on-Write の下では常にコピーとして動作するためです。したがって、チェーンを介して割り当てても、元の Series または DataFrame を更新することはできません。そのため、サイレントに何もしないことを避けるために、ユーザーに情報提供の警告が表示されます (GH 49467)。DataFrame.replace()は、inplace=Trueの場合、Copy-on-Write メカニズムを尊重するようになりました。DataFrame.transpose()は、Copy-on-Write メカニズムを尊重するようになりました。インプレースで実行できる算術演算 (例:
ser *= 2) は、Copy-on-Write メカニズムを尊重するようになりました。DataFrameがMultiIndex列を持つ場合、DataFrame.__getitem__()は Copy-on-Write メカニズムを尊重するようになりました。Series.__getitem__()は、Series がMultiIndexを持つ場合、Copy-on-Write メカニズムを尊重するようになりました。SeriesがMultiIndexを持つ場合、Series.__getitem__()は Copy-on-Write メカニズムを尊重するようになりました。
Series.view()は、Copy-on-Write メカニズムを尊重するようになりました。
Copy-on-Write は以下のいずれかによって有効にできます。
pd.set_option("mode.copy_on_write", True)
pd.options.mode.copy_on_write = True
または、Copy-on-Write は以下のようにローカルで有効にできます。
with pd.option_context("mode.copy_on_write", True):
...
その他の機能強化#
ArrowDtypeをpyarrow.string型で使用する際のstrアクセサメソッドのサポートを追加しました (GH 50325)。ArrowDtypeをpyarrow.timestamp型で使用する際のdtアクセサメソッドのサポートを追加しました (GH 50954)。read_sas()がencoding='infer'の使用をサポートし、sas ファイルで指定されたエンコーディングを正しく読み取って使用できるようになりました (GH 48048)。DataFrameGroupBy.quantile()、SeriesGroupBy.quantile()、およびDataFrameGroupBy.std()は、NumPy dtype にキャストする代わりに nullable dtype を保持するようになりました (GH 37493)。DataFrameGroupBy.std()、SeriesGroupBy.std()は、datetime64、timedelta64、およびDatetimeTZDtypedtypes をサポートするようになりました (GH 48481)。Series.add_suffix()、DataFrame.add_suffix()、Series.add_prefix()、およびDataFrame.add_prefix()はaxis引数をサポートします。axisが設定されている場合、考慮する軸のデフォルトの動作を上書きできます (GH 47819)。testing.assert_frame_equal()は、pytestの出力と同様に、DataFrame が異なる最初の要素を表示するようになりました (GH 47910)。DataFrame.to_dict()にindexパラメータを追加しました (GH 46398)。_accumulateを介してExtensionArrayインターフェースにcumsum、cumprod、cummin、およびcummaxを追加しました (GH 28385)。CategoricalConversionWarning、InvalidComparison、InvalidVersion、LossySetitemError、およびNoBufferPresentがpandas.errorsで公開されるようになりました (GH 27656)。不足しているテストパッケージ
pytest-asyncioを追加してtestoptional_extra を修正しました (GH 48361)。型変換が不可能な場合に、列名を含むように
DataFrame.astype()でスローされる例外メッセージが改善されました (GH 47571)。date_range()が、出力インデックスの希望する解像度を指定するためのunitキーワード ("s"、"ms"、"us"、または "ns") をサポートするようになりました (GH 49106)。timedelta_range()が、出力インデックスの希望する解像度を指定するためのunitキーワード ("s"、"ms"、"us"、または "ns") をサポートするようになりました (GH 49824)。DataFrame.to_json()が、サポートされている入力 'w' と 'a' を持つmodeキーワードをサポートするようになりました。デフォルトは 'w' で、lines=True および orient='records' の場合、'a' を使用して、既存の json ファイルにレコード指向の json 行を追加できます (GH 35849)。IntervalIndex.from_breaks()、IntervalIndex.from_arrays()、およびIntervalIndex.from_tuples()にnameパラメータを追加しました (GH 48911)。DataFrameに対してtesting.assert_frame_equal()を使用する際の例外メッセージが改善され、比較対象の列が含まれるようになりました (GH 50323)。結合列が重複していた場合に
merge_asof()のエラーメッセージが改善されました (GH 50102)。get_dummies()に拡張配列 dtype のサポートを追加しました (GH 32430)。Series.infer_objects()に類似したIndex.infer_objects()を追加しました (GH 50034)。Series.infer_objects()とDataFrame.infer_objects()にcopyパラメータを追加しました。Falseを渡すと、すでに非オブジェクトである Series や列、またはより良い dtype を推測できない Series や列のコピー作成を回避できます (GH 50096)。DataFrame.plot.hist()がxlabelとylabel引数を認識するようになりました (GH 49793)。Series.drop_duplicates()に、インデックスをリセットするignore_indexキーワードが追加されました (GH 48304)。Series.dropna()とDataFrame.dropna()に、インデックスをリセットするignore_indexキーワードが追加されました (GH 31725)。to_datetime()で、非 ISO8601 形式の場合に、最初のエラーの位置をユーザーに通知するエラーメッセージが改善されました (GH 50361)。DataFrameオブジェクトを揃えようとしたとき (例:DataFrame.compare()) のエラーメッセージが改善され、「同一のラベル」がインデックスと列の両方を指すことを明確にしました (GH 50083)。pyarrow string dtypes の
Index.min()とIndex.max()のサポートを追加しました (GH 51397)。異なる解像度に変換するための
DatetimeIndex.as_unit()とTimedeltaIndex.as_unit()を追加しました。サポートされる解像度は "s"、"ms"、"us"、"ns" です (GH 50616)。異なる解像度に変換するための
Series.dt.unit()とSeries.dt.as_unit()を追加しました。サポートされる解像度は "s"、"ms"、"us"、"ns" です (GH 51223)。read_sql()に、read_sql_query()との一貫性を保つために、新しい引数dtypeを追加しました (GH 50797)。read_csv()、read_table()、read_fwf()、およびread_excel()がdate_formatを受け入れるようになりました (GH 50601)。to_datetime()が、formatの引数として"ISO8601"を受け入れるようになりました。これは、任意の ISO8601 文字列 (ただし、書式が全く同じであるとは限らない) に一致します (GH 50411)。to_datetime()が、formatの引数として"mixed"を受け入れるようになりました。これは、各要素の書式を個別に推測します (GH 50972)。read_json()に新しい引数engineを追加しました。これにより、engine="pyarrow"を指定することで pyarrow を使用して JSON を解析できます (GH 48893)。SQLAlchemy 2.0 のサポートを追加しました (GH 40686)。
read_csv()でengine="pyarrow"の場合にdecimalパラメータのサポートを追加しました (GH 51302)。Indexセット操作Index.union()、Index.intersection()、Index.difference()、およびIndex.symmetric_difference()がsort=Trueをサポートするようになりました。これは、一部のケースではソートしないデフォルトのsort=Noneとは異なり、常にソートされた結果を返します (GH 25151)。フォーマッタで "$" をエスケープするのを避けるための新しいエスケープモード "latex-math" を追加しました (GH 50040)。
注目すべきバグ修正#
これらは、注目すべき動作変更をもたらす可能性のあるバグ修正です。
DataFrameGroupBy.cumsum() と DataFrameGroupBy.cumprod() が、精度の低い浮動小数点へのキャストではなくオーバーフローするようになりました#
以前のバージョンでは、cumsum と cumprod を適用する際に浮動小数点にキャストしていたため、結果が int64 dtype で保持できる場合でも誤った結果が生じていました。さらに、int64 の制限に達すると、NumPy と通常の DataFrame.cumprod() および DataFrame.cumsum() メソッドと一貫性のあるオーバーフローが発生するようになりました (GH 37493)。
以前の動作
In [1]: df = pd.DataFrame({"key": ["b"] * 7, "value": 625})
In [2]: df.groupby("key")["value"].cumprod()[5]
Out[2]: 5.960464477539062e+16
6番目の値で誤った結果が返されます。
新しい動作
In [19]: df = pd.DataFrame({"key": ["b"] * 7, "value": 625})
In [20]: df.groupby("key")["value"].cumprod()
Out[20]:
0 625
1 390625
2 244140625
3 152587890625
4 95367431640625
5 59604644775390625
6 359414837200037393
Name: value, dtype: int64
7番目の値でオーバーフローしますが、6番目の値はまだ正しいです。
DataFrameGroupBy.nth() と SeriesGroupBy.nth() がフィルタリングとして動作するようになりました#
以前のバージョンの pandas では、DataFrameGroupBy.nth() と SeriesGroupBy.nth() は集計のように動作していました。しかし、ほとんどの入力 n に対して、グループごとにゼロまたは複数の行を返す可能性があります。これは、DataFrameGroupBy.head() などと同様に、これらがフィルタリングであることを意味します。pandas は、これらをフィルタリングとして扱うようになりました (GH 13666)。
In [21]: df = pd.DataFrame({"a": [1, 1, 2, 1, 2], "b": [np.nan, 2.0, 3.0, 4.0, 5.0]})
In [22]: gb = df.groupby("a")
以前の動作
In [5]: gb.nth(n=1)
Out[5]:
A B
1 1 2.0
4 2 5.0
新しい動作
In [23]: gb.nth(n=1)
Out[23]:
a b
1 1 2.0
4 2 5.0
特に、結果のインデックスは、適切な行を選択することで入力から派生されます。また、n がグループより大きい場合、NaN の代わりに何も行が返されません。
以前の動作
In [5]: gb.nth(n=3, dropna="any")
Out[5]:
B
A
1 NaN
2 NaN
新しい動作
In [24]: gb.nth(n=3, dropna="any")
Out[24]:
Empty DataFrame
Columns: [a, b]
Index: []
下位互換性のない API の変更#
サポートされていない解像度での datetime64 または timedelta64 dtype を使用した構築#
以前のバージョンでは、Series または DataFrame を構築し、サポートされていない解像度 (つまり "ns" 以外のもの) の "datetime64" または "timedelta64" dtype を渡した場合、pandas は silently に与えられた dtype をそのナノ秒の対応物に置き換えていました。
以前の動作:
In [5]: pd.Series(["2016-01-01"], dtype="datetime64[s]")
Out[5]:
0 2016-01-01
dtype: datetime64[ns]
In [6] pd.Series(["2016-01-01"], dtype="datetime64[D]")
Out[6]:
0 2016-01-01
dtype: datetime64[ns]
pandas 2.0 では、"s"、"ms"、"us"、"ns" の解像度をサポートしています。サポートされている dtype (例: "datetime64[s]") を渡すと、結果は正確に要求された dtype になります。
新しい動作:
In [25]: pd.Series(["2016-01-01"], dtype="datetime64[s]")
Out[25]:
0 2016-01-01
dtype: datetime64[s]
サポートされていない dtype を渡すと、pandas は silently にサポートされている dtype に置き換えるのではなく、エラーを発生させるようになりました。
新しい動作:
In [26]: pd.Series(["2016-01-01"], dtype="datetime64[D]")
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
Cell In[26], line 1
----> 1 pd.Series(["2016-01-01"], dtype="datetime64[D]")
File ~/work/pandas/pandas/pandas/core/series.py:584, in Series.__init__(self, data, index, dtype, name, copy, fastpath)
582 data = data.copy()
583 else:
--> 584 data = sanitize_array(data, index, dtype, copy)
586 manager = _get_option("mode.data_manager", silent=True)
587 if manager == "block":
File ~/work/pandas/pandas/pandas/core/construction.py:648, in sanitize_array(data, index, dtype, copy, allow_2d)
645 subarr = np.array([], dtype=np.float64)
647 elif dtype is not None:
--> 648 subarr = _try_cast(data, dtype, copy)
650 else:
651 subarr = maybe_convert_platform(data)
File ~/work/pandas/pandas/pandas/core/construction.py:808, in _try_cast(arr, dtype, copy)
803 return lib.ensure_string_array(arr, convert_na_value=False, copy=copy).reshape(
804 shape
805 )
807 elif dtype.kind in "mM":
--> 808 return maybe_cast_to_datetime(arr, dtype)
810 # GH#15832: Check if we are requesting a numeric dtype and
811 # that we can convert the data to the requested dtype.
812 elif dtype.kind in "iu":
813 # this will raise if we have e.g. floats
File ~/work/pandas/pandas/pandas/core/dtypes/cast.py:1228, in maybe_cast_to_datetime(value, dtype)
1224 raise TypeError("value must be listlike")
1226 # TODO: _from_sequence would raise ValueError in cases where
1227 # _ensure_nanosecond_dtype raises TypeError
-> 1228 _ensure_nanosecond_dtype(dtype)
1230 if lib.is_np_dtype(dtype, "m"):
1231 res = TimedeltaArray._from_sequence(value, dtype=dtype)
File ~/work/pandas/pandas/pandas/core/dtypes/cast.py:1285, in _ensure_nanosecond_dtype(dtype)
1282 raise ValueError(msg)
1283 # TODO: ValueError or TypeError? existing test
1284 # test_constructor_generic_timestamp_bad_frequency expects TypeError
-> 1285 raise TypeError(
1286 f"dtype={dtype} is not supported. Supported resolutions are 's', "
1287 "'ms', 'us', and 'ns'"
1288 )
TypeError: dtype=datetime64[D] is not supported. Supported resolutions are 's', 'ms', 'us', and 'ns'
Value counts が結果の名前を count に設定するようになりました#
以前のバージョンでは、Series.value_counts() を実行すると、結果は元のオブジェクトの名前を継承し、結果インデックスは名前がありませんでした。これにより、インデックスをリセットする際に混乱が生じ、列名が列値と対応しないことがありました。現在、結果の名前は 'count' (または normalize=True が渡された場合は 'proportion') になり、インデックスは元のオブジェクトの名前が付けられます (GH 49497)。
以前の動作:
In [8]: pd.Series(['quetzal', 'quetzal', 'elk'], name='animal').value_counts()
Out[2]:
quetzal 2
elk 1
Name: animal, dtype: int64
新しい動作:
In [27]: pd.Series(['quetzal', 'quetzal', 'elk'], name='animal').value_counts()
Out[27]:
animal
quetzal 2
elk 1
Name: count, dtype: int64
同様に、他の value_counts メソッド (例えば、DataFrame.value_counts()) も同様です。
サポートされていない datetime64/timedelta64 dtype への astype 変換を禁止#
以前のバージョンでは、Series または DataFrame を datetime64[ns] から異なる datetime64[X] dtype に変換すると、要求された dtype ではなく datetime64[ns] dtype でオブジェクトが返されていました。pandas 2.0 では、"datetime64[s]"、"datetime64[ms]"、および "datetime64[us]" dtype のサポートが追加されたため、これらの dtype に変換すると、正確に要求された dtype が得られます。
以前の動作:
In [28]: idx = pd.date_range("2016-01-01", periods=3)
In [29]: ser = pd.Series(idx)
以前の動作:
In [4]: ser.astype("datetime64[s]")
Out[4]:
0 2016-01-01
1 2016-01-02
2 2016-01-03
dtype: datetime64[ns]
新しい動作では、正確に要求された dtype が得られます。
新しい動作:
In [30]: ser.astype("datetime64[s]")
Out[30]:
0 2016-01-01
1 2016-01-02
2 2016-01-03
dtype: datetime64[s]
サポートされていない解像度 (例: "datetime64[D]") の場合、要求された dtype を黙って無視する代わりにエラーが発生します。
新しい動作:
In [31]: ser.astype("datetime64[D]")
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
Cell In[31], line 1
----> 1 ser.astype("datetime64[D]")
File ~/work/pandas/pandas/pandas/core/generic.py:6662, in NDFrame.astype(self, dtype, copy, errors)
6656 results = [
6657 ser.astype(dtype, copy=copy, errors=errors) for _, ser in self.items()
6658 ]
6660 else:
6661 # else, only a single dtype is given
-> 6662 new_data = self._mgr.astype(dtype=dtype, copy=copy, errors=errors)
6663 res = self._constructor_from_mgr(new_data, axes=new_data.axes)
6664 return res.__finalize__(self, method="astype")
File ~/work/pandas/pandas/pandas/core/internals/managers.py:430, in BaseBlockManager.astype(self, dtype, copy, errors)
427 elif using_copy_on_write():
428 copy = False
--> 430 return self.apply(
431 "astype",
432 dtype=dtype,
433 copy=copy,
434 errors=errors,
435 using_cow=using_copy_on_write(),
436 )
File ~/work/pandas/pandas/pandas/core/internals/managers.py:363, in BaseBlockManager.apply(self, f, align_keys, **kwargs)
361 applied = b.apply(f, **kwargs)
362 else:
--> 363 applied = getattr(b, f)(**kwargs)
364 result_blocks = extend_blocks(applied, result_blocks)
366 out = type(self).from_blocks(result_blocks, self.axes)
File ~/work/pandas/pandas/pandas/core/internals/blocks.py:784, in Block.astype(self, dtype, copy, errors, using_cow, squeeze)
781 raise ValueError("Can not squeeze with more than one column.")
782 values = values[0, :] # type: ignore[call-overload]
--> 784 new_values = astype_array_safe(values, dtype, copy=copy, errors=errors)
786 new_values = maybe_coerce_values(new_values)
788 refs = None
File ~/work/pandas/pandas/pandas/core/dtypes/astype.py:237, in astype_array_safe(values, dtype, copy, errors)
234 dtype = dtype.numpy_dtype
236 try:
--> 237 new_values = astype_array(values, dtype, copy=copy)
238 except (ValueError, TypeError):
239 # e.g. _astype_nansafe can fail on object-dtype of strings
240 # trying to convert to float
241 if errors == "ignore":
File ~/work/pandas/pandas/pandas/core/dtypes/astype.py:179, in astype_array(values, dtype, copy)
175 return values
177 if not isinstance(values, np.ndarray):
178 # i.e. ExtensionArray
--> 179 values = values.astype(dtype, copy=copy)
181 else:
182 values = _astype_nansafe(values, dtype, copy=copy)
File ~/work/pandas/pandas/pandas/core/arrays/datetimes.py:741, in DatetimeArray.astype(self, dtype, copy)
739 elif isinstance(dtype, PeriodDtype):
740 return self.to_period(freq=dtype.freq)
--> 741 return dtl.DatetimeLikeArrayMixin.astype(self, dtype, copy)
File ~/work/pandas/pandas/pandas/core/arrays/datetimelike.py:517, in DatetimeLikeArrayMixin.astype(self, dtype, copy)
513 elif (dtype.kind in "mM" and self.dtype != dtype) or dtype.kind == "f":
514 # disallow conversion between datetime/timedelta,
515 # and conversions for any datetimelike to float
516 msg = f"Cannot cast {type(self).__name__} to dtype {dtype}"
--> 517 raise TypeError(msg)
518 else:
519 return np.asarray(self, dtype=dtype)
TypeError: Cannot cast DatetimeArray to dtype datetime64[D]
timedelta64[ns] dtype からの変換の場合、以前の動作では浮動小数点形式に変換されていました。
以前の動作:
In [32]: idx = pd.timedelta_range("1 Day", periods=3)
In [33]: ser = pd.Series(idx)
以前の動作:
In [7]: ser.astype("timedelta64[s]")
Out[7]:
0 86400.0
1 172800.0
2 259200.0
dtype: float64
In [8]: ser.astype("timedelta64[D]")
Out[8]:
0 1.0
1 2.0
2 3.0
dtype: float64
新しい動作は datetime64 と同様に、要求された dtype を正確に与えるか、エラーを発生させます。
新しい動作:
In [34]: ser.astype("timedelta64[s]")
Out[34]:
0 1 days
1 2 days
2 3 days
dtype: timedelta64[s]
In [35]: ser.astype("timedelta64[D]")
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
Cell In[35], line 1
----> 1 ser.astype("timedelta64[D]")
File ~/work/pandas/pandas/pandas/core/generic.py:6662, in NDFrame.astype(self, dtype, copy, errors)
6656 results = [
6657 ser.astype(dtype, copy=copy, errors=errors) for _, ser in self.items()
6658 ]
6660 else:
6661 # else, only a single dtype is given
-> 6662 new_data = self._mgr.astype(dtype=dtype, copy=copy, errors=errors)
6663 res = self._constructor_from_mgr(new_data, axes=new_data.axes)
6664 return res.__finalize__(self, method="astype")
File ~/work/pandas/pandas/pandas/core/internals/managers.py:430, in BaseBlockManager.astype(self, dtype, copy, errors)
427 elif using_copy_on_write():
428 copy = False
--> 430 return self.apply(
431 "astype",
432 dtype=dtype,
433 copy=copy,
434 errors=errors,
435 using_cow=using_copy_on_write(),
436 )
File ~/work/pandas/pandas/pandas/core/internals/managers.py:363, in BaseBlockManager.apply(self, f, align_keys, **kwargs)
361 applied = b.apply(f, **kwargs)
362 else:
--> 363 applied = getattr(b, f)(**kwargs)
364 result_blocks = extend_blocks(applied, result_blocks)
366 out = type(self).from_blocks(result_blocks, self.axes)
File ~/work/pandas/pandas/pandas/core/internals/blocks.py:784, in Block.astype(self, dtype, copy, errors, using_cow, squeeze)
781 raise ValueError("Can not squeeze with more than one column.")
782 values = values[0, :] # type: ignore[call-overload]
--> 784 new_values = astype_array_safe(values, dtype, copy=copy, errors=errors)
786 new_values = maybe_coerce_values(new_values)
788 refs = None
File ~/work/pandas/pandas/pandas/core/dtypes/astype.py:237, in astype_array_safe(values, dtype, copy, errors)
234 dtype = dtype.numpy_dtype
236 try:
--> 237 new_values = astype_array(values, dtype, copy=copy)
238 except (ValueError, TypeError):
239 # e.g. _astype_nansafe can fail on object-dtype of strings
240 # trying to convert to float
241 if errors == "ignore":
File ~/work/pandas/pandas/pandas/core/dtypes/astype.py:179, in astype_array(values, dtype, copy)
175 return values
177 if not isinstance(values, np.ndarray):
178 # i.e. ExtensionArray
--> 179 values = values.astype(dtype, copy=copy)
181 else:
182 values = _astype_nansafe(values, dtype, copy=copy)
File ~/work/pandas/pandas/pandas/core/arrays/timedeltas.py:358, in TimedeltaArray.astype(self, dtype, copy)
354 return type(self)._simple_new(
355 res_values, dtype=res_values.dtype, freq=self.freq
356 )
357 else:
--> 358 raise ValueError(
359 f"Cannot convert from {self.dtype} to {dtype}. "
360 "Supported resolutions are 's', 'ms', 'us', 'ns'"
361 )
363 return dtl.DatetimeLikeArrayMixin.astype(self, dtype, copy=copy)
ValueError: Cannot convert from timedelta64[ns] to timedelta64[D]. Supported resolutions are 's', 'ms', 'us', 'ns'
UTC と固定オフセットタイムゾーンのデフォルトが標準ライブラリの tzinfo オブジェクトに変更#
以前のバージョンでは、UTC を表すために使用されるデフォルトの tzinfo オブジェクトは pytz.UTC でした。pandas 2.0 では、代わりに datetime.timezone.utc がデフォルトになりました。同様に、固定 UTC オフセットを表すタイムゾーンの場合、pytz.FixedOffset オブジェクトの代わりに datetime.timezone オブジェクトを使用します。(GH 34916) を参照してください。
以前の動作:
In [2]: ts = pd.Timestamp("2016-01-01", tz="UTC")
In [3]: type(ts.tzinfo)
Out[3]: pytz.UTC
In [4]: ts2 = pd.Timestamp("2016-01-01 04:05:06-07:00")
In [3]: type(ts2.tzinfo)
Out[5]: pytz._FixedOffset
新しい動作:
In [36]: ts = pd.Timestamp("2016-01-01", tz="UTC")
In [37]: type(ts.tzinfo)
Out[37]: datetime.timezone
In [38]: ts2 = pd.Timestamp("2016-01-01 04:05:06-07:00")
In [39]: type(ts2.tzinfo)
Out[39]: datetime.timezone
UTC でも固定オフセットでもないタイムゾーン (例: "US/Pacific") の場合、引き続き pytz オブジェクトがデフォルトとなります。
空の DataFrame/Series はデフォルトで RangeIndex を持つようになりました#
以前は、軸 (index=None、columns=None) を指定せずに空の (where data is None or an empty list-like argument) Series または DataFrame を構築すると、軸はオブジェクト dtype の空の Index を返していました。
現在、軸は空の RangeIndex を返します (GH 49572)。
以前の動作:
In [8]: pd.Series().index
Out[8]:
Index([], dtype='object')
In [9] pd.DataFrame().axes
Out[9]:
[Index([], dtype='object'), Index([], dtype='object')]
新しい動作:
In [40]: pd.Series().index
Out[40]: RangeIndex(start=0, stop=0, step=1)
In [41]: pd.DataFrame().axes
Out[41]: [RangeIndex(start=0, stop=0, step=1), RangeIndex(start=0, stop=0, step=1)]
DataFrame から LaTeX への新しいレンダーエンジン#
既存の DataFrame.to_latex() は、以前 Styler.to_latex() で利用可能だった拡張実装を利用するように再構築されました。col_space は LaTeX エンジンによって無視されるため削除されましたが、引数シグネチャは類似しています。このレンダーエンジンは、レンダリングが jinja2 テンプレートに基づいているため、依存関係として jinja2 のインストールも必要です。
以下の pandas LaTeX オプションは使用されなくなり、削除されました。一般的な最大行数と列数の引数は残っていますが、この機能については Styler の同等なものに置き換える必要があります。類似の機能を提供する代替オプションは以下に示されています。
display.latex.escape:styler.format.escapeに置き換えられました。display.latex.longtable:styler.latex.environmentに置き換えられました。display.latex.multicolumn、display.latex.multicolumn_formatおよびdisplay.latex.multirow:styler.sparse.rows、styler.sparse.columns、styler.latex.multirow_alignおよびstyler.latex.multicol_alignに置き換えられました。display.latex.repr:styler.render.reprに置き換えられました。display.max_rowsとdisplay.max_columns:styler.render.max_rows、styler.render.max_columnsおよびstyler.render.max_elementsに置き換えられました。
この変更により、一部のデフォルトも変更されましたのでご注意ください。
multirowのデフォルトは *True* になりました。multirow_alignのデフォルトは *“l”* ではなく *“r”* になりました。multicol_alignのデフォルトは *“l”* ではなく *“r”* になりました。escapeのデフォルトは *False* になりました。
_repr_latex_ の動作も変更されましたのでご注意ください。以前は display.latex.repr を設定すると、Jupyter Notebook で nbconvert を使用した場合にのみ LaTeX が生成され、ユーザーがノートブックを実行している場合には生成されませんでした。現在、styler.render.repr オプションは、Jupyter Notebook 内での操作 (nbconvert だけでなく) における特定の出力を制御できます。(GH 39911) を参照してください。
依存関係の最小バージョン引き上げ#
一部の依存関係の最小サポートバージョンが更新されました。インストールされている場合、以下のバージョンが必要になります。
パッケージ |
最小バージョン |
必須 |
変更済み |
|---|---|---|---|
mypy (開発) |
1.0 |
X |
|
pytest (開発) |
7.0.0 |
X |
|
pytest-xdist (開発) |
2.2.0 |
X |
|
hypothesis (開発) |
6.34.2 |
X |
|
python-dateutil |
2.8.2 |
X |
X |
tzdata |
2022.1 |
X |
X |
オプションのライブラリについては、一般的に最新バージョンを使用することが推奨されます。以下の表は、pandas の開発全体で現在テストされているライブラリごとの最低バージョンを示しています。最低テストバージョンより古いオプションのライブラリは動作する可能性がありますが、サポートされているとはみなされません。
パッケージ |
最小バージョン |
変更済み |
|---|---|---|
pyarrow |
7.0.0 |
X |
matplotlib |
3.6.1 |
X |
fastparquet |
0.6.3 |
X |
xarray |
0.21.0 |
X |
詳細については、依存関係 および オプションの依存関係 を参照してください。
Datetime が一貫した形式で解析されるようになりました#
以前は、to_datetime() は各要素の形式を個別に推測していました。これは、要素に日付形式が混在している一部のケースでは適切でしたが、ユーザーが一貫した形式を期待しているにもかかわらず、関数が要素間で形式を切り替えるという問題が頻繁に発生していました。バージョン 2.0.0 以降、解析は最初に出現する非 NA 値によって決定される一貫した形式を使用します (ユーザーが形式を指定しない限り、その場合は指定された形式が使用されます)。
以前の動作:
In [1]: ser = pd.Series(['13-01-2000', '12-01-2000'])
In [2]: pd.to_datetime(ser)
Out[2]:
0 2000-01-13
1 2000-12-01
dtype: datetime64[ns]
新しい動作:
In [42]: ser = pd.Series(['13-01-2000', '12-01-2000'])
In [43]: pd.to_datetime(ser)
Out[43]:
0 2000-01-13
1 2000-01-12
dtype: datetime64[ns]
これは read_csv() にも影響することに注意してください。
一貫性のない形式で日付を解析する必要がある場合は、format='mixed' (場合によっては dayfirst と併用) を使用できます。
ser = pd.Series(['13-01-2000', '12 January 2000'])
pd.to_datetime(ser, format='mixed', dayfirst=True)
または、すべての形式が ISO8601 である場合 (ただし、形式が完全に一致するとは限りません)。
ser = pd.Series(['2020-01-01', '2020-01-01 03:00'])
pd.to_datetime(ser, format='ISO8601')
その他の API の変更#
Timestampコンストラクタのfreq、tz、nanosecond、およびunitキーワードがキーワードオンリーになりました (GH 45307、GH 32526)。Timestampで 999 より大きいまたは 0 未満のnanosecondsを渡すと、ValueErrorが発生するようになりました (GH 48538、GH 48255)。read_csv(): c パーサーを使用している場合、index_colで誤った列数を指定すると、IndexErrorではなくParserErrorが発生するようになりました。get_dummies()のdtypeのデフォルト値がuint8からboolに変更されました (GH 45848)。DataFrame.astype()、Series.astype()、およびDatetimeIndex.astype()で datetime64 データを "datetime64[s]"、"datetime64[ms]"、"datetime64[us]" のいずれかにキャストすると、"datetime64[ns]" に強制変換されるのではなく、指定された解像度を持つオブジェクトが返されるようになりました (GH 48928)。DataFrame.astype()、Series.astype()、およびDatetimeIndex.astype()で timedelta64 データを "timedelta64[s]"、"timedelta64[ms]"、"timedelta64[us]" のいずれかにキャストすると、"float64" dtype に強制変換されるのではなく、指定された解像度を持つオブジェクトが返されるようになりました (GH 48963)。DatetimeIndex.astype()、TimedeltaIndex.astype()、PeriodIndex.astype()、Series.astype()、DataFrame.astype()をdatetime64、timedelta64、またはPeriodDtypedtype で使用する場合、"int64" 以外の整数 dtype への変換が許可されなくなりました。代わりにobj.astype('int64', copy=False).astype(dtype)を使用してください (GH 49715)。Index.astype()が、Seriesの動作に合わせて、float64dtype から datetime-like dtypes へのキャストを許可するようになりました (GH 49660)。"timedelta64[s]"、"timedelta64[ms]"、または "timedelta64[us]" の dtype を持つデータを
TimedeltaIndex、Series、またはDataFrameコンストラクタに渡すと、"timedelta64[ns]" にキャストされるのではなく、その dtype が保持されるようになりました。より低い解像度の timedelta64 データは、サポートされている最低解像度である "timedelta64[s]" にキャストされます (GH 49014)。TimedeltaIndex、Series、またはDataFrameコンストラクタに "timedelta64[s]"、"timedelta64[ms]"、または "timedelta64[us]" のdtypeを渡すと、"timedelta64[ns]" にキャストされるのではなく、その dtype が保持されるようになりました。SeriesまたはDataFrameのより低い解像度の dtype を渡すと、サポートされている最低解像度である "timedelta64[s]" にキャストされます (GH 49014)。非ナノ秒解像度の
np.datetime64オブジェクトをTimestampに渡すと、解像度が "s"、"ms"、"us"、または "ns" の場合は入力解像度が保持されます。それ以外の場合は、最も近いサポートされている解像度にキャストされます (GH 49008)。ナノ秒以外の解像度を持つ
datetime64値をto_datetime()に渡すと、解像度が "s"、"ms"、"us"、または "ns" の場合は入力解像度が保持されます。それ以外の場合は、最も近いサポートされている解像度にキャストされます (GH 50369)。整数値と非ナノ秒 datetime64 dtype (例: "datetime64[s]") を
DataFrame、Series、またはIndexに渡すと、値は dtype の単位の倍数として扱われ、例えばSeries(np.array(values, dtype="M8[s]"))の動作と一致するようになりました (GH 51092)。ISO-8601 形式の文字列を
Timestampに渡すと、解析された入力の解像度が "s"、"ms"、"us"、または "ns" の場合は入力解像度が保持されます。それ以外の場合は、最も近いサポートされている解像度にキャストされます (GH 49737)。DataFrame.mask()およびSeries.mask()のother引数が、DataFrame.where()およびSeries.where()と一貫してnp.nanではなくno_defaultをデフォルトにするようになりました。エントリは対応する NULL 値 (NumPy dtype の場合はnp.nan、拡張 dtype の場合はpd.NA) で埋められます (GH 49111)。Series.quantile()およびDataFrame.quantile()のSparseDtypeを使用した場合の動作が変更され、スパース dtype が保持されるようになりました (GH 49583)。datetime オブジェクトのオブジェクト dtype
Indexを持つSeriesを作成する場合、pandas はインデックスをDatetimeIndexに silently に変換しなくなりました (GH 39307、GH 23598)。パラメータ
exact="equiv"を持つpandas.testing.assert_index_equal()は、両方のインデックスがRangeIndexまたはint64dtype を持つIndexのいずれかである場合に、2つのインデックスが等しいとみなすようになりました。以前は、RangeIndexまたはInt64Indexのいずれかを意味していました (GH 51098)。dtypeが「timedelta64[ns]」または「datetime64[ns]」である
Series.unique()は、numpy.ndarrayの代わりにTimedeltaArrayまたはDatetimeArrayを返すようになりました (GH 49176)to_datetime()およびDatetimeIndexは、Seriesの動作に合わせて、datetimeオブジェクトと数値エントリの両方を含むシーケンスを許可するようになりました (GH 49037, GH 50453)pandas.api.types.is_string_dtype()は、要素が文字列であると推測される場合にのみ、dtype=objectの配列ライクに対してTrueを返すようになりました (GH 15585)datetimeオブジェクトとdateオブジェクトを含むシーケンスをSeriesコンストラクタに渡すと、Indexの動作と一貫して、datetime64[ns]dtypeの代わりにobjectdtypeが返されます (GH 49341)日付時刻として解析できない文字列を
SeriesまたはDataFrameにdtype="datetime64[ns]"で渡すと、キーワードを黙って無視してobjectdtypeを返す代わりに、エラーが発生するようになりました (GH 24435)Timedeltaに変換できない型のシーケンスをto_timedelta()、またはdtype="timedelta64[ns]"を指定してSeriesまたはDataFrameコンストラクタ、またはTimedeltaIndexに渡すと、ValueErrorの代わりにTypeErrorが発生するようになりました (GH 49525)Indexコンストラクタの動作が変更され、少なくとも1つのNaTと、その他すべてがNoneまたはNaNであるシーケンスの場合、Seriesの動作に合わせて、objectdtypeの代わりにdatetime64[ns]dtypeを推論するようになりました (GH 49340)パラメータ
index_colがNone(デフォルト) に設定されているread_stata()は、返されるDataFrameのインデックスをInt64IndexではなくRangeIndexに設定するようになりました (GH 49745)オブジェクトdtypeで動作する場合の
Index、Series、およびDataFrameの算術メソッドの動作が変更され、結果は配列操作の結果に対する型推論を行わなくなりました。結果に対する型推論を行うにはresult.infer_objects(copy=False)を使用してください (GH 49999, GH 49714)オブジェクトdtypeの
numpy.ndarrayにすべてのbool値またはすべての複素数値が含まれている場合のIndexコンストラクタの動作が変更され、Seriesの動作と一貫して、オブジェクトdtypeが保持されるようになりました (GH 49594)オブジェクトdtypeから文字列dtypeへの
Series.astype()の動作が変更され、バイトオブジェクトに対してstr(val)の代わりにval.decode()を実行するようになりました (Index.astype()の動作に一致) (GH 45326)read_csv()のデフォルトのna_valuesに"None"が追加されました (GH 50286)整数dtypeと丸められない浮動小数点データが与えられた場合の
SeriesおよびDataFrameコンストラクタの動作が変更され、浮動小数点dtypeを黙って保持する代わりにValueErrorを発生させるようになりました。古い動作を得るにはSeries(data)またはDataFrame(data)を、指定されたdtypeを得るにはSeries(data).astype(dtype)またはDataFrame(data).astype(dtype)を使用してください (GH 49599)axis=1、整数fill_value、および均質な日付時刻ライクなdtypeを持つDataFrame.shift()の動作が変更され、日付時刻ライクな型にキャストする代わりに、新しい列を整数dtypeで埋めるようになりました (GH 49842)read_json()で例外が発生した場合にファイルが閉じるようになりました (GH 49921)read_csv()、read_json()、およびread_fwf()の動作が変更され、インデックスが指定されていない場合、常にRangeIndexになります。以前は、新しいDataFrame/Seriesの長さが0の場合、インデックスはdtypeobjectのIndexでした (GH 49572)DataFrame.values()、DataFrame.to_numpy()、DataFrame.xs()、DataFrame.reindex()、DataFrame.fillna()、およびDataFrame.replace()は、基になる配列を黙って統合しなくなりました。統合を確実にするにはdf = df.copy()を実行してください (GH 49356)locまたはilocで両軸に完全なスライスを使用して新しいDataFrameを作成する(つまり、df.loc[:, :]またはdf.iloc[:, :])と、完全なスライスを取得する他のメソッド(たとえばdf.loc[:]またはdf[:])と一貫して、元のDataFrameの代わりに新しいDataFrame(シャローコピー)が返されるようになりました (GH 49469)SeriesおよびDataFrameコンストラクタは、それぞれSeriesおよびDataFrameが渡され、copy=Falseがデフォルト(かつ、他のキーワードがコピーをトリガーしない場合)の場合、シャローコピー(つまり、データを共有するが属性は共有しない)を返すようになりました。以前は、新しいSeriesまたはDataFrameはインデックス属性を共有していました(例:df.index = ...は親または子のインデックスも更新しました) (GH 49523)Timedeltaオブジェクトのcumprodの計算が禁止されました。以前は誤った値が返されていました (GH 50246)インデックスなしで
HDFStoreファイルから読み込まれたDataFrameオブジェクトは、int64インデックスの代わりにRangeIndexを持つようになりました (GH 51076)NAやNaTを含むデータを持つ数値numpy dtypeでIndexをインスタンス化すると、ValueErrorが発生するようになりました。以前はTypeErrorが発生していました (GH 51050)read_json(orient='split')を使用して重複する列を持つJSONファイルをロードすると、read_csv()やその他のリーダーと同様に、重複を避けるために列の名前が変更されるようになりました (GH 50370)Series.sparse.from_cooから返されるSeriesのインデックスのレベルは、常にdtypeint32を持つようになりました。以前はdtypeint64を持っていました (GH 50926)unitが「Y」または「M」のto_datetime()は、シーケンスに丸められないfloat値が含まれている場合、Timestampの動作に合わせて、エラーを発生させるようになりました (GH 50301)メソッド
Series.round()、DataFrame.__invert__()、Series.__invert__()、DataFrame.swapaxes()、DataFrame.first()、DataFrame.last()、Series.first()、Series.last()、およびDataFrame.align()は、常に新しいオブジェクトを返すようになりました (GH 51032)DataFrameおよびDataFrameGroupByの集計 (例: "sum") でオブジェクトdtypeの列を使用する場合、結果に対して非オブジェクトdtypeを推論しなくなりました。以前の動作を得るには、結果に対して明示的にresult.infer_objects(copy=False)を呼び出してください (GH 51205, GH 49603)ArrowDtypedtypeでのゼロ除算は、エラーを発生させる代わりに、分子に応じて-inf、nan、またはinfを返すようになりました (GH 51541)実数数値dtypeをチェックするための
pandas.api.types.is_any_real_numeric_dtype()が追加されました (GH 51152)value_counts()は、"Int64"型の代わりにArrowDtypeとpyarrow.int64型のデータを返すようになりました (GH 51462)factorize()およびunique()は、ナノ秒以外の解像度を持つnumpy timedelta64またはdatetime64が渡された場合、元のdtypeを保持するようになりました (GH 48670)
注
現在のPDEPは、pandas APIのメソッドの小さなサブセットを除いて、すべてのメソッドのinplaceおよびcopyキーワードの非推奨化と削除を提案しています。現在の議論はこちらで行われています。コピーオンライトの文脈では、キーワードはもはや必要ありません。この提案が受け入れられた場合、両方のキーワードは次期pandasリリースで非推奨となり、pandas 3.0で削除されます。
非推奨#
システムローカルタイムゾーンを持つ日時文字列を
tzlocalに解析することは非推奨となりました。tzキーワードを渡すか、代わりに明示的にtz_localizeを呼び出してください (GH 50791)to_datetime()およびread_csv()の引数infer_datetime_formatは非推奨となりました。厳密なバージョンがデフォルトになりました (GH 48621)unitを指定したto_datetime()での文字列解析の動作は非推奨となりました。将来のバージョンでは、これらは浮動小数点数にキャストされる代わりに、日時として解析されます(単位なしの動作に一致します)。古い動作を保持するには、to_datetime()を呼び出す前に文字列を数値型にキャストしてください (GH 50735)pandas.io.sql.execute()は非推奨となりました (GH 50185)Index.is_boolean()は非推奨となりました。代わりにpandas.api.types.is_bool_dtype()を使用してください (GH 50042)Index.is_integer()は非推奨となりました。代わりにpandas.api.types.is_integer_dtype()を使用してください (GH 50042)Index.is_floating()は非推奨となりました。代わりにpandas.api.types.is_float_dtype()を使用してください (GH 50042)Index.holds_integer()は非推奨となりました。代わりにpandas.api.types.infer_dtype()を使用してください (GH 50243)Index.is_numeric()は非推奨となりました。代わりにpandas.api.types.is_any_real_numeric_dtype()を使用してください (GH 50042, GH 51152)Index.is_categorical()は非推奨となりました。代わりにpandas.api.types.is_categorical_dtype()を使用してください (GH 50042)Index.is_object()は非推奨となりました。代わりにpandas.api.types.is_object_dtype()を使用してください (GH 50042)Index.is_interval()は非推奨となりました。代わりにpandas.api.types.is_interval_dtype()を使用してください (GH 50042)read_csv()、read_table()、read_fwf()、およびread_excel()の引数date_parserは、date_formatの推奨により非推奨となりました (GH 50601)datetime64およびDatetimeTZDtypedtypeのallおよびanyリダクションは非推奨となりました。代わりに、例えば(obj != pd.Timestamp(0), tz=obj.tz).all()を使用してください (GH 34479)Resamplerの未使用引数*argsおよび**kwargsは非推奨となりました (GH 50977)単一要素の
Seriesに対してfloatまたはintを呼び出してそれぞれfloatまたはintを返す動作は非推奨となりました。floatまたはintを呼び出す前に要素を抽出してください (GH 51101)Grouper.groups()は非推奨となりました。代わりにGroupby.groups()を使用してください (GH 51182)Grouper.grouper()は非推奨となりました。代わりにGroupby.grouper()を使用してください (GH 51182)Grouper.obj()は非推奨となりました。代わりにGroupby.obj()を使用してください (GH 51206)Grouper.indexer()は非推奨となりました。代わりにResampler.indexer()を使用してください (GH 51206)Grouper.ax()は非推奨となりました。代わりにResampler.ax()を使用してください (GH 51206)read_parquet()のキーワードuse_nullable_dtypesは非推奨となりました。代わりにdtype_backendを使用してください (GH 51853)Series.pad()は非推奨となり、代わりにSeries.ffill()が推奨されます (GH 33396)Series.backfill()は非推奨となり、代わりにSeries.bfill()が推奨されます (GH 33396)DataFrame.pad()は非推奨となり、代わりにDataFrame.ffill()が推奨されます (GH 33396)DataFrame.backfill()は非推奨となり、代わりにDataFrame.bfill()が推奨されます (GH 33396)close()は非推奨となりました。代わりにStataReaderをコンテキストマネージャーとして使用してください (GH 49228)levelパラメータが長さ1のリストによってグループ化されたDataFrameGroupByまたはSeriesGroupByを反復処理するときにスカラを生成することは非推奨となりました。代わりに長さ1のタプルが返されます (GH 51583)
以前のバージョンの非推奨/変更の削除#
Int64Index、UInt64Index、およびFloat64Indexは削除されました。詳細についてはこちらを参照してください (GH 42717)非推奨の
Timestamp.freq、Timestamp.freqstr、およびTimestampコンストラクタおよびTimestamp.fromordinal()の引数freqは削除されました (GH 14146)非推奨の
CategoricalBlock、Block.is_categorical()は削除され、datetime64およびtimedelta64の値はBlock.make_block_same_class()に渡す前にDatetimeArrayまたはTimedeltaArrayでラップする必要があり、BlockManagerコンストラクタに渡す場合、DatetimeTZBlock.valuesは正しいndimを持つ必要があり、SingleBlockManagerコンストラクタから「fastpath」キーワードが削除されました (GH 40226, GH 40571)非推奨のグローバルオプション
use_inf_as_nullはuse_inf_as_naに置き換えられました (GH 17126)非推奨のモジュール
pandas.core.indexは削除されました (GH 30193)非推奨のエイリアス
pandas.core.tools.datetimes.to_timeは削除されました。代わりにpandas.core.tools.timesから関数を直接インポートしてください (GH 34145)非推奨のエイリアス
pandas.io.json.json_normalizeは削除されました。代わりにpandas.json_normalizeから関数を直接インポートしてください (GH 27615)非推奨の
Categorical.to_dense()は削除されました。代わりにnp.asarray(cat)を使用してください (GH 32639)非推奨の
Categorical.take_nd()は削除されました (GH 27745)非推奨の
Categorical.mode()は削除されました。代わりにSeries(cat).mode()を使用してください (GH 45033)非推奨の
Categorical.is_dtype_equal()およびCategoricalIndex.is_dtype_equal()は削除されました (GH 37545)非推奨の
CategoricalIndex.take_nd()は削除されました (GH 30702)非推奨の
Index.is_type_compatible()は削除されました (GH 42113)非推奨の
Index.is_mixed()は削除されました。代わりにindex.inferred_typeを直接チェックしてください (GH 32922)非推奨の
pandas.api.types.is_categorical()は削除されました。代わりにpandas.api.types.is_categorical_dtype()を使用してください (GH 33385)非推奨の
Index.asi8()は削除されました (GH 37877)Seriesにdatetime64[ns]dtypeデータとタイムゾーン対応dtypeを渡す際の動作変更は非推奨となり、値はUTC時間ではなくローカル時間として解釈され、DatetimeIndexの動作と一致するようになりました (GH 41662)インデックスまたは列で位置合わせされていない複数の
DataFrameにnumpy ufuncを適用する際の動作変更は非推奨となり、最初にインプットが位置合わせされるようになりました (GH 39239)非推奨の
DataFrame._AXIS_NUMBERS()、DataFrame._AXIS_NAMES()、Series._AXIS_NUMBERS()、Series._AXIS_NAMES()は削除されました (GH 33637)非推奨の
Index.to_native_types()は削除されました。代わりにobj.astype(str)を使用してください (GH 36418)非推奨の
Series.iteritems()、DataFrame.iteritems()は削除されました。代わりにobj.itemsを使用してください (GH 45321)非推奨の
DataFrame.lookup()は削除されました (GH 35224)非推奨の
Series.append()、DataFrame.append()は削除されました。代わりにconcat()を使用してください (GH 35407)非推奨の
Series.iteritems()、DataFrame.iteritems()、およびHDFStore.iteritems()は削除されました。代わりにobj.itemsを使用してください (GH 45321)非推奨の
DatetimeIndex.union_many()は削除されました (GH 45018)DatetimeArray、DatetimeIndex、およびdtアクセサの非推奨のweekofyearおよびweek属性は削除され、代わりにisocalendar().weekが推奨されます (GH 33595)非推奨の
RangeIndex._start()、RangeIndex._stop()、RangeIndex._step()は削除されました。代わりにstart、stop、stepを使用してください (GH 30482)非推奨の
DatetimeIndex.to_perioddelta()は削除されました。代わりにdtindex - dtindex.to_period(freq).to_timestamp()を使用してください (GH 34853)非推奨の
Styler.hide_index()およびStyler.hide_columns()は削除されました (GH 49397)非推奨の
Styler.set_na_rep()およびStyler.set_precision()は削除されました (GH 49397)非推奨の
Styler.where()は削除されました (GH 49397)非推奨の
Styler.render()は削除されました (GH 49397)DataFrame.to_latex()の非推奨引数col_spaceは削除されました (GH 47970)Styler.highlight_null()の非推奨引数null_colorは削除されました (GH 49397)testing.assert_frame_equal()、testing.assert_extension_array_equal()、testing.assert_series_equal()、testing.assert_index_equal()の非推奨引数check_less_preciseは削除されました (GH 30562)DataFrame.info()の非推奨引数null_countsは削除されました。代わりにshow_countsを使用してください (GH 37999)非推奨の
Index.is_monotonic()およびSeries.is_monotonic()は削除されました。代わりにobj.is_monotonic_increasingを使用してください (GH 45422)非推奨の
Index.is_all_dates()は削除されました (GH 36697)タイムゾーン対応の
Timestampとdtype="datetime64[ns]"をSeriesまたはDataFrameコンストラクタに渡すことが非推奨となりました (GH 41555)タイムゾーン対応の値のシーケンスと
dtype="datetime64[ns]"をSeriesまたはDataFrameコンストラクタに渡すことが非推奨となりました (GH 41555)DataFrameコンストラクタでのnumpy.ma.mrecords.MaskedRecordsの使用は非推奨となりました。代わりに"{name: data[name] for name in data.dtype.names}を渡してください (GH 40363)Series.astype()およびDataFrame.astype()で単位なしの「datetime64」dtypeを使用することは非推奨となりました (GH 47844).astypeを使用してdatetime64[ns]のSeries、DataFrame、またはDatetimeIndexをタイムゾーン対応のdtypeに変換することは非推奨となりました。代わりにobj.tz_localizeまたはser.dt.tz_localizeを使用してください (GH 39258).astypeを使用してタイムゾーン対応のSeries、DataFrame、またはDatetimeIndexをタイムゾーン非対応のdatetime64[ns]dtypeに変換することは非推奨となりました。代わりにobj.tz_localize(None)またはobj.tz_convert("UTC").tz_localize(None)を使用してください (GH 39258)日付パーサ関数
parse_date_time()、parse_date_fields()、parse_all_fields()、およびgeneric_parser()は削除されました (GH 24518)core.arrays.SparseArrayコンストラクタから引数indexは削除されました (GH 43523)DataFrame.groupby()およびSeries.groupby()から引数squeezeは削除されました (GH 32380)DateOffsetから非推奨のapply、apply_index、__call__、onOffset、およびisAnchored属性は削除されました (GH 34171)DatetimeIndex.to_series()のkeep_tz引数は削除されました (GH 29731)Index.copy()からnamesとdtype引数は削除され、MultiIndex.copy()からlevelsとcodes引数は削除されました (GH 35853, GH 36685)MultiIndex.set_levels()およびMultiIndex.set_codes()から引数inplaceは削除されました (GH 35626)DataFrame.to_excel()およびSeries.to_excel()から引数verboseおよびencodingは削除されました (GH 47912)DataFrame.to_csv()およびSeries.to_csv()から引数line_terminatorは削除されました。代わりにlineterminatorを使用してください (GH 45302)DataFrame.set_axis()およびSeries.set_axis()から引数inplaceは削除されました。代わりにobj = obj.set_axis(..., copy=False)を使用してください (GH 48130)MultiIndex.set_levels()およびMultiIndex.set_codes()に位置引数を渡すことは禁止されました (GH 41485)単位「Y」、「y」、「M」を持つ文字列をTimedeltaに解析することは、曖昧な期間を表さないため、禁止されました (GH 36838)
MultiIndex.is_lexsorted()およびMultiIndex.lexsort_depth()は削除されました (GH 38701)PeriodIndex.astype()から引数howは削除されました。代わりにPeriodIndex.to_timestamp()を使用してください (GH 37982)DataFrame.mask()、DataFrame.where()、Series.mask()およびSeries.where()から引数try_castは削除されました (GH 38836)Period.to_timestamp()から引数tzは削除されました。代わりにobj.to_timestamp(...).tz_localize(tz)を使用してください (GH 34522)DataFrame.plot()およびSeries.plot()から引数sort_columnsは削除されました (GH 47563)DataFrame.take()およびSeries.take()から引数is_copyは削除されました (GH 30615)Index.get_slice_bound()、Index.slice_indexer()およびIndex.slice_locs()から引数kindは削除されました (GH 41378)read_csv()から引数prefix、squeeze、error_bad_linesおよびwarn_bad_linesは削除されました (GH 40413, GH 43427)read_excel()から引数squeezeは削除されました (GH 43427)DataFrame.describe()およびSeries.describe()から引数datetime_is_numericは削除されました。datetimeデータは常に数値データとして要約されます (GH 34798)Series.xs()およびDataFrame.xs()にリストkeyを渡すことは禁止されました。代わりにタプルを渡してください (GH 41789)Indexコンストラクタで、サブクラス固有のキーワード(例:「freq」、「tz」、「names」、「closed」)を渡すことは禁止されました (GH 38597)Categorical.remove_unused_categories()から引数inplaceは削除されました (GH 37918)unit="M"またはunit="Y"を指定してTimestampに非整数浮動小数点数を渡すことは禁止されました (GH 47266)read_excel()からキーワードconvert_floatおよびmangle_dupe_colsは削除されました (GH 41176)read_csv()およびread_table()からキーワードmangle_dupe_colsは削除されました (GH 48137)DataFrame.where()、Series.where()、DataFrame.mask()、およびSeries.mask()からerrorsキーワードは削除されました (GH 47728)read_excel()にioとsheet_name以外の非キーワード引数を渡すことは禁止されました (GH 34418)DataFrame.drop()およびSeries.drop()にlabels以外の非キーワード引数を渡すことは禁止されました (GH 41486)DataFrame.fillna()およびSeries.fillna()にvalue以外の非キーワード引数を渡すことは禁止されました (GH 41485)StringMethods.split()およびStringMethods.rsplit()にpat以外の非キーワード引数を渡すことは禁止されました (GH 47448)DataFrame.set_index()にkeys以外の非キーワード引数を渡すことは禁止されました (GH 41495)Resampler.interpolate()にmethod以外の非キーワード引数を渡すことは禁止されました (GH 41699)levelを除くDataFrame.reset_index()とSeries.reset_index()へのキーワードではない引数の受け渡しを禁止 (GH 41496)DataFrame.dropna()とSeries.dropna()へのキーワードではない引数の受け渡しを禁止 (GH 41504)ExtensionArray.argsort()へのキーワードではない引数の受け渡しを禁止 (GH 46134)Categorical.sort_values()へのキーワードではない引数の受け渡しを禁止 (GH 47618)Index.drop_duplicates()とSeries.drop_duplicates()へのキーワードではない引数の受け渡しを禁止 (GH 41485)subsetを除くDataFrame.drop_duplicates()へのキーワードではない引数の受け渡しを禁止 (GH 41485)DataFrame.sort_index()とSeries.sort_index()へのキーワードではない引数の受け渡しを禁止 (GH 41506)methodを除くDataFrame.interpolate()とSeries.interpolate()へのキーワードではない引数の受け渡しを禁止 (GH 41510)DataFrame.any()とSeries.any()へのキーワードではない引数の受け渡しを禁止 (GH 44896)namesを除くIndex.set_names()へのキーワードではない引数の受け渡しを禁止 (GH 41551)otherを除くIndex.join()へのキーワードではない引数の受け渡しを禁止 (GH 46518)DataFrame.pivot()へのキーワードではない引数の受け渡しを禁止 (GH 48301)ioを除くread_html()へのキーワードではない引数の受け渡しを禁止 (GH 27573)path_or_bufを除くread_json()へのキーワードではない引数の受け渡しを禁止 (GH 27573)filepath_or_bufferを除くread_sas()へのキーワードではない引数の受け渡しを禁止 (GH 47154)filepath_or_bufferを除くread_stata()へのキーワードではない引数の受け渡しを禁止 (GH 48128)filepath_or_bufferを除くread_csv()へのキーワードではない引数の受け渡しを禁止 (GH 41485)filepath_or_bufferを除くread_table()へのキーワードではない引数の受け渡しを禁止 (GH 41485)filepath_or_bufferを除くread_fwf()へのキーワードではない引数の受け渡しを禁止 (GH 44710)path_or_bufferを除くread_xml()へのキーワードではない引数の受け渡しを禁止 (GH 45133)condとotherを除くSeries.mask()とDataFrame.mask()へのキーワードではない引数の受け渡しを禁止 (GH 41580)pathを除くDataFrame.to_stata()へのキーワードではない引数の受け渡しを禁止 (GH 48128)condとotherを除くDataFrame.where()とSeries.where()へのキーワードではない引数の受け渡しを禁止 (GH 41523)labelsを除くSeries.set_axis()とDataFrame.set_axis()へのキーワードではない引数の受け渡しを禁止 (GH 41491)mapperを除くSeries.rename_axis()とDataFrame.rename_axis()へのキーワードではない引数の受け渡しを禁止 (GH 47587)lowerとupperを除くSeries.clip()とDataFrame.clip()へのキーワードではない引数の受け渡しを禁止 (GH 41511)Series.bfill()、Series.ffill()、DataFrame.bfill()、およびDataFrame.ffill()へのキーワードではない引数の受け渡しを禁止 (GH 41508)to_replaceとvalueを除くDataFrame.replace()、Series.replace()へのキーワードではない引数の受け渡しを禁止 (GH 47587)byを除くDataFrame.sort_values()へのキーワードではない引数の受け渡しを禁止 (GH 41505)Series.sort_values()へのキーワードではない引数の受け渡しを禁止 (GH 41505)labelsを除くDataFrame.reindex()へのキーワードではない引数の受け渡しを禁止 (GH 17966)一意ではない
IndexオブジェクトでのIndex.reindex()を禁止 (GH 42568)スカラーの
dataでのCategoricalの構築を禁止 (GH 38433)dataを渡さないCategoricalIndexの構築を禁止 (GH 38944)Rolling.validate()、Expanding.validate()、およびExponentialMovingWindow.validate()を削除 (GH 43665)"freq"を返すRolling.win_typeを削除 (GH 38963)Rolling.is_datetimelikeを削除 (GH 38963)DataFrameおよびSeries集計でのlevelキーワードを削除。代わりにgroupbyを使用 (GH 39983)非推奨の
Timedelta.delta()、Timedelta.is_populated()、およびTimedelta.freqを削除 (GH 46430, GH 46476)非推奨の
NaT.freqを削除 (GH 45071)非推奨の
Categorical.replace()を削除し、代わりにSeries.replace()を使用 (GH 44929)Categorical.min()およびCategorical.max()からnumeric_onlyキーワードを削除し、代わりにskipnaを使用 (GH 48821)numeric_only=Noneを指定したDataFrame.median()とDataFrame.mean()の動作を変更し、日付時刻に似た列を除外しないようにしました (numeric_only=Noneの非推奨が強制されるとこの注記は無関係になります) (GH 29941)is_extension_type()を削除し、代わりにis_extension_array_dtype()を使用 (GH 29457).ExponentialMovingWindow.volを削除 (GH 39220)Index.get_value()およびIndex.set_value()を削除 (GH 33907, GH 28621)Series.slice_shift()およびDataFrame.slice_shift()を削除 (GH 37601)DataFrameGroupBy.pad()およびDataFrameGroupBy.backfill()を削除 (GH 45076)read_json()からnumpy引数を削除 (GH 30636)DataFrame.to_dict()でのorientの省略形の使用を禁止 (GH 32516)非単調な
DatetimeIndexで、Index にないキーによる部分スライスを禁止。これによりKeyErrorが発生するようになりました (GH 18531)get_offsetを削除し、代わりにto_offset()を使用 (GH 30340)infer_freq()のwarnキーワードを削除 (GH 45947)DataFrame.between_time()のinclude_startおよびinclude_end引数を削除し、代わりにinclusiveを使用 (GH 43248)date_range()およびbdate_range()のclosed引数を削除し、代わりにinclusive引数を使用 (GH 40245)DataFrame.expanding()のcenterキーワードを削除 (GH 20647)Index.get_loc()のmethodおよびtolerance引数を削除。代わりにindex.get_indexer([label], method=..., tolerance=...)を使用してください (GH 42269)pandas.datetimeサブモジュールを削除 (GH 30489)pandas.npサブモジュールを削除 (GH 30296)pandas.util.testingを削除し、代わりにpandas.testingを使用 (GH 30745)Series.str.__iter__()を削除 (GH 28277)pandas.SparseArrayを削除し、代わりにarrays.SparseArrayを使用 (GH 30642)pandas.SparseSeriesおよびpandas.SparseDataFrameを削除 (pickle サポートを含む) (GH 30642)datetime64、timedelta64、または period dtypes の
DataFrame.shift()およびSeries.shift`()に整数fill_valueを渡すことを強制的に禁止 (GH 32591)DataFrame.ewm()のtimesに文字列の列ラベルを渡すことを強制的に禁止 (GH 43265)Series.between()のinclusiveにTrueとFalseを渡すことを強制的に禁止し、代わりにそれぞれ"both"と"neither"を使用するように変更 (GH 40628)engine="c"を指定したread_csvで、範囲外のインデックスを持つusecolsを使用することを強制的に禁止 (GH 25623)ExcelWriterで**kwargsを使用することを強制的に禁止し、代わりにキーワード引数engine_kwargsを使用するように変更 (GH 40430)DataFrameGroupBy.__getitem__()に列ラベルのタプルを渡すことを強制的に禁止 (GH 30546)MultiIndexのレベルでラベルのシーケンスを使用してインデックス付けする際に、欠落しているラベルを強制的に禁止。これによりKeyErrorが発生するようになりました (GH 42351)位置スライスを使用した
.locで値を設定することを強制的に禁止。代わりにラベルを使用した.locまたは位置を使用した.ilocを使用するように変更 (GH 31840)小数点以下のない
floatキーによる位置インデックス付けを強制的に禁止し、代わりに手動で整数にキャストするように変更 (GH 34193).ilocでDataFrameインデクサーを使用することを強制的に禁止し、自動アライメントのために代わりに.locを使用するように変更 (GH 39022)__getitem__および__setitem__メソッドでのsetまたはdictインデクサーの使用を強制的に禁止 (GH 42825)Indexでのインデックス付け、または多次元オブジェクト (例:obj[:, None]) を生成するSeriesでの位置インデックス付けを強制的に禁止し、代わりにインデックス付けの前に numpy に変換するように変更 (GH 35141)merge()がsuffixesキーワードと既存の列によって重複する列を生成することを強制的に禁止 (GH 22818)DataFrame.melt()のvalue_name引数がDataFrameの列の要素と一致することを強制的に禁止 (GH 35003)DataFrame.to_markdown()およびSeries.to_markdown()の**kwargsにshowindexを渡すことを強制的に禁止し、代わりにindexを使用するように変更 (GH 33091)Categorical._codes を直接設定する機能を削除 (GH 41429)
Categorical.categories を直接設定する機能を削除 (GH 47834)
Categorical.add_categories(),Categorical.remove_categories(),Categorical.set_categories(),Categorical.rename_categories(),Categorical.reorder_categories(),Categorical.set_ordered(),Categorical.as_ordered(),Categorical.as_unordered()から引数inplaceを削除 (GH 37981, GH 41118, GH 41133, GH 47834)min_periods=Noneを指定したRolling.count()がウィンドウのサイズをデフォルトとすることを強制的に適用 (GH 31302)DataFrame.to_parquet()、DataFrame.to_stata()、およびDataFrame.to_feather()でfnameをpathに変更 (GH 30338)スライスを含む単一項目リスト (例:
ser[[slice(0, 2)]]) を使用してSeriesをインデックス付けすることを強制的に禁止。代わりにリストをタプルに変換するか、スライスを直接渡すように変更 (GH 31333)DatetimeIndexインデックスを持つDataFrameで文字列インデクサーを使用してインデックス付けする際の動作を変更。以前は行のスライスとして動作していましたが、現在は他の列キーと同様に動作します。以前の動作を得るにはframe.loc[key]を使用してください (GH 36179)display.max_colwidthオプションが負の整数を受け入れないことを強制的に適用 (GH 31569)非推奨の
display.column_spaceオプションを削除し、代わりにdf.to_string(col_space=...)を使用するように変更 (GH 47280)pandas クラスから非推奨のメソッド
madを削除 (GH 11787)pandas クラスから非推奨のメソッド
tshiftを削除 (GH 11631)Seriesに渡される空のデータの動作を変更。デフォルトの dtype がfloat64ではなくobjectになります (GH 29405)タイムゾーンが異なる場合の
DatetimeIndex.union()、DatetimeIndex.intersection()、およびDatetimeIndex.symmetric_difference()の動作を変更し、object dtype にキャストする代わりに UTC に変換するように変更 (GH 39328)utc=Falseを指定したto_datetime()の引数 "now" の動作をTimestamp("now")と一致するように変更 (GH 18705)タイムゾーンを意識した
DatetimeIndexで、タイムゾーンを意識しないdatetimeオブジェクトまたはその逆でインデックス付けする際の動作を変更。これらは、他の比較不能な型と同様にKeyErrorを発生させるように動作するようになりました (GH 36148)Index.reindex()、Series.reindex()、およびDataFrame.reindex()の動作を変更。datetime64dtype とfill_valueにdatetime.dateオブジェクトを指定した場合、これらはもはやdatetime.datetimeオブジェクトと同等と見なされなくなり、再インデックスはオブジェクト dtype にキャストされるようになりました (GH 39767)明示的に
SparseDtypeではない dtype を与えられた場合のSparseArray.astype()の動作を変更。暗黙的にSparseDtypeを使用する代わりに、明示的に要求された dtype にキャストするように変更 (GH 34457)Index.ravel()の動作を変更し、np.ndarrayではなく元のIndexのビューを返すように変更 (GH 36900)明示的な
name=Noneを指定したSeries.to_frame()およびIndex.to_frame()の動作を変更し、列名にインデックス名またはデフォルトの0を使用する代わりにNoneを使用するように変更 (GH 45523)bool-dtype の配列と整数 dtype の配列を結合した場合のconcat()の動作を変更。整数 dtype ではなくobjectdtype を返すようになりました。以前の動作を得るには、連結する前に bool オブジェクトを明示的に整数にキャストしてください (GH 45101)浮動小数点
dataと整数dtypeを指定してDataFrameコンストラクターを呼び出した場合の動作を変更。データが損失なくキャストできない場合、Seriesの動作に合わせて浮動小数点 dtype が保持されるようになりました (GH 41170)数値エントリを含むオブジェクト dtype の
np.ndarrayを指定してIndexコンストラクターを呼び出した場合の動作を変更。これにより、Seriesの動作と整合性を持たせるため、数値 dtype を推論する代わりにオブジェクト dtype が保持されるようになりました (GH 42870)Index.__and__()、Index.__or__()、およびIndex.__xor__()の動作を変更し、集合演算のエイリアスではなく論理演算 (Seriesの動作と一致) として動作するように変更 (GH 37374)最初の要素が
Categoricalであるリストを渡してDataFrameコンストラクターを呼び出した場合の動作を変更。これにより、他の型の場合の動作と整合性を持たせるため、要素を行として扱いobjectdtype にキャストするように変更 (GH 38845)データがキャストできない
dtype(int 以外) を渡してDataFrameコンストラクターを呼び出した場合の動作を変更。dtype を暗黙的に無視する代わりにエラーを発生させるようになりました (GH 41733)Seriesコンストラクターの動作を変更し、文字列エントリから datetime64 または timedelta64 dtype を推論しないように変更 (GH 41731)np.datetime64オブジェクトとtzを渡してTimestampコンストラクターを呼び出した場合の動作を変更し、入力を UTC 時刻ではなくウォールタイムとして解釈するように変更 (GH 42288)Timestamp.utcfromtimestamp()の動作を変更し、Timestamp.utcfromtimestamp(val).timestamp() == valを満たすタイムゾーンを意識したオブジェクトを返すように変更 (GH 45083)SparseArrayまたはSparseDtypeを渡してIndexコンストラクターを呼び出した場合の動作を変更し、numpy.ndarrayにキャストする代わりにその dtype を保持するように変更 (GH 43930)DatetimeTZDtypeを持つオブジェクトでの setitem-like 操作 (__setitem__,fillna,where,mask,replace,insert,shiftの fill_value) で、タイムゾーンが一致しない値を使用した場合の動作を変更。両方をオブジェクト dtype にキャストする代わりに、値をオブジェクトのタイムゾーンにキャストするように変更 (GH 44243)浮動小数点 dtype データと
DatetimeTZDtypeを指定したIndex、Series、DataFrameコンストラクターの動作を変更。整数 dtype データが処理される方法と整合性を持たせるため、データはウォールタイムではなく UTC 時刻として解釈されるようになりました (GH 45573)整数 dtype と
NaNを含む浮動小数点データを指定したSeriesおよびDataFrameコンストラクターの動作を変更。これによりIntCastingNaNErrorが発生するようになりました (GH 40110)整数
dtypeと、この dtype に損失なくキャストするには大きすぎる値を指定したSeriesおよびDataFrameコンストラクターの動作を変更。これによりValueErrorが発生するようになりました (GH 41734)整数
dtypeと、datetime64またはtimedelta64dtypes のいずれかの値を持つSeriesおよびDataFrameコンストラクターの動作を変更。これによりTypeErrorが発生するようになりました。代わりにvalues.view("int64")を使用してください (GH 41770)pandas.DataFrame.resample()、pandas.Series.resample()およびpandas.Grouperから非推奨のbaseおよびloffset引数を削除。代わりにoffsetまたはoriginを使用してください (GH 31809)timedelta64[ns]dtype と互換性のないfill_valueを指定したSeries.fillna()およびDataFrame.fillna()の動作を変更。これにより、エラーを発生させる代わりにオブジェクト dtype にキャストされるようになりました (他の dtype の動作と整合) (GH 45746)Series.str.replace()のregexのデフォルト引数をTrueからFalseに変更。さらに、regex=Trueを指定した単一文字のpatは、文字列リテラルではなく正規表現として扱われるようになりました。 (GH 36695, GH 24804)bool_only=Trueを指定したDataFrame.any()およびDataFrame.all()の動作を変更。すべての bool 値を持つオブジェクト dtype の列は含まれなくなります。最初に手動でbooldtype にキャストしてください (GH 46188)axis=Noneを指定したDataFrame.max()、DataFrame.min、DataFrame.mean、DataFrame.median、DataFrame.skew、DataFrame.kurtの動作を変更し、両方の軸にわたる集計を適用するスカラーを返すように変更 (GH 45072)Timestampとdatetime.dateオブジェクトの比較の動作を変更。これらは不平等として比較され、不平等比較ではエラーを発生させるようになりました (datetime.datetimeの動作と一致) (GH 36131)NaTとdatetime.dateオブジェクトの比較の動作を変更。不平等比較ではエラーを発生させるようになりました (GH 39196)リストまたは辞書で使用された場合に
Series.transformおよびDataFrame.transformでTypeErrorを発生させた列を暗黙的に削除する非推奨を強制的に適用 (GH 43740)リストのようなオブジェクトを渡して
DataFrame.apply()を呼び出した場合の動作を変更し、部分的な失敗があった場合でもエラーを発生させるように変更 (GH 43740)DataFrame.to_latex()の動作を変更し、Styler.to_latex()を介して Styler 実装を使用するように変更 (GH 47970)整数キーと
Float64Indexを持つSeries.__setitem__()の動作を変更。キーがインデックスに存在しない場合、以前はキーを位置として扱っていましたが (series.iloc[key] = valのように動作)、現在はラベルとして扱います (series.loc[key] = valのように動作)。これはSeries.__getitem__`()の動作と整合しています (GH 33469)factorize()、Index.factorize()、およびExtensionArray.factorize()からna_sentinel引数を削除 (GH 47157)diffを実装していないExtensionDtypedtypes を持つSeries.diff()およびDataFrame.diff()の動作を変更。これにより、numpy にキャストする代わりにTypeErrorが発生するようになりました (GH 31025)method="outer"を指定してDataFrameで numpy の "ufunc" を呼び出す非推奨を強制的に適用。これによりNotImplementedErrorが発生するようになりました (GH 36955)非数値 dtype を持つ
Series縮約 (rank,any,all, ...) にnumeric_only=Trueを渡すことを強制的に禁止する非推奨を適用 (GH 47500)DataFrameGroupBy.apply()およびSeriesGroupBy.apply()の動作を変更し、トランスフォーマーが検出された場合でもgroup_keysが尊重されるように変更 (GH 34998)DataFrameとSeriesの比較で、フレームの列がシリーズのインデックスと一致しない場合、自動的にアライメントする代わりにValueErrorを発生させるように変更。比較する前にleft, right = left.align(right, axis=1, copy=False)を実行してください (GH 36795)DataFrame 縮約で暗黙的にエラーを発生させた列を削除する
numeric_only=None(デフォルト) の非推奨を強制的に適用。numeric_onlyはデフォルトでFalseになりました (GH 41480)すべてのDataFrameメソッドにおいて、引数
numeric_onlyのデフォルトをFalseに変更しました (GH 46096, GH 46906)Series.rank()のnumeric_onlyのデフォルトをFalseに変更しました (GH 47561)numeric_only=Falseの場合、groupby および resample 操作で不要な列が暗黙的に削除されるという非推奨の動作を強制しました (GH 41475)Rolling,Expanding, およびExponentialMovingWindow操作で、不要な列が暗黙的に削除されるという非推奨の動作を強制しました。これにより、errors.DataErrorが発生するようになりました (GH 42834)df.loc[:, foo] = barまたはdf.iloc[:, foo] = barで値を設定する動作を変更しました。これらの操作は、キャストにフォールバックする前に、常にその場で値を設定しようと試みるようになりました (GH 45333)様々な
DataFrameGroupByメソッドでnumeric_onlyのデフォルトを変更しました。すべてのメソッドは、デフォルトでnumeric_only=Falseになりました (GH 46072)Resamplerメソッドのnumeric_onlyのデフォルトをFalseに変更しました (GH 47177)呼び出し可能オブジェクトが DataFrame を返す
DataFrameGroupBy.transform()メソッドを使用すると、入力のインデックスにアラインされるようになりました (GH 47244)DataFrame.groupby()に長さ1の列リストを提供した場合、結果として得られるDataFrameGroupByオブジェクトを反復処理して返されるキーは、長さ1のタプルになりました (GH 47761)非推奨のメソッド
ExcelWriter.write_cells(),ExcelWriter.save(),ExcelWriter.cur_sheet(),ExcelWriter.handles(),ExcelWriter.path()を削除しました (GH 45795)ExcelWriterの属性bookは、設定できなくなりました。アクセスおよび変更は引き続き可能です (GH 48943)Rolling,Expanding, およびExponentialMovingWindow操作の未使用の*argsおよび**kwargsを削除しました (GH 47851)DataFrame.to_csv()から非推奨の引数line_terminatorを削除しました (GH 45302)lreshape()から非推奨の引数labelを削除しました (GH 30219)DataFrame.eval()およびDataFrame.query()のexpr以降の引数はキーワード専用になりました (GH 47587)Index._get_attributes_dict()を削除しました (GH 50648)Series.__array_wrap__()を削除しました (GH 50648)DataFrame.value_counts()の動作を変更しました。リストライク(要素が1つでも複数でも)の場合にはMultiIndexを持つSeriesを返し、単一のラベルの場合にはIndexを返すようになりました (GH 50829)
パフォーマンス改善#
null許容dtypeの場合の
DataFrameGroupBy.median()およびSeriesGroupBy.median()およびDataFrameGroupBy.cumprod()のパフォーマンスを改善しました (GH 37493)object dtypeの場合の
DataFrameGroupBy.all(),DataFrameGroupBy.any(),SeriesGroupBy.all(), およびSeriesGroupBy.any()のパフォーマンスを改善しました (GH 50623)MultiIndex.argsort()およびMultiIndex.sort_values()のパフォーマンスを改善しました (GH 48406)MultiIndex.size()のパフォーマンスを改善しました (GH 48723)欠損値や重複がない場合の
MultiIndex.union()のパフォーマンスを改善しました (GH 48505, GH 48752)MultiIndex.difference()のパフォーマンスを改善しました (GH 48606)sort=None の場合の
MultiIndexの集合演算のパフォーマンスを改善しました (GH 49010)拡張配列dtypeの場合の
DataFrameGroupBy.mean(),SeriesGroupBy.mean(),DataFrameGroupBy.var(), およびSeriesGroupBy.var()のパフォーマンスを改善しました (GH 37493)level=Noneの場合のMultiIndex.isin()のパフォーマンスを改善しました (GH 48622, GH 49577)MultiIndex.putmask()のパフォーマンスを改善しました (GH 49830)インデックスに重複がある場合の
Index.union()およびMultiIndex.union()のパフォーマンスを改善しました (GH 48900)pyarrowでサポートされたdtypeの場合の
Series.rank()のパフォーマンスを改善しました (GH 50264)pyarrowでサポートされたdtypeの場合の
Series.searchsorted()のパフォーマンスを改善しました (GH 50447)拡張配列dtypeの場合の
Series.fillna()のパフォーマンスを改善しました (GH 49722, GH 50078)Indexが単調である場合の、マスクされたおよびarrowのdtypeに対するIndex.join(),Index.intersection(), およびIndex.union()のパフォーマンスを改善しました (GH 50310, GH 51365)null許容dtypeを持つ
Series.value_counts()のパフォーマンスを改善しました (GH 48338)null許容dtypeの整数numpy配列を渡す
Seriesコンストラクタのパフォーマンスを改善しました (GH 48338)リストを渡す
DatetimeIndexコンストラクタのパフォーマンスを改善しました (GH 48609)ソートされた
MultiIndexで結合する場合のmerge()およびDataFrame.join()のパフォーマンスを改善しました (GH 48504)タイムゾーンオフセットを含む文字列を解析する場合の
to_datetime()のパフォーマンスを改善しました (GH 50107)MultiIndexのタプルベースのインデックス作成におけるDataFrame.loc()およびSeries.loc()のパフォーマンスを改善しました (GH 48384)カテゴリカルdtypeを持つ
Series.replace()のパフォーマンスを改善しました (GH 49404)MultiIndex.unique()のパフォーマンスを改善しました (GH 48335)null許容およびarrow dtypeでのインデックス操作のパフォーマンスを改善しました (GH 49420, GH 51316)
拡張配列でサポートされたインデックスを持つ
concat()のパフォーマンスを改善しました (GH 49128, GH 49178)api.types.infer_dtype()のパフォーマンスを改善しました (GH 51054)BZ2またはLZMAを使用する場合の
DataFrame.to_pickle()/Series.to_pickle()のメモリ使用量を削減しました (GH 49068)np.str_型のnumpy配列を渡すStringArrayコンストラクタのパフォーマンスを改善しました (GH 49109)from_tuples()のパフォーマンスを改善しました (GH 50620)factorize()のパフォーマンスを改善しました (GH 49177)配列に NA が含まれる場合の
ArrowExtensionArrayの比較メソッドのパフォーマンスを改善しました (GH 50524)文字列を
BooleanDtypeに解析する際のパフォーマンスを改善しました (GH 50613)MultiIndexのサブセットで結合する場合のDataFrame.join()のパフォーマンスを改善しました (GH 48611)MultiIndex.intersection()のパフォーマンスを改善しました (GH 48604)DataFrame.__setitem__()のパフォーマンスを改善しました (GH 46267)null許容dtypeの場合の
varおよびstdのパフォーマンスを改善しました (GH 48379)。pyarrowおよびnull許容dtypeを反復処理する場合のパフォーマンスを改善しました (GH 49825, GH 49851)
read_sas()のパフォーマンスを改善しました (GH 47403, GH 47405, GH 47656, GH 48502)RangeIndex.sort_values()のメモリ使用量を改善しました (GH 48801)copy=Trueの場合に2回コピーを回避することで、Series.to_numpy()のパフォーマンスを改善しました (GH 24345)MultiIndexを使用するSeries.rename()のパフォーマンスを改善しました (GH 21055)byがカテゴリカル型でsort=Falseの場合のDataFrameGroupByおよびSeriesGroupByのパフォーマンスを改善しました (GH 48976)byがカテゴリカル型でobserved=Falseの場合のDataFrameGroupByおよびSeriesGroupByのパフォーマンスを改善しました (GH 49596)パラメータ
index_colをNone(デフォルト) に設定した場合のread_stata()のパフォーマンスを改善しました。インデックスがInt64Indexの代わりにRangeIndexになりました (GH 49745)インデックスで結合しない場合の
merge()のパフォーマンスを改善しました。新しいインデックスがInt64Indexの代わりにRangeIndexになりました (GH 49478)非オブジェクトdtypeを使用する場合の
DataFrame.to_dict()およびSeries.to_dict()のパフォーマンスを改善しました (GH 46470)複数のテーブルがある場合の
read_html()のパフォーマンスを改善しました (GH 49929)'%Y%m%d'形式を使用する場合のto_datetime()のパフォーマンスを改善しました (GH 17410)形式が指定されているか推測できる場合の
to_datetime()のパフォーマンスを改善しました (GH 50465)null許容dtypeの場合の
Series.median()のパフォーマンスを改善しました (GH 50838)date_parserにto_datetime()ラムダ関数を渡し、入力に混合タイムゾーンオフセットがある場合のread_csv()のパフォーマンスを改善しました (GH 35296)カテゴリカルdtypeを持つ
SeriesGroupBy.value_counts()のパフォーマンスを改善しました (GH 46202)read_hdf()の参照リークを修正しました (GH 37441)datetimeとtimedeltaをシリアライズする際の
DataFrame.to_json()およびSeries.to_json()のメモリリークを修正しました (GH 40443)多くの
DataFrameGroupByメソッドでメモリ使用量を削減しました (GH 51090)整数
decimalパラメータの場合のDataFrame.round()のパフォーマンスを改善しました (GH 17254)to_replaceに大きな辞書を使用する場合のDataFrame.replace()およびSeries.replace()のパフォーマンスを改善しました (GH 6697)シーク可能なファイルを読み込む際の
StataReaderのメモリ使用量を改善しました (GH 48922)
バグ修正#
カテゴリカル#
Categorical.set_categories()が dtype 情報を失うバグ (GH 48812)カテゴリカルdtypeを持つ
Series.replace()で、to_replaceの値が新しい値と重複する場合のバグ (GH 49404)カテゴリカルdtypeを持つ
Series.replace()が、基になるカテゴリのnull許容dtypeを失うバグ (GH 49404)グルーパとして使用されたときにカテゴリを並べ替える
DataFrame.groupby()およびSeries.groupby()のバグ (GH 48749)Categoricalオブジェクトから構築し、dtype="category"の場合に順序が失われるCategoricalコンストラクタのバグ (GH 49309)順序なしの
CategoricalDtypeを持ち、グループがない場合にTypeErrorが発生しないSeriesGroupBy.min(),SeriesGroupBy.max(),DataFrameGroupBy.min(), およびDataFrameGroupBy.max()のバグ (GH 51034)
日付時刻ライク#
RangeIndexで推論された場合にTypeErrorを発生させるpandas.infer_freq()のバグ (GH 47084)大きな整数に対応する文字列引数で
OverflowErrorを誤って発生させるto_datetime()のバグ (GH 50533)errors='coerce'およびinfer_datetime_format=Trueの場合に無効なオフセットで発生していたto_datetime()のバグ (GH 48633)tz=Noneがタイムゾーン対応のdtypeまたはデータと組み合わせて明示的に指定された場合に発生しないDatetimeIndexコンストラクタのバグ (GH 48659)DatetimeIndexからdatetimeスカラを減算した場合に元のfreq属性が保持されないバグ (GH 48818)pandas.tseries.holiday.Holidayで、半開の日付間隔がUSFederalHolidayCalendar.holidays()からの一貫性のない戻り型を引き起こすバグ (GH 49075)夏時間移行付近で
dateutilまたはzoneinfoタイムゾーンを使用するタイムゾーン対応dtypeのDatetimeIndex,Series, およびDataFrameのレンダリングのバグ (GH 49684)非ISO8601
formatが渡された場合に、Timestamp,datetime.datetime,datetime.date, またはnp.datetime64オブジェクトを解析するとValueErrorを発生させていたto_datetime()のバグ (GH 49298, GH 50036)空の文字列と非ISO8601形式が渡された場合に
ValueErrorを発生させていたto_datetime()のバグを修正しました。現在、ISO8601形式との互換性のために、空の文字列はNaTとして解析されます (GH 50251)非ISO8601区切り日付文字列を解析する際に、ユーザーにとって実行可能なものではない
UserWarningを表示していたTimestampのバグ (GH 50232)ISO週ディレクティブとISO曜日ディレクティブを含む形式で日付を解析する際に、誤解を招く
ValueErrorを表示していたto_datetime()のバグ (GH 50308)freq引数がゼロ期間(例:「0ns」)の場合に、例外を発生させる代わりに誤った結果を返していたTimestamp.round()のバグ (GH 49737)無効な形式が渡され、
errorsが'ignore'または'coerce'であった場合にValueErrorを発生させていなかったto_datetime()のバグ (GH 50266)DateOffsetがミリ秒と別の超日引数で構築するとTypeErrorをスローしていたバグ (GH 49897)'%Y%m%d'形式の小数日付文字列を解析する際にValueErrorを発生させていなかったto_datetime()のバグ (GH 50051)ISO8601形式で混合オフセットの日付文字列を解析する際に、
NoneをNaTに変換していなかったto_datetime()のバグ (GH 50071)errors='ignore'およびformat='%Y%m%d'の場合に、範囲外の日付文字列を解析すると入力が返されなかったto_datetime()のバグ (GH 14487)タイムゾーン対応文字列、ISO8601形式、および
utc=Falseで解析する場合に、タイムゾーンに依存しないdatetime.datetimeをタイムゾーン対応に変換していたto_datetime()のバグ (GH 50254)ISO8601形式で一部の値がゼロ埋めされていなかった日付を解析する際に
ValueErrorをスローしていたto_datetime()のバグ (GH 21422)format='%Y%m%d'およびerrors='ignore'を使用する際に、誤った結果を返していたto_datetime()のバグ (GH 26493)formatがISO8601ではなかった場合に、日付文字列'today'および'now'を解析できなかったto_datetime()のバグ (GH 50359)Timestamp.utctimetuple()がTypeErrorを発生させていたバグ (GH 32174)errors='ignore'で混合オフセットのTimestampを解析する際にValueErrorを発生させていたto_datetime()のバグ (GH 50585)オーバーフロー境界から1
unit以内の浮動小数点入力が誤って処理されていたto_datetime()のバグ (GH 50183)「Y」または「M」の単位で
to_datetime()を使用すると、逐次的なTimestampの結果と一致しない誤った結果を返していたバグ (GH 50870)datetimeまたはtimedelta dtypeを持つ
Series.interpolate()およびDataFrame.interpolate()が誤ってValueErrorを発生させていたバグ (GH 11312)errors='ignore'の場合に、入力が範囲外であった場合にto_datetime()が入力を返さなかったバグ (GH 50587)タイムゾーン対応の datetime64 列を持つ
DataFrame入力が与えられた場合に、タイムゾーン対応が誤って失われていたDataFrame.from_records()のバグ (GH 51162)errors='coerce'で日付文字列を解析する際にdecimal.InvalidOperationを発生させていたto_datetime()のバグ (GH 51084)unitとoriginの両方が指定された場合に誤った結果を返していたto_datetime()のバグ (GH 42624)タイムゾーン対応の datetime を含むオブジェクトdtypeオブジェクトまたは文字列を
datetime64[ns]に変換する際に、TypeErrorを発生させる代わりに誤ってUTCとしてローカライズしていたSeries.astype()およびDataFrame.astype()のバグ (GH 50140)datetimeまたはtimedelta dtypeを持つ
DataFrameGroupBy.quantile()およびSeriesGroupBy.quantile()で、NaTを含むグループで誤った結果を与えていたバグ (GH 51373)PeriodDtypeまたはDatetimeTZDtypeで誤って発生させていたDataFrameGroupBy.quantile()およびSeriesGroupBy.quantile()のバグ (GH 51373)
Timedelta#
入力がnull許容dtype
Float64を持つ場合にエラーを発生させていたto_timedelta()のバグ (GH 48796)np.timedelta64("nat")が与えられた場合に、NaTを返す代わりに誤って例外を発生させていたTimedeltaコンストラクタのバグ (GH 48898)Timedeltaオブジェクトとキーワード (例: days, seconds) の両方が渡された場合に発生しなかったTimedeltaコンストラクタのバグ (GH 48898)非常に大きな
datetime.timedeltaオブジェクトとのTimedelta比較で、誤ってOutOfBoundsTimedeltaを発生させていたバグ (GH 49021)
タイムゾーン#
異種タイムゾーンを持つ複数のタイムゾーン対応
datetimeオブジェクトを含むオブジェクトdtypeをDatetimeTZDtypeに変換する際に、誤って例外を発生させていたSeries.astype()およびDataFrame.astype()のバグ (GH 32581)formatが%Zで指定された場合に、タイムゾーン名を持つ日付文字列を解析できなかったto_datetime()のバグ (GH 49748)Timestamp.tz_localize()のambiguousパラメータに無効な値を渡した場合のより良いエラーメッセージ (GH 49565)文字列解析のバグで、
Timestampが無効なタイムゾーンで構築されることを誤って許可し、印刷しようとすると例外が発生するバグを修正しました (GH 50668)objects_to_datetime64ns()の TypeError メッセージを修正し、DatetimeIndex が混合タイムゾーンを持っていることを通知するようにしました (GH 50974)
数値#
入力に混合DataFrame型とSeries型が含まれる場合に、ufunc を適用できない
DataFrame.add()のバグ (GH 39853)マスクされたdtypeとnumpy dtypeを組み合わせたときにマスクが伝播しない
Seriesの算術演算のバグ (GH 45810, GH 42630)ArrowDtypeでサポートされたデータを使用する際に、誤ったTypeErrorが常に発生していたDataFrame.sem()およびSeries.sem()のバグ (GH 49759)リストとマスクされた
Seriesの場合、Series.__add__()がオブジェクトにキャストされていたバグ (GH 22962)NA値がある場合にdropna=Falseが尊重されなかったmode()のバグ (GH 50982)engine="numexpr"で、列名がminまたはmaxの場合にTypeErrorを発生させていたDataFrame.query()のバグ (GH 50937)pd.NaTを含むtz対応データでaxis=1の場合に、誤った結果を返していたDataFrame.min()およびDataFrame.max()のバグ (GH 51242)
変換#
文字列リストから
int64dtypeを持つSeriesを構築すると、キャストする代わりに例外を発生させていたバグ (GH 44923)マスクされたdtypeと
NA値を持つブール値でSeriesを構築すると例外が発生していたバグ (GH 42137)関数呼び出しに負の値がある場合に
AttributeErrorを誤って発生させていたDataFrame.eval()のバグ (GH 46471)SeriesがNAを含み、dtype がobjectである場合に、dtype を null許容dtypeに変換しなかったSeries.convert_dtypes()のバグ (GH 48791)ExtensionDtypeサブクラスでkind="M"を持つものがタイムゾーン型として解釈されていたバグ (GH 34986)文字列またはバイナリのシーケンスが渡された場合に
NotImplementedErrorを発生させていたarrays.ArrowExtensionArrayのバグ (GH 49172)非pyarrow文字列dtypeからpyarrow数値型に変換する際に
pyarrow.ArrowInvalidを発生させていたSeries.astype()のバグ (GH 50430)stringに変換し、copy=Falseの場合に、入力配列をその場で変更していたDataFrame.astype()のバグ (GH 51073)na_valueを適用する前に NumPy 配列に変換していたSeries.to_numpy()のバグ (GH 48951)pyarrow dtypeに変換する際にデータをコピーしなかった
DataFrame.astype()のバグ (GH 50984)formatが ISO8601 形式であった場合に、exact引数が尊重されなかったto_datetime()のバグ (GH 12649)pyarrow期間型に変換する際に
TypeErrorを発生させていたTimedeltaArray.astype()のバグ (GH 49795)DataFrame.eval()とDataFrame.query()におけるバグで、拡張配列のdtypeに対して例外が発生していました (GH 29618, GH 50261, GH 31913)。Series()をIndexから作成し、dtypeがIndexのdtypeと同じ場合にデータがコピーされないバグがありました (GH 52008)。
文字列#
pandas.api.types.is_string_dtype()がStringDtypeまたはpyarrow.string()を持つArrowDtypeに対してTrueを返さないバグがありました (GH 15585)。文字列のdtypeを「datetime64[ns]」または「timedelta64[ns]」に変換する際に、誤って
TypeErrorを発生させるバグがありました (GH 36153)。文字列dtypeの列に配列の値を設定する際に、欠損値が含まれる場合に副作用として配列が変更されるバグがありました (GH 51299)。
Interval#
IntervalIndex.is_overlapping()で、インターバルに重複する左境界がある場合に誤った出力となるバグがありました (GH 49581)。Series.infer_objects()がIntervalオブジェクトのオブジェクトシリーズに対してIntervalDtypeを推論できないバグがありました (GH 50090)。Series.shift()でIntervalDtypeと無効なヌルfill_valueを使用した場合にTypeErrorを発生させないバグがありました (GH 51258)。
インデックス付け#
DataFrame.__setitem__()で、インデクサーがbooleandtype のDataFrameの場合に例外が発生するバグがありました (GH 47125)。DataFrame.reindex()で、uintdtype の列とインデックスをインデックス指定する場合に誤った値で埋められるバグがありました (GH 48184)。DataFrame.loc()で、異なるdtypeを持つDataFrameを設定すると、値が単一のdtypeに強制されるバグがありました (GH 50467)。DataFrame.sort_values()で、byが空のリストでinplace=Trueの場合にNoneが返されないバグがありました (GH 50643)。DataFrame.loc()で、リストインデクサーを使用して値を設定する際にdtypeが強制されるバグがありました (GH 49159)。Series.loc()で、スライスインデクサーの範囲外の終わりに対してエラーが発生するバグがありました (GH 50161)。DataFrame.loc()で、すべてのFalseのboolインデクサーと空のオブジェクトを使用した場合にValueErrorが発生するバグがありました (GH 51450)。DataFrame.loc()で、boolインデクサーとMultiIndexを使用した場合にValueErrorが発生するバグがありました (GH 47687)。DataFrame.loc()で、非スカラーインデクサーを使用して pyarrow バックアップ列の値を設定する際にIndexErrorが発生するバグがありました (GH 50085)。DataFrame.__getitem__(),Series.__getitem__(),DataFrame.__setitem__(), およびSeries.__setitem__()で、拡張浮動小数点dtype (Float64&Float64) または整数を使用した複素数dtypeのインデックス指定時にバグがありました (GH 51053)。DataFrame.loc()で、空のインデクサーと互換性のない値を設定する際にオブジェクトが変更されるバグがありました (GH 45981)。DataFrame.__setitem__()で、右辺がMultiIndex列を持つDataFrameの場合にValueErrorが発生するバグがありました (GH 49121)。DataFrame.reindex()で、DataFrameが単一の拡張配列列を持つ場合に、columnsとindexを再インデックスする際にdtypeをobjectにキャストするバグがありました (GH 48190)。DataFrame.iloc()で、インデクサーが数値拡張配列dtypeを持つSeriesの場合にIndexErrorが発生するバグがありました (GH 49521)。describe()で、結果のインデックスにパーセンタイルをフォーマットする際に、必要以上の小数点が表示されるバグがありました (GH 46362)。DataFrame.compare()で、null許容dtypeでNAと値を比較する際に差異を認識しないバグがありました (GH 48939)。Series.rename()で、MultiIndexを使用した場合に拡張配列dtypeが失われるバグがありました (GH 21055)。DataFrame.isetitem()で、DataFrameの拡張配列dtypeがオブジェクトに強制されるバグがありました (GH 49922)。Series.__getitem__()で、空のpyarrowバックアップオブジェクトから選択する際に破損したオブジェクトが返されるバグがありました (GH 51734)。BusinessHourで、インデックスに開始時間が含まれていない場合にDatetimeIndexの作成が失敗するバグがありました (GH 49835)。
欠損値#
Index.equals()で、IndexがNAを含むタプルで構成されている場合にTypeErrorが発生するバグがありました (GH 48446)。Series.map()で、データにNaNがあり、defaultdictマッピングが使用された場合に誤った結果が生じるバグがありました (GH 48813)。NAで、bytesオブジェクトとの二項演算を実行する際にNAを返す代わりにTypeErrorが発生するバグがありました (GH 49108)。DataFrame.update()で、overwrite=Falseを使用した場合に、selfにNaT値を持つ列があり、その列がotherに存在しない場合にTypeErrorが発生するバグがありました (GH 16713)。Series.replace()で、オブジェクトdtypeのNAを含むSeriesの値を置換する際にRecursionErrorが発生するバグがありました (GH 47480)。Series.replace()で、NAを含む数値Seriesの値を置換する際にRecursionErrorが発生するバグがありました (GH 50758)。
MultiIndex#
MultiIndex.get_indexer()で、NaN値が一致しないバグがありました (GH 29252, GH 37222, GH 38623, GH 42883, GH 43222, GH 46173, GH 48905)。MultiIndex.argsort()で、インデックスにNAが含まれている場合にTypeErrorが発生するバグがありました (GH 48495)。MultiIndex.difference()で、拡張配列dtypeが失われるバグがありました (GH 48606)。MultiIndex.set_levelsで、空のレベルを設定する際にIndexErrorが発生するバグがありました (GH 48636)。MultiIndex.unique()で、拡張配列dtypeが失われるバグがありました (GH 48335)。MultiIndex.intersection()で、拡張配列が失われるバグがありました (GH 48604)。MultiIndex.union()で、拡張配列が失われるバグがありました (GH 48498, GH 48505, GH 48900)。MultiIndex.union()で、sort=None かつインデックスに欠損値が含まれる場合にソートされないバグがありました (GH 49010)。MultiIndex.append()で、名前の等価性がチェックされないバグがありました (GH 48288)。MultiIndex.symmetric_difference()で、拡張配列が失われるバグがありました (GH 48607)。MultiIndex.join()で、MultiIndexに重複がある場合にdtypeが失われるバグがありました (GH 49830)。MultiIndex.putmask()で、拡張配列が失われるバグがありました (GH 49830)。MultiIndex.value_counts()で、MultiIndexではなく、タプルのフラットインデックスでインデックス付けされたSeriesが返されるバグがありました (GH 49558)。
I/O#
read_sas()で、DataFrameの断片化が発生し、errors.PerformanceWarningが発生するバグがありました (GH 48595)。read_excel()で、ファイルの読み込み中に例外が発生した場合に、問題のあるシート名を含めることでエラーメッセージが改善されました (GH 48706)。PyArrowバックアップされたデータの一部をピクルス化する際に、サブセットではなくデータ全体がシリアライズされるバグがありました (GH 42600)。
read_sql_query()で、chunksizeが指定され、結果が空の場合にdtype引数が無視されるバグがありました (GH 50245)。read_csv()で、1行のcsvファイルでnamesよりも列数が少ない場合にengine="c"でerrors.ParserErrorが発生するバグがありました (GH 47566)。read_json()で、orient="table"とNA値を使用した場合に例外が発生するバグがありました (GH 40255)。stringdtypeの表示で、ストレージオプションが表示されないバグがありました (GH 50099)。DataFrame.to_string()で、header=Falseを使用した場合に、データの最初の行と同じ行にインデックス名が印刷されるバグがありました (GH 49230)。DataFrame.to_string()で、拡張配列のfloatフォーマッタが無視されるバグがありました (GH 39336)。内部JSONモジュールの初期化に起因するメモリリークが修正されました (GH 49222)。
json_normalize()で、sep引数と一致する列名の先頭文字が誤って削除される問題が修正されました (GH 49861)。read_csv()で、NAを含む場合に拡張配列dtypeで不必要にオーバーフローするバグがありました (GH 32134)。DataFrame.to_dict()で、NAがNoneに変換されないバグがありました (GH 50795)。DataFrame.to_json()で、文字列のエンコードに失敗した際にセグメンテーション違反が発生するバグがありました (GH 50307)。DataFrame.to_html()で、DataFrameが非スカラーデータを含む場合にna_repが設定されていても機能しないバグがありました (GH 47103)。read_xml()で、iterparseが使用された場合にファイルライクオブジェクトが失敗するバグがありました (GH 50641)。read_csv()で、engine="pyarrow"の場合にencodingパラメータが正しく処理されないバグがありました (GH 51302)。read_xml()で、iterparseが使用された場合に繰り返し要素が無視されるバグがありました (GH 51183)。ExcelWriterで、インスタンス化中に例外が発生した場合にファイルハンドルが開かれたままになるバグがありました (GH 51443)。DataFrame.to_parquet()で、engine="pyarrow"の場合に、非文字列のインデックスまたは列がValueErrorを発生させるバグがありました (GH 52036)。
期間#
Period.strftime()およびPeriodIndex.strftime()で、ロケール固有のディレクティブが渡された場合にUnicodeDecodeErrorが発生するバグがありました (GH 46319)。PeriodオブジェクトをDateOffsetオブジェクトの配列に追加する際に、誤ってTypeErrorが発生するバグがありました (GH 50162)。Periodで、ナノ秒よりも細かい解像度の文字列を渡した場合に、余分な精度を削除する代わりにKeyErrorが発生するバグがありました (GH 50417)。「2017-01-23/2017-01-29」のような週期間を表す文字列が、週頻度ではなく分頻度として誤って解析されるバグがありました (GH 50803)。
DataFrameGroupBy.sum(),DataFrameGroupByGroupBy.cumsum(),DataFrameGroupByGroupBy.prod(),DataFrameGroupByGroupBy.cumprod()で、PeriodDtypeを使用した場合にTypeErrorが発生しないバグがありました (GH 51040)。Periodで空の文字列を解析する際に、NaTを返す代わりに誤ってValueErrorが発生するバグがありました (GH 51349)。
プロット#
DataFrame.plot.hist()で、dataのNaN値に対応するweightsの要素が削除されないバグがありました (GH 48884)。ax.set_xlimが時折UserWarningを発生させ、set_xlimが解析引数を受け入れないためユーザーが対処できない問題がありました。コンバータは代わりにTimestamp()を使用するようになりました (GH 49148)。
Groupby/resample/rolling#
ExponentialMovingWindowで、onlineがサポートされていない操作に対してNotImplementedErrorを発生させないバグがありました (GH 48834)。DataFrameGroupBy.sample()で、オブジェクトが空の場合にValueErrorが発生するバグがありました (GH 48459)。Series.groupby()で、インデックスのエントリがインデックス名と等しい場合にValueErrorが発生するバグがありました (GH 48567)。DataFrameGroupBy.resample()で、空のDataFrameを渡した場合に一貫性のない結果が生成されるバグがありました (GH 47705)。DataFrameGroupByおよびSeriesGroupByで、カテゴリカルインデックスでグループ化する際に、結果に未観測のカテゴリが含まれないバグがありました (GH 49354)。DataFrameGroupByおよびSeriesGroupByで、カテゴリでグループ化する際に、入力インデックスに応じて結果の順序が変更されるバグがありました (GH 49223)。DataFrameGroupByおよびSeriesGroupByで、カテゴリデータでグループ化する際に、sort=Falseと一緒に使用した場合でも結果値がソートされるバグがありました (GH 42482)。DataFrameGroupBy.apply()およびSeriesGroupBy.applyで、as_index=Falseを使用した場合に、グループ化キーを使用するとTypeErrorが発生する際に、グループ化キーを使用せずに計算を試みないバグがありました (GH 49256)。DataFrameGroupBy.describe()で、グループキーが記述されるバグがありました (GH 49256)。SeriesGroupBy.describe()で、as_index=Falseを使用した場合に誤った形状を持つバグがありました (GH 49256)。DataFrameGroupByおよびSeriesGroupByで、dropna=Falseを使用した場合に、グルーパがカテゴリカルである場合にNA値が削除されるバグがありました (GH 36327)。SeriesGroupBy.nunique()で、グルーパが空のカテゴリカルでobserved=Trueの場合に誤って例外が発生するバグがありました (GH 21334)。SeriesGroupBy.nth()で、DataFrameGroupByからサブセット化した後にグルーパにNA値が含まれる場合に例外が発生するバグがありました (GH 26454)。DataFrame.groupby()で、as_index=Falseの場合にkeyで指定されたGrouperが結果に含まれないバグがありました (GH 50413)。DataFrameGroupBy.value_counts()で、TimeGrouperと一緒に使用した場合に例外が発生するバグがありました (GH 50486)。Resampler.size()で、MultiIndexを持つSeriesではなく、ワイドなDataFrameが返されるバグがありました (GH 46826)。DataFrameGroupBy.transform()およびSeriesGroupBy.transform()で、グルーパが"idxmin"および"idxmax"引数に対してaxis=1を持つ場合に誤って例外が発生するバグがありました (GH 45986)。DataFrameGroupByで、空のDataFrame、カテゴリカルグルーパ、およびdropna=Falseと一緒に使用した場合に例外が発生するバグがありました (GH 50634)。SeriesGroupBy.value_counts()で、sort=Falseが尊重されないバグがありました (GH 50482)。DataFrameGroupBy.resample()で、時間インデックスでリサンプリングする際に、キーリストから結果を取得する際にKeyErrorが発生するバグがありました (GH 50840)。DataFrameGroupBy.transform()およびSeriesGroupBy.transform()で、グルーパが"ngroup"引数に対してaxis=1を持つ場合に誤って例外が発生するバグがありました (GH 45986)。DataFrameGroupBy.describe()で、データに重複する列がある場合に誤った結果が生成されるバグがありました (GH 50806)。DataFrameGroupBy.agg()で、engine="numba"がas_index=Falseを尊重しないバグがありました (GH 51228)。DataFrameGroupBy.agg(),SeriesGroupBy.agg(), およびResampler.agg()で、関数のリストが渡された場合に引数が無視されるバグがありました (GH 50863)。DataFrameGroupBy.ohlc()で、as_index=Falseが無視されるバグがありました (GH 51413)。DataFrameGroupBy.agg()で、列をサブセット化 (.groupby(...)[["a", "b"]]など) した後に、結果にグループ化が含まれないバグがありました (GH 51186)。
再整形#
DataFrame.pivot_table()で、null許容dtypeとmargins=Trueの場合にTypeErrorが発生するバグがありました (GH 48681)。DataFrame.unstack()およびSeries.unstack()で、MultiIndexが混合された名前を持つ場合に、誤ったレベルのMultiIndexをアンスタックするバグがありました (GH 48763)。DataFrame.melt()で、拡張配列dtypeが失われるバグがありました (GH 41570)。DataFrame.pivot()で、Noneを列名として尊重しないバグがありました (GH 48293)。DataFrame.join()で、left_onまたはright_onがCategoricalIndexであるかそれを含む場合に、誤ってAttributeErrorが発生するバグがありました (GH 48464)。DataFrame.pivot_table()で、パラメータmargins=Trueを使用した場合に、結果が空のDataFrameである場合にValueErrorが発生するバグがありました (GH 49240)。merge()で、無効なvalidateオプションが渡された場合のエラーメッセージが明確化されました (GH 49417)。DataFrame.explode()で、NaN値または空のリストを持つ複数の列でValueErrorが発生するバグがありました (GH 46084)。DataFrame.transpose()で、timedelta64[ns]エンドポイントを持つIntervalDtype列のバグがありました (GH 44917)。DataFrame.agg()およびSeries.agg()で、関数のリストが渡された場合に引数が無視されるバグがありました (GH 50863)。
スパース#
Series.astype()で、datetime64[ns]サブタイプを持つSparseDtypeをint64dtypeに変換する際に、非スパースな動作と一貫性なく例外が発生するバグがありました (GH 49631,:issue:50087)。Series.astype()で、datetime64[ns]からSparse[datetime64[ns]]に変換する際に誤って例外が発生するバグがありました (GH 50082)。Series.sparse.to_coo()で、MultiIndexにExtensionArrayが含まれている場合にSystemErrorが発生するバグがありました (GH 50996)。
ExtensionArray#
Series.mean()で、null許容整数で不必要にオーバーフローするバグがありました (GH 48378)。Series.tolist()で、null許容dtypeがPythonスカラーではなくnumpyスカラーを返すバグがありました (GH 49890)。Series.round()で、pyarrowバックアップdtypeに対してAttributeErrorが発生するバグがありました (GH 50437)。空のDataFrameをExtensionDtypeで別の同じExtensionDtypeを持つDataFrameと結合すると、結果のdtypeがオブジェクトに変わるバグがありました (GH 48510)。
array.PandasArray.to_numpy()で、na_valueが指定された場合にNA値で例外が発生するバグがありました (GH 40638)。api.types.is_numeric_dtype()で、カスタムExtensionDtypeが_is_numericがTrueを返した場合にTrueを返さないバグがありました (GH 50563)。api.types.is_integer_dtype(),api.types.is_unsigned_integer_dtype(),api.types.is_signed_integer_dtype(),api.types.is_float_dtype()で、カスタムExtensionDtypeがkindが対応するNumPy型を返した場合にTrueを返さないバグがありました (GH 50667)。Seriesコンストラクタで、null許容符号なし整数dtypeに対して不必要にオーバーフローするバグがありました (GH 38798, GH 25880)。StringArrayに非文字列値を設定する際に、TypeErrorではなくValueErrorが発生するバグがありました (GH 49632)。DataFrame.reindex()で、ExtensionDtypeを持つ列の場合にデフォルトのcopy=Trueキーワードが尊重されないバグがありました (結果として、getitem ([]) で複数の列を選択した場合も正しくコピーされませんでした) (GH 51197)。ArrowExtensionArrayの論理演算子&および|でKeyErrorが発生するバグがありました (GH 51688)。
Styler#
background_gradient()で、NA値を持つ null許容dtypeのSeriesのバグが修正されました (GH 50712)。
メタデータ#
DataFrame.corr()およびDataFrame.cov()でのメタデータ伝播が修正されました (GH 28283)。
その他#
貢献者#
今回のリリースには合計260名の方々がパッチに貢献しました。名前の横に「+」が付いている方は、今回初めてパッチに貢献しました。
5j9 +
ABCPAN-rank +
Aarni Koskela +
Aashish KC +
Abubeker Mohammed +
Adam Mróz +
Adam Ormondroyd +
Aditya Anulekh +
Ahmed Ibrahim
Akshay Babbar +
Aleksa Radojicic +
Alex +
Alex Buzenet +
Alex Kirko
Allison Kwan +
Amay Patel +
Ambuj Pawar +
Amotz +
Andreas Schwab +
Andrew Chen +
Anton Shevtsov
Antonio Ossa Guerra +
Antonio Ossa-Guerra +
Anushka Bishnoi +
Arda Kosar
Armin Berres
Asadullah Naeem +
Asish Mahapatra
Bailey Lissington +
BarkotBeyene
Ben Beasley
Bhavesh Rajendra Patil +
Bibek Jha +
Bill +
Bishwas +
CarlosGDCJ +
カルロッタ・ファビアン +
クリス・ロス +
チャック・カドマン +
コラリエン +
DG +
ダン・ヘンドリー +
ダニエル・アイザック
デビッド・クラインディーンスト +
デビッド・ポズニック +
デビッド・ルーデル +
デビッド・クラインディーンスト +
デア・マリア・レオン +
ディーパック・シロヒワル +
デニス・チュクウンタ
ダグラス・ローマン +
ドリース・シャウモント
ダスティン K +
エドアルド・アバティ +
エドゥアルド・チャベス +
エゲ・オズグログル +
エカテリーナ・ボロビコワ +
イーライ・シュワルツ +
エルビス・リム +
エミリー・テイラー +
エマ・カルバラル・ヘア +
エリック・ウェルチ +
ファンチェン・リー
フローリアン・ホフシュテッター +
フリン・オーウェン +
フレドリック・アーランドソン +
ガウラフ・シェニ
ジオレス・チョウ +
ジョージ・ムニョロ +
ギルヘルム・ベルトラミーニ
グルヌール・バイムカンベトワ +
H L +
ハンス
ハティム・ザヒド +
ハイヨーダ +
ヒキ +
ヒマンシュ・ワーグ +
フーゴ・ファン・ケメナーデ +
イディル・イスミグゼル +
アーブ・ラスティッグ
アイザック・チュン
アイザック・ヴィルシュプ
JHM ダービーシャー
JHM ダービーシャー (iMac)
JMBurley
ハイメ・ディ・クリスティーナ
ヤン・コッホ
ヤンVHII +
ヤノシュ・リーベセル
ジャスマンディープカウル +
ジェレミー・チュループ
ジェシカ M +
ヨナス・ハーグ
Joris Van den Bossche
ジョアン・メイレーレス +
ジュリア・アウン +
ジュスタス・マギン +
カン・スミン +
ケビン・シェパード
コー・チェン・ウェイ
キアン・エリアシ
コスティア・ファーバー +
コトリンアイランド +
ラクマル・ピンナドゥワゲ +
ラクシャ A アグラワル +
ローレンス・ミッチェル +
レヴィ・オビ +
ロイック・ディリドゥール
ロレンツォ・ヴァイニグリ +
ルカ・ピッツィーニ +
ルーカス・ダモ +
Luke Manley
マドゥリ・パティル +
Marc Garcia
Marco Edward Gorelli
マルコ・ゴレリ
MarcoGorelli
マレン・ウェスターマン +
マリア・スタジェロワ +
マリー K +
マリエル +
マーク・ハルフーシュ +
マルコ・パチャク +
マーティン +
マテウス・セルケイラ +
マテウス・ペドロニ +
マッテオ・ラソ +
Matthew Roeschke
ミーシークスマシン +
メフディ・モハマディ +
マイケル・ハリス +
マイケル・ミオール +
ナタリア・モケーバ +
ニール・ムッピディ +
ニック・クルーズ
ニシュ・チョードリー +
ノア・タミール
小林則忠
オムカル・ヤダブ +
P. タリー +
パブロ +
Pandas Development Team
パーフェイト・ガサナ
Patrick Hoefler
ペドロ・ナハト +
フィリップ +
ピエトロ・バティストン
プージャ・スブラマニアム +
プラナフ・サイブシャン・ラブリ +
プラナフ. P. A +
ラルフ・ゴンマーズ +
ラフスク +
Richard Shadrach
ロブスドゥデ +
ロジャー
ロジャー・トーマス
ロジャートーマス +
SFuller4 +
サラフディン +
サム・ラオ
ショーン・パトリック・マロイ +
セバスチャン・ロール +
シャンタヌ
シャシュワット +
シャシュワット・アグラワル +
シコ・ワムウェア +
ショーハム・デブナス
シュブハンカー・ロハニ +
シッダールタ・ガンディー +
Simon Hawkins
ソウミク・ドゥッタ +
ソウロフ・タルクダー +
ステファニー・モリン
ステファニー・ゼンガー +
ステフフェン・ショーン +
スティーブン・ロトンド
スティン・ヴァン・ホーイ
スダンシュ +
スヴェン
シルヴァン・マリー
シルヴァン・マリー
タベア・コッセン +
テイラー・パッカード
テルジ・ピーターセン
ティエリー・モワザン
トーマス H +
Thomas Li
トルステン・ヴェルトワイン
ツヴィカ S +
ツヴィカ・シャピラ +
ヴァムシ・ヴェルマ +
ヴィニシウス・アキラ +
ウィリアム・アンドレア
ウィリアム・エイド
ウィリアム・ブルム +
ウィルソン・シン +
シャオ・ユアン +
エックスノット +
ヤシン・タタール +
ユアンハオ・ゲン
イヴァン・シーワン +
ザカリー・ムーン +
ゼンボ・ワン +
アボンテ +
アドリアンパシフィコ +
アルム
アモッツォップ +
アンディジェッセン +
アノンマウス1 +
バン128 +
ビシュワス・ジャ +
カルホッケメイヤー +
カーラ-アルベス-24 +
カルロッタ +
カサディピエトラ +
カトマル22 +
cfabian +
コーダムース +
データゼリク
デビッドレオン123 +
デペンダーボット[bot] +
fdrocha +
github-actions[bot]
ヒマンシュ・ワーグ +
イオファル +
ジャキルカム +
jbrockmendel
jnclt +
ジョエルチェン +
ジョエルソノーダ +
ジョシュアベロ2550
ジョイスワムウェア +
キャスリーンハン +
クラスチ +
ルトニアッツィ +
ルーク396 +
ミロス・マルティノフ +
ミナット-ハブ +
mliu08 +
モノサンズ +
ネアルズム
ニキタヴェド +
パラドックス-ラボ +
パルテフ
ライサズ +
ラム・ヴィクラム・シン +
レベッカ-パーマー
サルバサンジェイ +
セルジャクス +
シルビアオボ +
スミージ720 +
ソウミルバルドータ +
ステラリン7 +
ストロベリービーチサンダル +
トモスホウ +
ウッズゼル +
yqyqyq-W +
ユン +
アーダーム・リッパイ
김동현 (Daniel Donghyun Kim) +