1.5.0の新機能 (2022年9月19日)#
これらはpandas 1.5.0での変更点です。他のバージョンのpandasを含む変更点の完全なリストについては、リリースノートをご覧ください。
機能強化#
pandas-stubs#
pandas-stubsライブラリは現在pandas開発チームによってサポートされており、pandas APIの型スタブを提供しています。詳細については、pandas-dev/pandas-stubsをご覧ください。
pandas-stubsへの最初の重要な貢献をしてくださったVirtusLabとMicrosoftに感謝します。
ネイティブなPyArrowバックエンドのExtensionArray#
Pyarrowをインストールすると、ユーザーはpyarrow.ChunkedArrayとpyarrow.DataTypeによってバックアップされたpandasオブジェクトを作成できるようになりました。
dtype引数は、角括弧で囲まれたpyarrowを含むpyarrowデータ型の文字列、例:"int64[pyarrow]"を受け入れることができます。または、パラメーターを取るpyarrowデータ型の場合、pyarrow.DataTypeで初期化されたArrowDtypeを受け入れます。
In [1]: import pyarrow as pa
In [2]: ser_float = pd.Series([1.0, 2.0, None], dtype="float32[pyarrow]")
In [3]: ser_float
Out[3]:
0 1.0
1 2.0
2 <NA>
dtype: float[pyarrow]
In [4]: list_of_int_type = pd.ArrowDtype(pa.list_(pa.int64()))
In [5]: ser_list = pd.Series([[1, 2], [3, None]], dtype=list_of_int_type)
In [6]: ser_list
Out[6]:
0 [1. 2.]
1 [ 3. nan]
dtype: list<item: int64>[pyarrow]
In [7]: ser_list.take([1, 0])
Out[7]:
1 [ 3. nan]
0 [1. 2.]
dtype: list<item: int64>[pyarrow]
In [8]: ser_float * 5
Out[8]:
0 5.0
1 10.0
2 <NA>
dtype: float[pyarrow]
In [9]: ser_float.mean()
Out[9]: 1.5
In [10]: ser_float.dropna()
Out[10]:
0 1.0
1 2.0
dtype: float[pyarrow]
ほとんどの操作はサポートされており、pyarrow compute関数を使用して実装されています。最近実装されたcompute関数にアクセスするには、最新バージョンのPyArrowをインストールすることをお勧めします。
警告
この機能は実験的であり、APIは将来のリリースで予告なく変更される可能性があります。
DataFrame交換プロトコルの実装#
PandasはDataFrame交換API仕様を実装しました。APIの完全な詳細については、https://data-apis.org/dataframe-protocol/latest/index.htmlをご覧ください。
このプロトコルは2つの部分で構成されています
交換オブジェクトを生成する新しいメソッド
DataFrame.__dataframe__()。これは、pandas DataFrameを交換オブジェクトとして効果的に「エクスポート」するため、プロトコルを実装している他のライブラリは、プロデューサーが交換オブジェクトを作成すること以外何も知らずにそのDataFrameを「インポート」できます。任意の適合ライブラリから任意の交換オブジェクトを受け取り、そこからpandas DataFrameを構築できる新しい関数
pandas.api.interchange.from_dataframe()。
Styler#
最も注目すべき開発は、データに関する追加の計算(合計やカウントなど)を視覚化するために、カスタマイズされたフッター行を追加できる新しいメソッドStyler.concat()です。(GH 43875、GH 46186)
さらに、Stylerのフォーマットメソッドを使用して、例えばCSVを作成できる代替出力メソッドStyler.to_string()もあります。(GH 44502)
インデックスまたは列ヘッダーの表示を完全にカスタマイズできる新機能Styler.relabel_index()も利用可能になりました。(GH 47864)
マイナーな機能改善点は以下の通りです。
Excelで
borderおよびborder-{side}CSSプロパティをレンダリングする機能を追加しました。(GH 42276)キーワード引数を整合させました:
Styler.highlight_null()はcolorを受け入れるようになり、null_colorは非推奨になりましたが、これは下位互換性を維持しています。(GH 45907)
DataFrame.resample()でgroup_keysによるインデックスの制御#
group_keys引数がDataFrame.resample()メソッドに追加されました。DataFrame.groupby()と同様に、この引数はResampler.apply()を使用するときに、各グループがリサンプルのインデックスに追加されるかどうかを制御します。
警告
group_keys引数を指定しない場合、以前の動作が維持され、group_keys=Falseを指定すると結果が変わる場合には警告が発せられます。将来のバージョンのpandasでは、group_keysを指定しない場合のデフォルトの動作はgroup_keys=Falseと同じになります。
In [11]: df = pd.DataFrame(
....: {'a': range(6)},
....: index=pd.date_range("2021-01-01", periods=6, freq="8H")
....: )
....:
In [12]: df.resample("D", group_keys=True).apply(lambda x: x)
Out[12]:
a
2021-01-01 2021-01-01 00:00:00 0
2021-01-01 08:00:00 1
2021-01-01 16:00:00 2
2021-01-02 2021-01-02 00:00:00 3
2021-01-02 08:00:00 4
2021-01-02 16:00:00 5
In [13]: df.resample("D", group_keys=False).apply(lambda x: x)
Out[13]:
a
2021-01-01 00:00:00 0
2021-01-01 08:00:00 1
2021-01-01 16:00:00 2
2021-01-02 00:00:00 3
2021-01-02 08:00:00 4
2021-01-02 16:00:00 5
以前は、次の例に見られるように、結果のインデックスはapplyによって返される値に依存していました。
In [1]: # pandas 1.3
In [2]: df.resample("D").apply(lambda x: x)
Out[2]:
a
2021-01-01 00:00:00 0
2021-01-01 08:00:00 1
2021-01-01 16:00:00 2
2021-01-02 00:00:00 3
2021-01-02 08:00:00 4
2021-01-02 16:00:00 5
In [3]: df.resample("D").apply(lambda x: x.reset_index())
Out[3]:
index a
2021-01-01 0 2021-01-01 00:00:00 0
1 2021-01-01 08:00:00 1
2 2021-01-01 16:00:00 2
2021-01-02 0 2021-01-02 00:00:00 3
1 2021-01-02 08:00:00 4
2 2021-01-02 16:00:00 5
from_dummies#
ダミーコード化されたDataFrameをカテゴリカルなDataFrameに変換する新しい関数from_dummies()が追加されました。
In [11]: import pandas as pd
In [12]: df = pd.DataFrame({"col1_a": [1, 0, 1], "col1_b": [0, 1, 0],
....: "col2_a": [0, 1, 0], "col2_b": [1, 0, 0],
....: "col2_c": [0, 0, 1]})
....:
In [13]: pd.from_dummies(df, sep="_")
Out[13]:
col1 col2
0 a b
1 b a
2 a c
ORCファイルへの書き込み#
新しいメソッドDataFrame.to_orc()を使用すると、ORCファイルへの書き込みが可能になります(GH 43864)。
この機能はpyarrowライブラリに依存します。詳細については、ORCに関するIOドキュメントを参照してください。
警告
pyarrowで発生するいくつかの問題のため、condaを使用してpyarrowをインストールすることを強くお勧めします。
to_orc()にはpyarrow>=7.0.0が必要です。to_orc()はWindowsではまだサポートされていません。有効な環境についてはオプションの依存関係のインストールで確認できます。サポートされているdtypeについては、ArrowでサポートされているORC機能を参照してください。
現在、データフレームがORCファイルに変換される際、datetime列のタイムゾーンは保持されません。
df = pd.DataFrame(data={"col1": [1, 2], "col2": [3, 4]})
df.to_orc("./out.orc")
TARアーカイブからの直接読み込み#
read_csv()やDataFrame.to_json()などのI/Oメソッドは、TARアーカイブからの直接読み書きを可能にするようになりました。(GH 44787)
df = pd.read_csv("./movement.tar.gz")
# ...
df.to_csv("./out.tar.gz")
これは.tar、.tar.gz、.tar.bz、.tar.xz2アーカイブをサポートします。使用される圧縮方法はファイル名から推測されます。圧縮方法を推測できない場合は、compression引数を使用してください。
df = pd.read_csv(some_file_obj, compression={"method": "tar", "mode": "r:gz"}) # noqa F821
(modeはtarfile.openのモードのいずれかです:https://docs.python.org/3/library/tarfile.html#tarfile.open)
read_xmlがdtype、converters、parse_datesをサポートするようになりました#
他のIOメソッドと同様に、pandas.read_xml()は、列に特定のdtypeを割り当てたり、コンバータメソッドを適用したり、日付を解析したりする機能をサポートするようになりました(GH 43567)。
In [14]: from io import StringIO
In [15]: xml_dates = """<?xml version='1.0' encoding='utf-8'?>
....: <data>
....: <row>
....: <shape>square</shape>
....: <degrees>00360</degrees>
....: <sides>4.0</sides>
....: <date>2020-01-01</date>
....: </row>
....: <row>
....: <shape>circle</shape>
....: <degrees>00360</degrees>
....: <sides/>
....: <date>2021-01-01</date>
....: </row>
....: <row>
....: <shape>triangle</shape>
....: <degrees>00180</degrees>
....: <sides>3.0</sides>
....: <date>2022-01-01</date>
....: </row>
....: </data>"""
....:
In [16]: df = pd.read_xml(
....: StringIO(xml_dates),
....: dtype={'sides': 'Int64'},
....: converters={'degrees': str},
....: parse_dates=['date']
....: )
....:
In [17]: df
Out[17]:
shape degrees sides date
0 square 00360 4 2020-01-01
1 circle 00360 <NA> 2021-01-01
2 triangle 00180 3 2022-01-01
In [18]: df.dtypes
Out[18]:
shape object
degrees object
sides Int64
date datetime64[ns]
dtype: object
read_xmlはiterparseを使用して大規模なXMLをサポートするようになりました#
数百メガバイトからギガバイトに及ぶ非常に大きなXMLファイルの場合、pandas.read_xml()は、lxmlのiterparseおよびetreeのiterparseを使用してこのような大規模なファイルを解析する機能をサポートするようになりました。これらは、XMLツリー全体をメモリに保持することなく、XMLツリーを反復処理して特定の要素や属性を抽出するためのメモリ効率の良いメソッドです。(GH 45442)
In [1]: df = pd.read_xml(
... "/path/to/downloaded/enwikisource-latest-pages-articles.xml",
... iterparse = {"page": ["title", "ns", "id"]})
... )
df
Out[2]:
title ns id
0 Gettysburg Address 0 21450
1 Main Page 0 42950
2 Declaration by United Nations 0 8435
3 Constitution of the United States of America 0 8435
4 Declaration of Independence (Israel) 0 17858
... ... ... ...
3578760 Page:Black cat 1897 07 v2 n10.pdf/17 104 219649
3578761 Page:Black cat 1897 07 v2 n10.pdf/43 104 219649
3578762 Page:Black cat 1897 07 v2 n10.pdf/44 104 219649
3578763 The History of Tom Jones, a Foundling/Book IX 0 12084291
3578764 Page:Shakespeare of Stratford (1926) Yale.djvu/91 104 21450
[3578765 rows x 3 columns]
コピーオンライト#
新機能copy_on_writeが追加されました(GH 46958)。コピーオンライトは、何らかの方法で別のDataFrameまたはSeriesから派生したDataFrameまたはSeriesが常にコピーとして動作することを保証します。コピーオンライトは、メソッドが適用されたオブジェクト以外のオブジェクトの更新を許可しません。
コピーオンライトは以下で有効にできます。
pd.set_option("mode.copy_on_write", True)
pd.options.mode.copy_on_write = True
あるいは、コピーオンライトはローカルで以下のように有効にできます。
with pd.option_context("mode.copy_on_write", True):
...
コピーオンライトがない場合、子DataFrameがこのDataFrameから派生したものである場合、子DataFrameを更新すると、親DataFrameも更新されます。
In [19]: df = pd.DataFrame({"foo": [1, 2, 3], "bar": 1})
In [20]: view = df["foo"]
In [21]: view.iloc[0]
Out[21]: 1
In [22]: df
Out[22]:
foo bar
0 1 1
1 2 1
2 3 1
コピーオンライトを有効にすると、dfは更新されなくなります。
In [23]: with pd.option_context("mode.copy_on_write", True):
....: df = pd.DataFrame({"foo": [1, 2, 3], "bar": 1})
....: view = df["foo"]
....: view.iloc[0]
....: df
....:
より詳細な説明はこちらで確認できます。
その他の機能強化#
Series.map()は、argがdictであるがna_actionがNoneまたは'ignore'のいずれでもない場合に例外を発生させるようになりました。(GH 46588)MultiIndex.to_frame()は、allow_duplicates引数をサポートするようになり、引数が欠落しているかFalseの場合は重複するラベルで例外を発生させます(GH 45245)。StringArrayは、コンストラクタのvaluesパラメータに対して、文字列とpandas.NAに加えて、nanに似た値(None、np.nan)を含む配列のような値を受け入れるようになりました。(GH 40839)CategoricalIndexにおけるcategoriesのレンダリングが改善されました(GH 45218)。DataFrame.plot()は、subplotsパラメータに列グループを指定するイテラブルのリストを許可するようになり、列を同じサブプロットにまとめることができるようになりました(GH 29688)。to_numeric()は、ダウンキャストによってfloat32で表現できない値が生成される場合に、float64配列を保持するようになりました(GH 43693)。Series.reset_index()とDataFrame.reset_index()がallow_duplicates引数をサポートするようになりました(GH 44410)。DataFrameGroupBy.min()、SeriesGroupBy.min()、DataFrameGroupBy.max()、およびSeriesGroupBy.max()は、engineキーワードでNumba実行をサポートするようになりました(GH 45428)。read_csv()はdefaultdictをdtypeパラメータとしてサポートするようになりました(GH 41574)。DataFrame.rolling()とSeries.rolling()は、固定長ウィンドウでstepパラメータをサポートするようになりました(GH 15354)。bool-dtypeのIndexが実装され、pd.Indexにbool-dtypeの配列のような値を渡すと、objectにキャストされる代わりにbooldtypeが保持されるようになりました(GH 45061)。complex-dtypeの
Indexが実装され、pd.Indexにcomplex-dtypeの配列のような値を渡すと、objectにキャストされる代わりにcomplex dtypeが保持されるようになりました(GH 45845)。SeriesおよびDataFrameでIntegerDtypeを持つものがビット演算をサポートするようになりました(GH 34463)。DateOffsetのmillisecondsフィールドサポートを追加しました(GH 43371)。DataFrame.where()は、埋め込み値が精度損失なしでキャストできる場合、DataFrameのdtypeを維持しようとします(GH 45582)。DataFrame.reset_index()は、インデックス名を変更するnames引数を受け入れるようになりました(GH 6878)。concat()は、levelsが指定されているがkeysがNoneの場合に例外を発生させるようになりました(GH 46653)。numeric_only引数をDataFrame.corr()、DataFrame.corrwith()、DataFrame.cov()、DataFrame.idxmin()、DataFrame.idxmax()、DataFrameGroupBy.idxmin()、DataFrameGroupBy.idxmax()、DataFrameGroupBy.var()、SeriesGroupBy.var()、DataFrameGroupBy.std()、SeriesGroupBy.std()、DataFrameGroupBy.sem()、SeriesGroupBy.sem()、およびDataFrameGroupBy.quantile()に追加しました(GH 46560)。string[pyarrow]dtypeをpyarrow.computeメソッドにディスパッチしないメソッドで使用した場合に、errors.PerformanceWarningがスローされるようになりました(GH 42613、GH 46725)。DataFrame.join()にvalidate引数を追加しました(GH 46622)。numeric_only引数をResampler.sum()、Resampler.prod()、Resampler.min()、Resampler.max()、Resampler.first()、およびResampler.last()に追加しました(GH 46442)。ExponentialMovingWindowのtimes引数は、np.timedelta64を受け入れるようになりました(GH 47003)。DataError、SpecificationError、SettingWithCopyError、SettingWithCopyWarning、NumExprClobberingError、UndefinedVariableError、IndexingError、PyperclipException、PyperclipWindowsException、CSSWarning、PossibleDataLossError、ClosedFileError、IncompatibilityWarning、AttributeConflictWarning、DatabaseError、PossiblePrecisionLoss、ValueLabelTypeMismatch、InvalidColumnName、およびCategoricalConversionWarningがpandas.errorsで公開されるようになりました(GH 27656)。testing.assert_series_equal()にcheck_like引数を追加しました(GH 47247)。拡張配列dtypeに対して
DataFrameGroupBy.ohlc()およびSeriesGroupBy.ohlc()のサポートを追加しました(GH 37493)。read_sas()で圧縮されたSASファイル(例:.sas7bdat.gzファイル)の読み取りを許可します。pandas.read_html()がテーブルセルからリンクを抽出するようになりました(GH 13141)。DatetimeIndex.astype()は、タイムゾーンに依存しないインデックスをdatetime64[s]、datetime64[ms]、およびdatetime64[us]に、タイムゾーンに依存するインデックスを対応するdatetime64[unit, tzname]dtypeにキャストできるようになりました(GH 47579)。Seriesのレデューサ(例:min、max、sum、mean)は、dtypeが数値型であり、numeric_only=Trueが提供された場合に正常に動作するようになりました。以前はNotImplementedErrorが発生していました(GH 47500)。RangeIndex.union()は、結果の値が等間隔である場合、Int64Indexの代わりにRangeIndexを返すことができるようになりました(GH 47557、GH 43885)。DataFrame.compare()は、比較対象の左右のDataFrameの結果名をユーザーが指定できるように、result_names引数を受け入れるようになりました。これはデフォルトで'self'と'other'です(GH 44354)。DataFrame.quantile()は、複数列の分位数を評価するためにtableを受け入れられるmethod引数を獲得しました(GH 43881)。Intervalは、ある区間が別の区間に含まれているかどうかをチェックする機能をサポートするようになりました(GH 46613)。Series.set_axis()とDataFrame.set_axis()にcopyキーワードを追加し、ユーザーが基となるデータを必ずしもコピーせずに新しいオブジェクトに軸を設定できるようにしました(GH 47932)。ExtensionArray.factorize()メソッドは、null値の扱いを決定するためにuse_na_sentinel=Falseを受け入れます(GH 46601)。Dockerfileは、base環境を使用する代わりに、pandas開発用に専用のpandas-dev仮想環境をインストールするようになりました(GH 48427)。
注目すべきバグ修正#
これらは、注目すべき動作変更をもたらす可能性のあるバグ修正です。
dropna=Trueをgroupby変換で使用する#
変換とは、結果が入力と同じサイズを持つ操作です。結果がDataFrameまたはSeriesである場合、結果のインデックスが入力のインデックスと一致することも必要です。pandas 1.4では、グループ内のnull値とdropna=Trueを伴うDataFrameGroupBy.transform()またはSeriesGroupBy.transform()の使用は正しくない結果をもたらしました。以下の例で示すように、正しくない結果には誤った値が含まれていたり、結果のインデックスが入力のインデックスと一致していなかったりしました。
In [24]: df = pd.DataFrame({'a': [1, 1, np.nan], 'b': [2, 3, 4]})
以前の動作:
In [3]: # Value in the last row should be np.nan
df.groupby('a', dropna=True).transform('sum')
Out[3]:
b
0 5
1 5
2 5
In [3]: # Should have one additional row with the value np.nan
df.groupby('a', dropna=True).transform(lambda x: x.sum())
Out[3]:
b
0 5
1 5
In [3]: # The value in the last row is np.nan interpreted as an integer
df.groupby('a', dropna=True).transform('ffill')
Out[3]:
b
0 2
1 3
2 -9223372036854775808
In [3]: # Should have one additional row with the value np.nan
df.groupby('a', dropna=True).transform(lambda x: x)
Out[3]:
b
0 2
1 3
新しい動作:
In [25]: df.groupby('a', dropna=True).transform('sum')
Out[25]:
b
0 5.0
1 5.0
2 NaN
In [26]: df.groupby('a', dropna=True).transform(lambda x: x.sum())
Out[26]:
b
0 5.0
1 5.0
2 NaN
In [27]: df.groupby('a', dropna=True).transform('ffill')
Out[27]:
b
0 2.0
1 3.0
2 NaN
In [28]: df.groupby('a', dropna=True).transform(lambda x: x)
Out[28]:
b
0 2.0
1 3.0
2 NaN
iso_dates=Trueを使用してtz-naiveなTimestampsをto_json()でシリアル化する#
DataFrame.to_json()、Series.to_json()、およびIndex.to_json()は、tz-naiveなタイムスタンプを持つDatetimeArrays/DatetimeIndexesをUTCに誤ってローカライズしていました。(GH 38760)
このパッチは、tz-awareなタイムスタンプのシリアル化時にUTCへのローカライズを修正するものではないことに注意してください。(関連する問題GH 12997)
以前の動作
In [32]: index = pd.date_range(
....: start='2020-12-28 00:00:00',
....: end='2020-12-28 02:00:00',
....: freq='1H',
....: )
....:
In [33]: a = pd.Series(
....: data=range(3),
....: index=index,
....: )
....:
In [4]: from io import StringIO
In [5]: a.to_json(date_format='iso')
Out[5]: '{"2020-12-28T00:00:00.000Z":0,"2020-12-28T01:00:00.000Z":1,"2020-12-28T02:00:00.000Z":2}'
In [6]: pd.read_json(StringIO(a.to_json(date_format='iso')), typ="series").index == a.index
Out[6]: array([False, False, False])
新しい動作
In [34]: from io import StringIO
In [35]: a.to_json(date_format='iso')
Out[35]: '{"2020-12-28T00:00:00.000Z":0,"2020-12-28T01:00:00.000Z":1,"2020-12-28T02:00:00.000Z":2}'
# Roundtripping now works
In [36]: pd.read_json(StringIO(a.to_json(date_format='iso')), typ="series").index == a.index
Out[36]: array([ True, True, True])
非グループ化カテゴリカル列とobserved=Trueを持つDataFrameGroupBy.value_counts#
DataFrameGroupBy.value_counts()をobserved=Trueで呼び出すと、非グループ化列の観測されないカテゴリを誤って削除していました(GH 46357)。
In [6]: df = pd.DataFrame(["a", "b", "c"], dtype="category").iloc[0:2]
In [7]: df
Out[7]:
0
0 a
1 b
以前の動作
In [8]: df.groupby(level=0, observed=True).value_counts()
Out[8]:
0 a 1
1 b 1
dtype: int64
新しい動作
In [9]: df.groupby(level=0, observed=True).value_counts()
Out[9]:
0 a 1
1 a 0
b 1
0 b 0
c 0
1 c 0
dtype: int64
下位互換性のない API の変更#
依存関係の最小バージョン引き上げ#
一部の依存関係の最小サポートバージョンが更新されました。インストールされている場合、以下のバージョンが必要になります。
パッケージ |
最小バージョン |
必須 |
変更済み |
|---|---|---|---|
numpy |
1.20.3 |
X |
X |
mypy (開発) |
0.971 |
X |
|
beautifulsoup4 |
4.9.3 |
X |
|
blosc |
1.21.0 |
X |
|
bottleneck |
1.3.2 |
X |
|
fsspec |
2021.07.0 |
X |
|
仮説 |
6.13.0 |
X |
|
gcsfs |
2021.07.0 |
X |
|
ジンジャーツー |
3.0.0 |
X |
|
lxml |
4.6.3 |
X |
|
numba |
0.53.1 |
X |
|
numexpr |
2.7.3 |
X |
|
openpyxl |
3.0.7 |
X |
|
pandas-gbq |
0.15.0 |
X |
|
psycopg2 |
2.8.6 |
X |
|
pymysql |
1.0.2 |
X |
|
pyreadstat |
1.1.2 |
X |
|
pyxlsb |
1.0.8 |
X |
|
s3fs |
2021.08.0 |
X |
|
scipy |
1.7.1 |
X |
|
sqlalchemy |
1.4.16 |
X |
|
表計算 |
0.8.9 |
X |
|
xarray |
0.19.0 |
X |
|
xlsxwriter |
1.4.3 |
X |
オプションのライブラリについては、一般的に最新バージョンを使用することが推奨されます。以下の表は、pandas の開発全体で現在テストされているライブラリごとの最低バージョンを示しています。最低テストバージョンより古いオプションのライブラリは動作する可能性がありますが、サポートされているとはみなされません。
パッケージ |
最小バージョン |
変更済み |
|---|---|---|
beautifulsoup4 |
4.9.3 |
X |
blosc |
1.21.0 |
X |
bottleneck |
1.3.2 |
X |
ブロトリピー |
0.7.0 |
|
fastparquet |
0.4.0 |
|
fsspec |
2021.08.0 |
X |
html5lib |
1.1 |
|
仮説 |
6.13.0 |
X |
gcsfs |
2021.08.0 |
X |
ジンジャーツー |
3.0.0 |
X |
lxml |
4.6.3 |
X |
matplotlib |
3.3.2 |
|
numba |
0.53.1 |
X |
numexpr |
2.7.3 |
X |
odfpy |
1.4.1 |
|
openpyxl |
3.0.7 |
X |
pandas-gbq |
0.15.0 |
X |
psycopg2 |
2.8.6 |
X |
pyarrow |
1.0.1 |
|
pymysql |
1.0.2 |
X |
pyreadstat |
1.1.2 |
X |
pytables |
3.6.1 |
|
python-snappy |
0.6.0 |
|
pyxlsb |
1.0.8 |
X |
s3fs |
2021.08.0 |
X |
scipy |
1.7.1 |
X |
sqlalchemy |
1.4.16 |
X |
表計算 |
0.8.9 |
X |
tzdata |
2022a |
|
xarray |
0.19.0 |
X |
xlrd |
2.0.1 |
|
xlsxwriter |
1.4.3 |
X |
xlwt |
1.3.0 |
|
zstandard |
0.15.2 |
詳細については、依存関係 および オプションの依存関係 を参照してください。
その他の API の変更#
BigQuery I/O メソッド
read_gbq()とDataFrame.to_gbq()は、デフォルトでauth_local_webserver = Trueになります。Googleはauth_local_webserver = Falseの「帯域外」(コピー&ペースト)フローを非推奨にしました。auth_local_webserver = Falseオプションは2022年10月に機能しなくなる予定です。(GH 46312)read_json()は、入力が.json、.json.gz、.json.bz2などで終わる文字列であっても、そのようなファイルが存在しない場合にFileNotFoundError(以前はValueError)を発生させるようになりました。(GH 29102)TimestampまたはTimedeltaとの操作で以前にOverflowErrorを発生させていたものが、適切な場合にOutOfBoundsDatetimeまたはOutOfBoundsTimedeltaを発生させるようになりました(GH 47268)。read_sas()が以前Noneを返していた場合、現在は空のDataFrameを返します(GH 47410)。DataFrameコンストラクタは、indexまたはcolumns引数がセットである場合に例外を発生させます(GH 47215)。
非推奨#
警告
次期メジャーバージョンリリース2.0では、標準ライブラリzoneinfoをpytzの代わりにデフォルトのタイムゾーン実装にする、Indexが複数のサブクラス(CategoricalIndex、Int64Indexなど)を持つ代わりにすべてのデータ型をサポートする、といった正式な非推奨化を伴わない大規模なAPI変更が検討されています。検討中の変更はこのGitHubイシューに記録されており、フィードバックや懸念は大歓迎です。
Int64IndexまたはRangeIndexを持つSeriesでのラベルベースの整数スライス#
将来のバージョンでは、Int64IndexまたはRangeIndexを持つSeriesに対する整数スライスは、位置ベースではなくラベルベースとして扱われるようになります。これにより、他のSeries.__getitem__()およびSeries.__setitem__()の動作との一貫性が保たれます(GH 45162)。
例えば
In [29]: ser = pd.Series([1, 2, 3, 4, 5], index=[2, 3, 5, 7, 11])
以前の動作では、ser[2:4]はスライスを位置ベースとして扱っていました。
以前の動作:
In [3]: ser[2:4]
Out[3]:
5 3
7 4
dtype: int64
将来のバージョンでは、これはラベルベースとして扱われます。
将来の動作:
In [4]: ser.loc[2:4]
Out[4]:
2 1
3 2
dtype: int64
以前の動作を維持するには、series.iloc[i:j]を使用します。将来の動作を取得するには、series.loc[i:j]を使用します。
DataFrameに対するスライスは影響を受けません。
ExcelWriter属性#
ExcelWriterのすべての属性は、以前は非公開として文書化されていました。しかし、一部のサードパーティExcelエンジンはExcelWriter.bookまたはExcelWriter.sheetsへのアクセスを文書化しており、ユーザーはこれらや他の属性を利用していました。以前はこれらの属性は安全に使用できませんでした。例えば、ExcelWriter.bookの変更はExcelWriter.sheetsを更新せず、その逆も同様でした。これをサポートするために、pandasは一部の属性を公開し、その実装を改善して、安全に使用できるようになりました。(GH 45572)
以下の属性は現在公開されており、安全にアクセスできるとみなされます。
ブック
チェック拡張子
閉じる
日付フォーマット
日時フォーマット
エンジン
if_sheet_exists
シート
対応する拡張機能
以下の属性は非推奨になりました。これらはアクセス時にFutureWarningを発生させ、将来のバージョンで削除されます。ユーザーはこれらの使用が安全でないと見なされ、予期せぬ結果につながる可能性があることに注意してください。
cur_sheet
ハンドル
パス
保存
書き込みセル
詳細については、ExcelWriterのドキュメントを参照してください。
DataFrameGroupBy.apply()およびSeriesGroupBy.apply()でのトランスフォーマーによるgroup_keysの使用#
以前のバージョンのpandasでは、DataFrameGroupBy.apply()またはSeriesGroupBy.apply()に渡された関数がトランスフォーマー(つまり、結果のインデックスが入力インデックスと同じ)であると推論された場合、DataFrame.groupby()とSeries.groupby()のgroup_keys引数は無視され、グループキーは結果のインデックスには追加されませんでした。将来は、ユーザーがgroup_keys=Trueを指定した場合に、グループキーがインデックスに追加されるようになります。
group_keys=TrueはDataFrame.groupby()およびSeries.groupby()のデフォルト値であるため、トランスフォーマーでgroup_keysを指定しない場合、FutureWarningが発生します。group_keys=Falseを指定することで、この警告を抑制し、以前の動作を維持することができます。
locとilocで値を設定する際のインプレース操作#
ほとんどの場合、DataFrame.iloc()で値を設定すると、インプレースで値を設定しようとし、必要に応じて新しい配列を挿入するにとどまります。このルールに従わないケースもあります。例えば、異なるdtypeを持つ配列から列全体を設定する場合などです。
In [30]: df = pd.DataFrame({'price': [11.1, 12.2]}, index=['book1', 'book2'])
In [31]: original_prices = df['price']
In [32]: new_prices = np.array([98, 99])
以前の動作:
In [3]: df.iloc[:, 0] = new_prices
In [4]: df.iloc[:, 0]
Out[4]:
book1 98
book2 99
Name: price, dtype: int64
In [5]: original_prices
Out[5]:
book1 11.1
book2 12.2
Name: price, float: 64
この動作は非推奨です。将来のバージョンでは、ilocで列全体を設定する際、インプレース操作が試行されます。
将来の動作:
In [3]: df.iloc[:, 0] = new_prices
In [4]: df.iloc[:, 0]
Out[4]:
book1 98.0
book2 99.0
Name: price, dtype: float64
In [5]: original_prices
Out[5]:
book1 98.0
book2 99.0
Name: price, dtype: float64
以前の動作を取得するには、DataFrame.__setitem__()を直接使用します。
In [3]: df[df.columns[0]] = new_prices
In [4]: df.iloc[:, 0]
Out[4]
book1 98
book2 99
Name: price, dtype: int64
In [5]: original_prices
Out[5]:
book1 11.1
book2 12.2
Name: price, dtype: float64
df.columnsが一意でなく、インデックスで単一の列を変更したい場合に以前の動作を得るには、pandas 1.5で追加されたDataFrame.isetitem()を使用できます。
In [3]: df_with_duplicated_cols = pd.concat([df, df], axis='columns')
In [3]: df_with_duplicated_cols.isetitem(0, new_prices)
In [4]: df_with_duplicated_cols.iloc[:, 0]
Out[4]:
book1 98
book2 99
Name: price, dtype: int64
In [5]: original_prices
Out[5]:
book1 11.1
book2 12.2
Name: 0, dtype: float64
numeric_onlyのデフォルト値#
DataFrame、DataFrameGroupBy、およびResamplerの操作(min、sum、idxmaxなど)において、numeric_only引数が存在する場合のデフォルト値が一貫していませんでした。さらに、デフォルト値Noneでの操作は予期せぬ結果につながる可能性があります。(GH 46560)
In [1]: df = pd.DataFrame({"a": [1, 2], "b": ["x", "y"]})
In [2]: # Reading the next line without knowing the contents of df, one would
# expect the result to contain the products for both columns a and b.
df[["a", "b"]].prod()
Out[2]:
a 2
dtype: int64
この動作を回避するため、numeric_only=Noneの指定は非推奨となり、将来のバージョンのpandasで削除されます。将来は、numeric_only引数を持つすべての操作のデフォルトはFalseになります。ユーザーは操作可能な列のみで操作を呼び出すか、Boolean、整数、および浮動小数点列のみで操作するためにnumeric_only=Trueを指定する必要があります。
新しい動作への移行をサポートするために、以下のメソッドにnumeric_only引数が追加されました。
その他の非推奨化#
DataFrame.to_csv()とSeries.to_csv()のキーワードline_terminatorを非推奨とし、代わりにlineterminatorを使用します。これはread_csv()および標準ライブラリの「csv」モジュールとの一貫性のためです(GH 9568)。SparseArray.astype()、Series.astype()、およびDataFrame.astype()が非スパースのdtypeを渡された際のSparseDtypeに関する動作が非推奨になりました。将来のバージョンでは、これはその非スパースdtypeにキャストされ、SparseDtypeでラップされるのではなく、変換がオーバーフローした場合は例外を発生させます(GH 34457)。DatetimeIndex.intersection()およびDatetimeIndex.symmetric_difference()(unionの動作はバージョン1.3.0で既に非推奨)の混合タイムゾーンでの動作が非推奨になりました。将来のバージョンでは、両方ともオブジェクトdtypeの代わりにUTCにキャストされるようになります(GH 39328、GH 45357)。DataFrame.iteritems()、Series.iteritems()、HDFStore.iteritems()は、DataFrame.items()、Series.items()、HDFStore.items()に置き換えられ非推奨となりました(GH 45321)。Series.is_monotonic()およびIndex.is_monotonic()は、Series.is_monotonic_increasing()およびIndex.is_monotonic_increasing()に置き換えられ非推奨となりました(GH 45422、GH 21335)。DatetimeIndex.astype()、TimedeltaIndex.astype()、PeriodIndex.astype()がint64以外の整数dtypeに変換する際の動作が非推奨になりました。将来のバージョンでは、これらは指定されたdtypeに正確に変換され(常にint64ではなく)、変換がオーバーフローした場合は例外を発生させます(GH 45034)。DataFrameとSeriesの
__array_wrap__メソッドは非推奨となり、代わりに標準のnumpy ufuncsを使用するようになりました(GH 45451)。SeriesまたはDatetimeIndexにタイムゾーンとともに渡された浮動小数点型データを壁時計時間として扱う動作が非推奨になりました(GH 45573)。Series.fillna()とDataFrame.fillna()がtimedelta64[ns]dtypeと互換性のない埋め込み値で呼び出された場合の動作が非推奨になりました。将来のバージョンでは、他のdtypeの動作に合わせて、例外を発生させる代わりに共通のdtype(通常はオブジェクト)にキャストされます(GH 45746)。infer_freq()のwarnパラメータが非推奨になりました(GH 45947)。ExtensionArray.argsort()でキーワード以外の引数を許可する動作が非推奨になりました(GH 46134)。DataFrame.any()およびDataFrame.all()でbool_only=Trueを使用する際に、すべてがbool型のobject-dtype列をbool型として扱う動作が非推奨になりました。代わりに明示的にbool型にキャストしてください(GH 46188)。メソッド
DataFrame.quantile()の非推奨の動作で、属性numeric_onlyがデフォルトで False になります。結果に datetime/timedelta 列が含まれるようになります (GH 7308)。Timedelta.freqおよびTimedelta.is_populatedは非推奨となりました (GH 46430)Timedelta.deltaは非推奨となりました (GH 46476)DataFrame.any()およびSeries.any()で引数を位置指定で渡すことは非推奨となりました (GH 44802)DataFrame.pivot()およびpivot()にdata以外の位置指定引数を渡すことは非推奨となりました (GH 30228)メソッド
DataFrame.mad()、Series.mad()および対応する groupby メソッドは非推奨となりました (GH 11787)Index.join()のother以外の位置指定引数は非推奨となりました。代わりにキーワード専用引数を使用してください (GH 46518)StringMethods.rsplit()およびStringMethods.split()のpat以外の位置指定引数は非推奨となりました。代わりにキーワード専用引数を使用してください (GH 47423)タイムゾーン認識 datetime を表す文字列を使用して、タイムゾーン非対応の
DatetimeIndexにインデックスを付けることは非推奨となりました (GH 46903, GH 36148)Timestampコンストラクタで、丸められていない浮動小数点値でunit="M"またはunit="Y"を許可することは非推奨となりました (GH 47267)display.column_spaceグローバル設定オプションは非推奨となりました (GH 7576)factorize()、Index.factorize()、およびExtensionArray.factorize()の引数na_sentinelは非推奨となりました。NaN 値に番兵-1を使用するにはuse_na_sentinel=Trueを、NaN 値をエンコードするためにna_sentinel=Noneの代わりにuse_na_sentinel=Falseを渡してください (GH 46910)UDF が DataFrame を返した場合に結果が整列されない
DataFrameGroupBy.transform()は非推奨となりました (GH 45648)to_datetime()からの警告が、指定されたdayfirst引数に従って区切られた日付を解析できない場合に明確化されました (GH 46210)to_datetime()から、先行ゼロが省略されている日付 (例:31/1/2001) であっても、指定されたdayfirst引数に従って区切られた日付を解析できない場合に警告が発せられるようになりました (GH 47880)非数値 dtype で
numeric_only=Trueが指定された場合にNotImplementedErrorを発生させるSeriesおよびResamplerリデューサー (例:min,max,sum,mean) は非推奨となりました。これらは将来のバージョンでTypeErrorを発生させます (GH 47500)非数値 dtype で
numeric_only=Trueが指定された場合に空の結果を返すSeries.rank()は非推奨となりました。これらは将来のバージョンでTypeErrorを発生させます (GH 47500)Series.mask()、Series.where()、DataFrame.mask()、およびDataFrame.where()の引数errorsは、これらのメソッドに影響を与えなかったため非推奨となりました (GH 47728)Rolling、Expanding、およびExponentialMovingWindow演算の引数*argsおよび**kwargsは非推奨となりました (GH 47836)Categorical.set_ordered()、Categorical.as_ordered()、およびCategorical.as_unordered()のinplaceキーワードは非推奨となりました (GH 37643)cat.categories = ['a', 'b', 'c']でカテゴリカルのカテゴリを設定することは非推奨となりました。代わりにCategorical.rename_categories()を使用してください (GH 37643)Series.to_excel()およびDataFrame.to_excel()の未使用の引数encodingおよびverboseは非推奨となりました (GH 47912)DataFrame.set_axis()およびSeries.set_axis()のinplaceキーワードは非推奨となりました。代わりにobj = obj.set_axis(..., copy=False)を使用してください (GH 48130)長さ 1 のリストでグループ化された
DataFrameGroupByまたはSeriesGroupByを反復処理する際に単一の要素を生成することは非推奨となりました。代わりに長さ 1 のタプルが返されます (GH 42795)公開メソッドとしての
MultiIndex.lesort_depth()の非推奨の警告メッセージが修正されました。以前はMultiIndex.is_lexsorted()を参照していました (GH 38701)DataFrame.plot()およびSeries.plot()のsort_columns引数は非推奨となりました (GH 47563)。DataFrame.to_stata()およびread_stata()の最初の引数以外の位置指定引数は非推奨となりました。代わりにキーワード引数を使用してください (GH 48128)。read_csv()、read_fwf()、read_table()およびread_excel()の引数mangle_dupe_colsは非推奨となりました。この引数は実装されたことがなく、代わりに名前変更パターンを指定できる新しい引数が追加される予定です (GH 47718)Series.astype()でdtype='datetime64'またはdtype=np.datetime64を許可することは非推奨となりました。代わりに "datetime64[ns]" を使用してください (GH 47844)
パフォーマンス改善#
DataFrame.corrwith()で、other がSeriesの場合、列方向 (axis=0) のピアソン相関およびスピアマン相関のパフォーマンスが向上しました (GH 46174)DataFrameGroupBy.transform()およびSeriesGroupBy.transform()で、ユーザー定義の DataFrame -> Series 関数の一部についてパフォーマンスが向上しました (GH 45387)DataFrame.duplicated()で、subset が 1 列のみで構成される場合にパフォーマンスが向上しました (GH 45236)DataFrameGroupBy.diff()およびSeriesGroupBy.diff()のパフォーマンスが向上しました (GH 16706)DataFrameGroupBy.transform()およびSeriesGroupBy.transform()で、ユーザー定義関数に値をブロードキャストする際のパフォーマンスが向上しました (GH 45708)DataFrameGroupBy.transform()およびSeriesGroupBy.transform()で、単一グループのみが存在する場合のユーザー定義関数のパフォーマンスが向上しました (GH 44977)DataFrameGroupBy.apply()およびSeriesGroupBy.apply()で、一意でない未ソートのインデックスでグループ化する際のパフォーマンスが向上しました (GH 46527)DataFrame.loc()およびSeries.loc()で、MultiIndexのタプルベースのインデックス作成のパフォーマンスが向上しました (GH 45681, GH 46040, GH 46330)DataFrameGroupBy.var()およびSeriesGroupBy.var()で、ddofが 1 以外の場合のパフォーマンスが向上しました (GH 48152)DataFrame.to_records()で、インデックスがMultiIndexの場合のパフォーマンスが向上しました (GH 47263)MultiIndex に DatetimeIndex、TimedeltaIndex、または ExtensionDtypes 型のレベルが含まれる場合の
MultiIndex.valuesのパフォーマンスが向上しました (GH 46288)merge()で、left および/または right が空の場合のパフォーマンスが向上しました (GH 45838)DataFrame.join()で、left および/または right が空の場合のパフォーマンスが向上しました (GH 46015)DataFrame.reindex()およびSeries.reindex()で、ターゲットがMultiIndexの場合のパフォーマンスが向上しました (GH 46235)pyarrow でバックアップされた文字列配列に値を設定する際のパフォーマンスが向上しました (GH 46400)
factorize()のパフォーマンスが向上しました (GH 46109)DataFrameおよびSeriesのコンストラクタで、拡張 dtype スカラーのパフォーマンスが向上しました (GH 45854)read_excel()で、nrows引数が指定された場合のパフォーマンスが向上しました (GH 32727)Styler.to_excel()で、繰り返される CSS 形式を適用する際のパフォーマンスが向上しました (GH 47371)MultiIndex.is_monotonic_increasing()のパフォーマンスが向上しました (GH 47458)BusinessHourのstrおよびreprのパフォーマンスが向上しました (GH 44764)デフォルトの strftime 形式
"%Y-%m-%d %H:%M:%S"または"%Y-%m-%d %H:%M:%S.%f"のいずれかが使用される場合の datetime 配列の文字列書式設定のパフォーマンスが向上しました (GH 44764)Series.to_sql()およびDataFrame.to_sql()(SQLiteTable) で、時間配列を処理する際のパフォーマンスが向上しました (GH 44764)read_sas()のパフォーマンスが向上しました (GH 47404)arrays.SparseArrayのargmaxおよびargminのパフォーマンスが向上しました (GH 34197)
バグ修正#
カテゴリカル#
Categorical.view()が整数 dtype を受け入れないバグ (GH 25464)CategoricalIndex.union()で、インデックスのカテゴリが整数 dtype であり、インデックスにNaN値が含まれる場合に、float64にキャストされずに誤ってエラーが発生するバグ (GH 45362)concat()で、カテゴリが順列である 2 つ (またはそれ以上) の順序なしCategoricalIndex変数を連結すると、誤ったインデックス値が生成されるバグ (GH 24845)
日付時刻ライク#
DataFrame.quantile()で、datetime-like dtype と行がない場合に、datetime-like dtype を保持せずに誤ってfloat64dtype を返すバグ (GH 41544)to_datetime()で、np.str_オブジェクトのシーケンスを誤って発生させるバグ (GH 32264)Timestampコンストラクタで、datetime コンポーネントを位置引数として渡し、tzinfoをキーワード引数として渡すと誤ってエラーが発生するバグ (GH 31929)Index.astype()で、オブジェクト dtype からtimedelta64[ns]dtype にキャストする際に、np.datetime64("NaT")値をエラーを発生させずに誤ってnp.timedelta64("NaT")にキャストするバグ (GH 45722)カテゴリカル列を渡した場合の
SeriesGroupBy.value_counts()インデックスのバグ (GH 44324)DatetimeIndex.tz_localize()で UTC にローカライズする際に、基になるデータのコピーを作成できないバグ (GH 46460)ナノ秒解像度のインデックスに対して
DatetimeIndex.resolution()が "nanosecond" の代わりに誤って "day" を返すバグ (GH 46903)Timestampで、整数または浮動小数点値とunit="Y"またはunit="M"を指定した場合にわずかに間違った結果を与えるバグ (GH 47266)DatetimeArrayコンストラクタで、別のDatetimeArrayとfreq=Noneを渡した場合に、与えられた配列から誤って freq を推測するバグ (GH 47296)to_datetime()で、50 行を超える場合にerrors=coerceが指定されていてもOutOfBoundsDatetimeがスローされるバグ (GH 45319)DateOffsetをSeriesに追加すると、nanosecondsフィールドが追加されないバグ (GH 47856)
Timedelta#
astype_nansafe()の astype("timedelta64[ns]") が np.nan が含まれている場合に失敗するバグ (GH 45798)np.timedelta64オブジェクトとunitを使用してTimedeltaを構築する際に、OutOfBoundsTimedeltaを発生させずに、時々サイレントオーバーフローして誤った結果を返すバグ (GH 46827)大きな整数または浮動小数点値と
unit="W"を使用してTimedeltaを構築する際に、OutOfBoundsTimedeltaを発生させずに、サイレントオーバーフローして誤った結果を返すバグ (GH 47268)
タイムゾーン#
数値#
dtype="boolean"およびNAを持つ配列ライクとの演算で、配列が誤ってインプレースで変更されるバグ (GH 45421)floordivで、IntegerDtype0で除算するとinfの代わりに0が返されるバグ (GH 48223)dtype="boolean"を持つ配列ライクでの除算、powおよびmod演算が、対応するnp.bool_と同様ではないバグ (GH 46063)IntegerDtypeまたはFloatingDtypeを持つSeriesをtimedelta64[ns]dtype を持つ配列ライクで乗算すると、誤ってエラーが発生するバグ (GH 45622)mean()で、オプションの依存関係bottleneckが配列の長さに比例する精度損失を引き起こすバグ。mean()に対してbottleneckは無効化され、損失は対数線形に改善されましたが、パフォーマンスが低下する可能性があります (GH 42878)
変換#
DataFrame.astype()がサブクラスを保持しないバグ (GH 40810)浮動小数点を含むリスト、または浮動小数点 dtype の ndarray ライク (例:
dask.Array) から整数 dtype を持つSeriesを構築する際に、np.ndarrayの場合と同様にキャストせずにエラーが発生するバグ (GH 40110)Float64Index.astype()で、符号なし整数 dtype にキャストする際に、誤ってnp.int64dtype にキャストされるバグ (GH 45309)Series.astype()およびDataFrame.astype()で、浮動小数点 dtype から符号なし整数 dtype へのキャストで、負の値が存在する場合にエラーを発生させないバグ (GH 45151)FloatingDtypeと浮動小数点にキャスト可能な文字列を含む値を持つarray()で、誤ってエラーが発生するバグ (GH 45424)文字列と datetime64ns オブジェクトを比較する際に
OverflowError例外が発生するバグ (GH 45506)汎用抽象 dtype のメタクラスで、
DataFrame.apply()およびSeries.apply()が組み込み関数typeに対してエラーを発生させるバグ (GH 46684)DataFrame.to_records()で、インデックスがMultiIndexの場合に、一貫性のない numpy 型を返すバグ (GH 47263)DataFrame.to_dict()で、orient="list"またはorient="index"の場合にネイティブ型を返さないバグ (GH 46751)DataFrame.apply()で、空のDataFrameにaxis=1を適用した場合に、Seriesの代わりにDataFrameを返すバグ (GH 39111)NumPy の
ndarrayではない、すべての NumPy 符号なし整数スカラーで構成されるイテラブルから dtype を推測する際に、符号なし整数 dtype にならないバグ (GH 47294)DataFrame.eval()で、pandas オブジェクト (例:'Timestamp') が列名である場合に発生するバグ (GH 44603)
文字列#
str.startswith()およびstr.endswith()で、他のシリーズをパラメータ _pat_ として使用するときのバグ。現在はTypeErrorを発生させます (GH 3485)Series.str.zfill()で、文字列に先行符号が含まれる場合に、標準ライブラリのstr.zfillと同様に符号文字の後に '0' を埋めるのではなく、符号文字の前に '0' を埋めるバグ (GH 20868)
Interval#
IntervalArray.__setitem__()で、整数バックアップ配列にnp.nanを設定する際に、TypeErrorの代わりにValueErrorを発生させるバグ (GH 45484)IntervalDtypeで、datetime64[ns, tz] を dtype 文字列として使用する際のバグ (GH 46999)
インデックス付け#
DataFrame.iloc()で、単一の ExtensionDtype 列を持つDataFrameの単一行にインデックスを付けると、基になるデータのビューではなくコピーが返されるバグ (GH 45241)DataFrame.__getitem__()で、DataFrameに重複する列がある場合でも、一意の列が選択されたときにコピーが返されるバグ (GH 45316, GH 41062)Series.align()で、両方の MultiIndexes の交差部分が同一である場合に、レベルの結合でMultiIndexが作成されないバグ (GH 45224)int ベースの
IntervalDtypeを持つSeriesに NA 値 (Noneまたはnp.nan) を設定する際に、float ベースのIntervalDtypeにキャストされずに誤って object dtype にキャストされるバグ (GH 45568)ExtensionDtype列にdf.iloc[:, i] = valuesで値を設定する際に、valuesがdf.iloc[:, i]と同じ dtype を持つ場合に、インプレースで設定せずに誤って新しい配列が挿入されるバグ (GH 33457)非整数
Indexを持つSeries.__setitem__()で、整数キーを使用してインプレースで設定できない値を設定する際に、共通の dtype にキャストされずにValueErrorが発生するバグ (GH 45070)DataFrame.loc()で、値をリストとしてDataFrameに設定する際に、NoneをNAにキャストしないバグ (GH 47987)Series.__setitem__()で、PeriodDtypeまたはIntervalDtypeSeriesに互換性のない値を設定する際に、ブールマスクでインデックスを付けるとエラーが発生するが、それ以外の同等のインデクサーでインデックスを付けると強制変換されるバグ。これらは現在、Series.mask()およびSeries.where()とともに一貫して強制変換されます (GH 45768)DataFrame.where()で、datetime-like dtype を持つ複数の列で、他の dtype と一貫したダウンキャストが行われないバグ (GH 45837)isin()で、符号なし整数 dtype と dtype なしのリストライク引数でfloat64にアップキャストされるバグ (GH 46485)Series.loc.__setitem__()およびSeries.loc.__getitem__()で、MultiIndexを使用せずに複数のキーを使用した場合にエラーが発生しないバグ (GH 13831)Index.reindex()で、levelが指定されているにもかかわらずMultiIndexが与えられなかった場合にAssertionErrorが発生するバグ。レベルは現在無視されます (GH 35132)Seriesの dtype に対して大きすぎる値を設定すると、共通の型に強制変換できないバグ (GH 26049, GH 32878)loc.__setitem__()で、rangeキーがラベルベースではなく位置指定として扱われるバグ (GH 45479)DataFrame.__setitem__()で、スカラーキーとDataFrameを値として設定する際に、拡張配列 dtype をオブジェクトにキャストするバグ (GH 46896)Series.__setitem__()で、スカラーを null 許容 pandas dtype に設定する際に、スカラーが null 許容型に (損失なしで) キャストできない場合にTypeErrorを発生させないバグ (GH 45404)Series.__setitem__()で、NAを含むbooleandtype 値を設定する際に、booleandtype にキャストせずに誤ってエラーを発生させるバグ (GH 45462)Series.loc()で、Indexが一致しない場合にNAを含むブールインデクサーでエラーが発生するバグ (GH 46551)Series.__setitem__()で、数値 dtype のSeriesにNAを設定する際に、np.nanとして値を扱わずに誤ってオブジェクト dtype にアップキャストするバグ (GH 44199)DataFrame.loc()で、列に値を設定する際に右辺が辞書である場合のバグ (GH 47216)Series.__setitem__()で、datetime64[ns]dtype、すべてFalseのブールマスク、および互換性のない値がある場合に、datetime64[ns]dtype を保持せずに誤ってobjectにキャストするバグ (GH 45967)Index.__getitem__()で、インデクサーがNAを含むブール dtype の場合にValueErrorが発生するバグ (GH 45806)Series.__setitem__()で、スカラーを使用してSeriesを拡張する際に精度が失われるバグ (GH 32346)Series.mask()で、inplace=Trueを使用するか、小さな整数 dtype でブールマスクを使用して値を設定する際に誤ってエラーが発生するバグ (GH 45750)DataFrame.mask()で、inplace=TrueとExtensionDtype列がある場合に誤ってエラーが発生するバグ (GH 45577)datetime-like 値を持つ object-dtype 行インデックスを持つ DataFrame から列を取得する際のバグ: 結果の Series は、親 DataFrame からの正確な object-dtype Index を保持するようになりました (GH 42950)
DataFrame.__getattribute__()で、列が"string"dtype を持つ場合にAttributeErrorが発生するバグ (GH 46185)DataFrame.compare()で、拡張配列 dtype と numpy dtype を比較する際に、すべてのNaN列を返すバグ (GH 44014)DataFrame.where()で、numpy dtype の"boolean"マスクで間違った値を設定するバグ (GH 44014)DatetimeIndexで、np.str_キーでインデックスを付けると誤ってエラーが発生するバグ (GH 45580)CategoricalIndex.get_indexer()で、インデックスにNaN値が含まれる場合に、ターゲットに存在するがインデックスに存在しない要素が、-1 の代わりに NaN 要素のインデックスにマッピングされるバグ (GH 45361)Seriesにfloat32またはfloat16dtype で大きな整数値を設定する際に、float64dtype に強制変換されずにこれらの値が誤って変更されるバグ (GH 45844)Series.asof()およびDataFrame.asof()で、bool-dtype 結果が誤ってfloat64dtype にキャストされるバグ (GH 16063)NDFrame.xs()、DataFrame.iterrows()、DataFrame.loc()およびDataFrame.iloc()で、メタデータが常に伝播されないバグ (GH 28283)DataFrame.sum()で、入力に NaN が含まれている場合に min_count が dtype を変更するバグ (GH 46947)無限再帰を引き起こす
IntervalTreeのバグ (GH 46658)PeriodIndexで、NAにインデックスを付ける際に、NaTをその場所に配置せずにAttributeErrorが発生するバグ (GH 46673)DataFrame.at()で、複数の列の変更を許可するバグ (GH 48296)
欠損値#
Series.fillna()およびDataFrame.fillna()で、NA 値が存在しない場合にdowncastキーワードが尊重されない場合があるバグ (GH 45423)Series.fillna()およびDataFrame.fillna()で、IntervalDtypeと互換性のない値で、共通の (通常はオブジェクト) dtype にキャストせずにエラーが発生するバグ (GH 45796)Series.map()で、マッパーがdictまたはSeriesの場合にna_action引数を尊重しないバグ (GH 47527)DataFrame.interpolate()で、object-dtype 列でinplace=Falseの場合にコピーを返さないバグ (GH 45791)DataFrame.dropna()で、howとthreshの両方の互換性のない引数を設定できるバグ (GH 46575)DataFrame.fillna()で、DataFrameが単一ブロックの場合にaxisが無視されるバグ (GH 47713)
MultiIndex#
DataFrame.loc()で、負のステップサイズと非 null の start/stop 値でMultiIndexをスライスする際に、空の結果を返すバグ (GH 46156)DataFrame.loc()で、-1 以外の負のステップサイズでMultiIndexをスライスする際にエラーが発生するバグ (GH 46156)DataFrame.loc()で、負のステップサイズと非整数ラベルのインデックスレベルでMultiIndexをスライスする際にエラーが発生するバグ (GH 46156)Series.to_numpy()で、na_valueが指定された場合に、マルチインデックス Series を numpy 配列に変換できないバグ (GH 45774)MultiIndex.equalsにおいて、いずれか一方の側のみが拡張配列 dtype を持っている場合、非可換となるバグ (GH 46026)MultiIndex.from_tuples()が空のタプルの Index を構築できないバグ (GH 45608)
I/O#
DataFrame.to_stata()において、DataFrameが-np.infを含む場合にエラーが上がらないバグ (GH 45350)read_excel()において、特定のskiprows呼び出し可能オブジェクトで無限ループが発生するバグ (GH 45585)DataFrame.info()において、空のDataFrameで呼び出された場合、出力の末尾の改行が省略されるバグ (GH 45494)read_csv()において、engine="c"でon_bad_lines="warn"の場合、改行を認識しないバグ (GH 41710)DataFrame.to_csv()において、Float64dtype でfloat_formatが尊重されないバグ (GH 45991)read_csv()において、すべてのケースでインデックス列に指定されたコンバーターが尊重されないバグ (GH 40589)read_csv()において、index_col=Falseであっても2行目をIndex名として解釈するバグ (GH 46569)read_parquet()において、engine="pyarrow"でサポートされていないデータ型の列が渡されたときに、ディスクへの部分的な書き込みを引き起こすバグ (GH 44914)DataFrame.to_excel()とExcelWriterにおいて、空の DataFrame を.odsファイルに書き込むときに例外が発生するバグ (GH 45793)read_csv()において、engine="python"で存在しないヘッダー行を無視するバグ (GH 47400)read_excel()において、headerが存在しない行を参照している場合に、制御不能なIndexErrorを発生させるバグ (GH 43143)read_html()において、<br>を囲む要素がスペースなしで結合されるバグ (GH 29528)read_csv()において、データがヘッダーよりも長い場合に、文字列を期待するusecolsの呼び出し可能オブジェクトで問題が発生するバグ (GH 46997)Parquet において、
datetime64[ns]サブタイプを持つ Interval dtype のラウンドトリップでバグ (GH 45881)read_excel()において、XML 要素間に改行がある.odsファイルを読み込む際のバグ (GH 45598)read_parquet()において、engine="fastparquet"でエラー時にファイルが閉じられないバグ (GH 46555)DataFrame.to_html()は、borderキーワードがFalseに設定されている場合、<table>要素からborder属性を除外するようになりました。read_sas()において、特定の種類の圧縮された SAS7BDAT ファイルでバグ (GH 35545)read_excel()において、名前が与えられなかった場合にMultiIndexを前方フィルしないバグ (GH 47487)read_sas()において、行数がゼロの SAS7BDAT ファイルに対して空の DataFrame ではなくNoneを返すバグ (GH 18198)DataFrame.to_string()において、MultiIndexの拡張配列で間違った欠損値を使用するバグ (GH 47986)StataWriterにおいて、値ラベルが常にデフォルトエンコーディングで書き込まれるバグ (GH 46750)StataWriterUTF8において、一部の有効な文字が変数名から削除されるバグ (GH 47276)DataFrame.to_excel()において、MultiIndexを持つ空のデータフレームを書き込む際のバグ (GH 19543)read_sas()において、0x40 制御バイトを含む RLE 圧縮 SAS7BDAT ファイルでバグ (GH 31243)read_sas()において、列名をスクランブルするバグ (GH 31243)read_sas()において、0x00 制御バイトを含む RLE 圧縮 SAS7BDAT ファイルでバグ (GH 47099)read_parquet()において、use_nullable_dtypes=Trueで Null 許容のFloat64dtype ではなくfloat64dtype が返されるバグ (GH 45694)DataFrame.to_json()において、PeriodDtypeがread_json()で読み戻されたときにシリアル化ラウンドトリップを行わないバグ (GH 44720)read_xml()において、中国語の文字タグを持つ XML ファイルを読み込むときにXMLSyntaxErrorを発生させるバグ (GH 47902)
期間#
PeriodArrayからPeriodを減算すると間違った結果を返すバグ (GH 45999)Period.strftime()とPeriodIndex.strftime()において、ディレクティブ%lと%uが間違った結果を返すバグ (GH 46252)Periodに1000の倍数であるマイクロ秒の文字列を渡すときに、誤ったfreqを推論するバグ (GH 46811)Timestampまたはnp.datetime64オブジェクトから、ナノ秒がゼロでなくfreq="ns"のPeriodを構築する際に、ナノ秒が誤って切り捨てられるバグ (GH 46811)timedelta に似た freq を持つ
Periodにnp.timedelta64("NaT", "ns")を追加すると、NaTを返す代わりにIncompatibleFrequencyが誤って発生するバグ (GH 47196)PeriodDtypeを持つ配列に整数の配列を追加すると、dtype.freq.n > 1の場合に不正な結果を返すバグ (GH 47209)PeriodDtypeを持つ配列からPeriodを減算すると、操作がオーバーフローした場合にOverflowErrorを発生させる代わりに誤った結果を返すバグ (GH 47538)
プロット#
DataFrame.plot.barh()において、x軸のラベル付けができない、およびxlabelがy軸ラベルを更新するバグ (GH 45144)DataFrame.plot.box()において、x軸のラベル付けができないバグ (GH 45463)DataFrame.boxplot()において、xlabelとylabelを渡せないバグ (GH 45463)DataFrame.boxplot()において、vert=Falseを指定できないバグ (GH 36918)DataFrame.plot.scatter()において、normを指定できないバグ (GH 45809)Series.plot()で ylabel を設定しない場合に “None” が ylabel として表示される問題を修正 (GH 46129)DataFrame.plot()において、四半期ごとの系列をプロットする際に xticks と垂直グリッドが不適切に配置されるバグ (GH 47602)DataFrame.plot()において、第2y軸のy軸ラベル、制限、目盛りを設定できないバグ (GH 47753)
Groupby/resample/rolling#
DataFrame.resample()において、TimedeltaIndexでclosed="right"を無視するバグ (GH 45414)DataFrameGroupBy.transform()において、func="size"で入力 DataFrame が複数の列を持つ場合に失敗するバグ (GH 27469)DataFrameGroupBy.size()とDataFrameGroupBy.transform()において、func="size"でaxis=1の場合に間違った結果を生成するバグ (GH 45715)ExponentialMovingWindow.mean()において、axis=1とengine='numba'でDataFrameが行数よりも列数が多い場合にバグ (GH 46086)engine="numba"を使用すると、engine_kwargsを変更しても同じ jitted 関数が返されるバグ (GH 46086)DataFrameGroupBy.transform()において、axis=1でfuncが"first"または"last"の場合に失敗するバグ (GH 45986)DataFrameGroupBy.cumsum()において、skipna=Falseで間違った結果を返すバグ (GH 46216)DataFrameGroupBy.sum()、SeriesGroupBy.sum()、DataFrameGroupBy.prod()、SeriesGroupBy.prod, :meth:().DataFrameGroupBy.cumsum`、およびSeriesGroupBy.cumsum()において、整数 dtype で精度が失われるバグ (GH 37493)DataFrameGroupBy.cumsum()とSeriesGroupBy.cumsum()において、timedelta64[ns]dtype でNaTを null 値として認識できないバグ (GH 46216)DataFrameGroupBy.cumsum()とSeriesGroupBy.cumsum()において、整数 dtype で合計が dtype の最大値より大きい場合にオーバーフローを引き起こすバグ (GH 37493)DataFrameGroupBy.cummin()、SeriesGroupBy.cummin()、DataFrameGroupBy.cummax()、およびSeriesGroupBy.cummax()において、Null 許容 dtype で元のデータが誤ってインプレースで変更されるバグ (GH 46220)DataFrame.groupby()において、MultiIndexの最初のレベルにNoneがある場合にエラーが発生するバグ (GH 47348)DataFrameGroupBy.cummax()とSeriesGroupBy.cummax()において、int64dtype で先頭の値が可能な最小の int64 である場合のバグ (GH 46382)DataFrameGroupBy.cumprod()とSeriesGroupBy.cumprod()において、NaNがskipna=Falseで異なる列の計算に影響を与えるバグ (GH 48064)DataFrameGroupBy.max()とSeriesGroupBy.max()において、空のグループとuint64dtype で誤ってRuntimeErrorを発生させるバグ (GH 46408)DataFrameGroupBy.apply()とSeriesGroupBy.apply()において、funcが文字列で args または kwargs が提供された場合に失敗するバグ (GH 46479)SeriesGroupBy.apply()において、ユニークなグループがある場合に結果に誤った名前を付けるバグ (GH 46369)Rolling.sum()とRolling.mean()において、同じ値のウィンドウで間違った結果を返すバグ (GH 42064, GH 46431)Rolling.var()とRolling.std()において、同じ値のウィンドウで非ゼロの結果を返すバグ (GH 42064)Rolling.skew()とRolling.kurt()において、同じ値のウィンドウで NaN を返すバグ (GH 30993)Rolling.var()において、ウィンドウサイズがデータサイズより大きい場合に重み付き分散の計算でセグメンテーションフォールトが発生するバグ (GH 46760)Grouper.__repr__()において、dropnaが含まれていなかったバグ。現在は含まれています (GH 46754)DataFrame.rolling()において、center=True、axis=1、win_type が指定されている場合に ValueError を発生させるバグ (GH 46135)DataFrameGroupBy.describe()とSeriesGroupBy.describe()において、空のデータセットで一貫性のない結果を生成するバグ (GH 41575)DataFrame.resample()の削減メソッドにおいて、onと共に使用された場合に、提供された列を集計しようとするバグ (GH 47079)DataFrame.groupby()とSeries.groupby()において、入力 DataFrame/Series がMultiIndexに NaN 値を持つ場合、dropna=Falseが尊重されないバグ (GH 46783)DataFrameGroupBy.resample()において、リサンプルキーを欠くキーリストから結果を取得する際にKeyErrorが発生するバグ (GH 47362)DataFrame.groupby()において、fillna などの変換で DataFrame が空の場合にインデックス列が失われるバグ (GH 47787)DataFrame.groupby()とSeries.groupby()において、dropna=Falseとsort=Falseで、null グループが出現順ではなく末尾に配置されるバグ (GH 46584)
再整形#
concat()において、整数 dtype のSeriesと整数カテゴリを持ちNaN値を含むCategoricalDtypeを持つ別のSeriesの連結で、float64ではなく object dtype にキャストされるバグ (GH 45359)get_dummies()において、object と categorical dtypes は選択されるが string は選択されないバグ (GH 44965)DataFrame.align()において、MultiIndexを別のMultiIndexを持つSeriesにアラインする際のバグ (GH 46001)IntegerDtypeまたはFloatingDtype配列との連結で、結果の dtype が Null 許容ではない dtypes の動作を反映しないバグ (GH 46379)concat()において、join="outer"とsort=Trueの場合に列の dtype が失われるバグ (GH 47329)concat()において、同一キーでの連結がMultiIndexのインデックス作成時にエラーにつながるバグ (GH 46519)pivot_table()において、dropna=Trueで集計列が拡張配列 dtype の場合にTypeErrorを発生させるバグ (GH 47477)merge()において、ssl ライブラリでFIPSモードを使用しているときにhow="cross"でエラーが発生するバグ (GH 48024)DataFrame.join()において、重複する列名を持つ DataFrame を結合するためにサフィックスを使用する場合、リストとの結合でバグ (GH 46396)DataFrame.pivot_table()において、sort=Falseで結果がソートされたインデックスになるバグ (GH 17041)concat()において、axis=1とsort=Falseで、結果の Index がRangeIndexではなくInt64Indexになるバグ (GH 46675)wide_to_long()において、columns にstubnamesが欠落しており、iに文字列 dtype の列が含まれている場合に例外が発生するバグ (GH 46044)DataFrame.join()において、カテゴリカルインデックスとの結合で予期しない並べ替えが発生するバグ (GH 47812)
スパース#
Series.where()とDataFrame.where()において、SparseDtypeで配列のfill_valueが保持されないバグ (GH 45691)SparseArray.unique()において、元の要素の順序が保持されないバグ (GH 47809)
ExtensionArray#
IntegerArray.searchsorted()とFloatingArray.searchsorted()において、np.nanに対して実行すると一貫性のない結果を返すバグ (GH 45255)
Styler#
空の DataFrame サブセットにスタイル関数を適用しようとするときのバグ (GH 45313)
CSSToExcelConverterにおいて、xlsxwriterエンジンでボーダースタイルなしでボーダー色が指定された場合にTypeErrorが発生するバグ (GH 42276)Styler.set_sticky()において、ダークモードで白地に白いテキストが表示されるバグ (GH 46984)Styler.to_latex()において、clines="all;data"でDataFrameに行がない場合にUnboundLocalErrorが発生するバグ。 (GH 47203)Styler.to_excel()において、xlsxwriterエンジンでvertical-align: middle;を使用する場合のバグ (GH 30107)ブール型の列ラベルを持つ DataFrame にスタイルを適用する際のバグを修正 (GH 47838)
メタデータ#
DataFrame.melt()のメタデータ伝播を修正 (GH 28283)DataFrame.explode()のメタデータ伝播を修正 (GH 28283)
その他#
assert_index_equal()において、names=Trueとcheck_order=Falseで名前がチェックされないバグ (GH 47328)
貢献者#
本リリースには合計271名がパッチを貢献しました。「+」が付いている方は今回初めてパッチを貢献された方です。
Aadharsh Acharya +
Aadharsh-Acharya +
Aadhi Manivannan +
Adam Bowden
Aditya Agarwal +
Ahmed Ibrahim +
Alastair Porter +
Alex Povel +
Alex-Blade
Alexandra Sciocchetti +
AlonMenczer +
Andras Deak +
Andrew Hawyrluk
Andy Grigg +
Aneta Kahleová +
Anthony Givans +
Anton Shevtsov +
B. J. Potter +
BarkotBeyene +
Ben Beasley +
Ben Wozniak +
Bernhard Wagner +
Boris Rumyantsev
Brian Gollop +
CCXXXI +
Chandrasekaran Anirudh Bhardwaj +
Charles Blackmon-Luca +
Chris Moradi +
ChrisAlbertsen +
Compro Prasad +
DaPy15
Damian Barabonkov +
Daniel I +
Daniel Isaac +
Daniel Schmidt
Danil Iashchenko +
Dare Adewumi
Dennis Chukwunta +
Dennis J. Gray +
Derek Sharp +
Dhruv Samdani +
Dimitra Karadima +
Dmitry Savostyanov +
Dmytro Litvinov +
Do Young Kim +
Dries Schaumont +
Edward Huang +
Eirik +
Ekaterina +
Eli Dourado +
Ezra Brauner +
Fabian Gabel +
FactorizeD +
ファンチェン・リー
Francesco Romandini +
Greg Gandenberger +
Guo Ci +
Hiroaki Ogasawara
Hood Chatham +
Ian Alexander Joiner +
アーブ・ラスティッグ
Ivan Ng +
JHM ダービーシャー
JHM Darbyshire (MBP)
JHM ダービーシャー (iMac)
JMBurley
Jack Goldsmith +
James Freeman +
James Lamb
James Moro +
Janosh Riebesell
Jarrod Millman
Jason Jia +
ジェフ・リーバック
Jeremy Tuloup +
Johannes Mueller
John Bencina +
John Mantios +
John Zangwill
Jon Bramley +
ヨナス・ハーグ
Jordan Hicks
Joris Van den Bossche
Jose Ortiz +
JosephParampathu +
José Duarte
Julian Steger +
Kai Priester +
Kapil E. Iyer +
Karthik Velayutham +
Kashif Khan
Kazuki Igeta +
Kevin Jan Anker +
ケビン・シェパード
Khor Chean Wei
Kian Eliasi
Kian S +
Kim, KwonHyun +
Kinza-Raza +
Konjeti Maruthi +
Leonardus Chen
Linxiao Francis Cong +
Loïc Estève
LucasG0 +
Lucy Jiménez +
Luis Pinto
Luke Manley
Marc Garcia
Marco Edward Gorelli
マルコ・ゴレリ
MarcoGorelli
Margarete Dippel +
Mariam-ke +
Martin Fleischmann
Marvin John Walter +
Marvin Walter +
Mateusz
Matilda M +
Matthew Roeschke
Matthias Bussonnier
MeeseeksMachine
Mehgarg +
Melissa Weber Mendonça +
Michael Milton +
Michael Wang
Mike McCarty +
Miloni Atal +
Mitlasóczki Bence +
Moritz Schreiber +
Morten Canth Hels +
Nick Crews +
NickFillot +
Nicolas Hug +
Nima Sarang
Noa Tamir +
Pandas Development Team
パーフェイト・ガサナ
Parthi +
Partho +
Patrick Hoefler
Peter
Peter Hawkins +
Philipp A
Philipp Schaefer +
Pierrot +
Pratik Patel +
Prithvijit
Purna Chandra Mansingh +
Radoslaw Lemiec +
RaphSku +
Reinert Huseby Karlsen +
Richard Shadrach
Richard Shadrach +
Robbie Palmer
Robert de Vries
Roger +
Roger Murray +
Ruizhe Deng +
SELEE +
Sachin Yadav +
Saiwing Yeung +
Sam Rao +
Sandro Casagrande +
Sebastiaan Vermeulen +
Shaghayegh +
Shantanu +
Shashank Shet +
Shawn Zhong +
Shuangchi He +
Simon Hawkins
Simon Knott +
Solomon Song +
Somtochi Umeh +
Stefan Krawczyk +
ステファニー・モリン
Steffen Rehberg
Steven Bamford +
Steven Rotondo +
Steven Schaerer
Sylvain MARIE +
シルヴァン・マリー
Tarun Raghunandan Kaushik +
Taylor Packard +
テルジ・ピーターセン
ティエリー・モワザン
トーマス・グレンジャー
Thomas Hunter +
Thomas Li
Tim McFarland +
Tim Swast
Tim Yang +
Tobias Pitters
Tom Aarsen +
Tom Augspurger
トルステン・ヴェルトワイン
TraverseTowner +
Tyler Reddy
Valentin Iovene
Varun Sharma +
Vasily Litvinov
Venaturum
Vinicius Akira Imaizumi +
Vladimir Fokow +
Wenjun Si
Will Lachance +
ウィリアム・アンドレア
Wolfgang F. Riedl +
Xingrong Chen
Yago González
Yikun Jiang +
ユアンハオ・ゲン
Yuval +
Zero
Zhengfei Wang +
abmyii
alexondor +
alm
andjhall +
anilbey +
arnaudlegout +
asv-bot +
ateki +
auderson +
bherwerth +
bicarlsen +
carbonleakage +
charles +
charlogazzo +
code-review-doctor +
dataxerik +
deponovo
dimitra-karadima +
dospix +
ehallam +
ehsan shirvanian +
ember91 +
eshirvana
fractionalhare +
gaotian98 +
gesoos
github-actions[bot]
gunghub +
hasan-yaman
iansheng +
iasoon +
jbrockmendel
joshuabello2550 +
jyuv +
kouya takahashi +
mariana-LJ +
matt +
mattB1989 +
nealxm +
パルテフ
poloso +
realead
roib20 +
rtpsw
ryangilmour +
shourya5 +
srotondo +
stanleycai95 +
staticdev +
tehunter +
theidexisted +
tobias.pitters +
uncjackg +
vernetya
wany-oh +
wfr +
z3c0 +