1.0.0 の新機能 (2020年1月29日)#

これらは pandas 1.0.0 の変更点です。他のバージョンの pandas を含む完全な変更履歴については、リリースノートをご覧ください。

pandas 1.0 リリースでは、以前のリリースで非推奨となった多くの機能が削除されました(概要については、以下をご覧ください)。pandas 1.0 にアップグレードする前に、まず pandas 0.25 にアップグレードし、コードが警告なしで動作することを確認することをお勧めします。

新しい非推奨ポリシー#

pandas 1.0.0 以降、pandas はリリースに SemVer の亜種を採用します。簡単に言うと、

  • 非推奨はマイナーリリース (例: 1.1.0, 1.2.0, 2.1.0, ...) で導入されます。

  • 非推奨はメジャーリリース (例: 1.0.0, 2.0.0, 3.0.0, ...) で適用されます。

  • API 破壊的変更はメジャーリリースでのみ行われます (実験的機能を除く)。

詳細については、バージョンポリシーをご覧ください。

機能強化#

rolling.applyexpanding.apply で Numba を使用する#

apply()apply()engine キーワードを追加しました。これにより、ユーザーは Cython の代わりに Numba を使用してルーチンを実行できます。Numba エンジンを使用すると、apply 関数が NumPy 配列で操作でき、データセットが大きい場合 (100万行以上) に大幅なパフォーマンス向上が期待できます。詳細については、ローリング適用ドキュメントを参照してください (GH 28987GH 30936)。

ローリング操作のカスタムウィンドウを定義する#

rolling 操作中にウィンドウの境界がどのように作成されるかをユーザーが定義できる pandas.api.indexers.BaseIndexer() クラスを追加しました。ユーザーは、pandas.api.indexers.BaseIndexer() のサブクラスで独自の get_window_bounds メソッドを定義できます。このメソッドは、ローリング集計中に各ウィンドウで使用される開始インデックスと終了インデックスを生成します。詳細と使用例については、カスタムウィンドウローリングドキュメントを参照してください。

Markdown への変換#

Markdown テーブルを作成するための to_markdown() を追加しました (GH 11052)。

In [1]: df = pd.DataFrame({"A": [1, 2, 3], "B": [1, 2, 3]}, index=['a', 'a', 'b'])

In [2]: print(df.to_markdown())
|    |   A |   B |
|:---|----:|----:|
| a  |   1 |   1 |
| a  |   2 |   2 |
| b  |   3 |   3 |

実験的な新機能#

欠損値を表す実験的な NA スカラー#

スカラーの欠損値を表すために、新しい pd.NA 値 (シングルトン) が導入されました。これまで、pandas は欠損データを表すためにいくつかの値を使用していました: 浮動小数点データには np.nan、オブジェクト型データには np.nan または None、日時型データには pd.NaT です。pd.NA の目標は、データ型全体で一貫して使用できる「欠損」インジケータを提供することです。pd.NA は現在、null許容整数型およびブール型データ型と、新しい文字列データ型で使用されています (GH 28095)。

警告

実験的: pd.NA の動作は、警告なしで変更される可能性があります。

例として、nullable integer dtype を使用して Series を作成します。

In [3]: s = pd.Series([1, 2, None], dtype="Int64")

In [4]: s
Out[4]: 
0       1
1       2
2    <NA>
Length: 3, dtype: Int64

In [5]: s[2]
Out[5]: <NA>

np.nan と比較して、pd.NA は特定の操作で異なる動作をします。算術演算に加えて、pd.NA は比較演算でも「欠損」または「不明」として伝播します。

In [6]: np.nan > 1
Out[6]: False

In [7]: pd.NA > 1
Out[7]: <NA>

論理演算の場合、pd.NA3値論理 (または *Kleene logic*) のルールに従います。例:

In [8]: pd.NA | True
Out[8]: True

詳細については、欠損データに関するユーザーガイドのNAセクションを参照してください。

専用の文字列データ型#

文字列データ専用の拡張型である StringDtype を追加しました。以前は、文字列は通常、オブジェクト型 NumPy 配列に格納されていました (GH 29975)。

警告

StringDtype は現在、実験的と見なされています。実装および API の一部は、警告なしで変更される可能性があります。

'string' 拡張型は、オブジェクト型 NumPy 配列のいくつかの問題を解決します。

  1. object dtype 配列には、誤って文字列と非文字列が混在して格納される可能性があります。StringArray は文字列のみを格納できます。

  2. object dtype は、DataFrame.select_dtypes() のような dtype 固有の操作を壊します。非テキストではあるが依然としてオブジェクト型カラムを除外しながら、*純粋な* テキストを選択する明確な方法はありません。

  3. コードを読むとき、object dtype 配列の内容は string よりも不明瞭です。

In [9]: pd.Series(['abc', None, 'def'], dtype=pd.StringDtype())
Out[9]: 
0     abc
1    <NA>
2     def
Length: 3, dtype: string

エイリアス "string" も使用できます。

In [10]: s = pd.Series(['abc', None, 'def'], dtype="string")

In [11]: s
Out[11]: 
0     abc
1    <NA>
2     def
Length: 3, dtype: string

通常の文字列アクセサメソッドが機能します。適切な場合、Series または DataFrame の列の戻り値の型も文字列 dtype になります。

In [12]: s.str.upper()
Out[12]: 
0     ABC
1    <NA>
2     DEF
Length: 3, dtype: string

In [13]: s.str.split('b', expand=True).dtypes
Out[13]: 
0    string[python]
1    string[python]
Length: 2, dtype: object

整数を返す文字列アクセサメソッドは、Int64Dtype の値を返します。

In [14]: s.str.count("a")
Out[14]: 
0       1
1    <NA>
2       0
Length: 3, dtype: Int64

文字列を扱う際は、明示的に string データ型を使用することをお勧めします。詳細については、テキストデータ型を参照してください。

欠損値に対応するブールデータ型#

欠損値を保持できるブールデータ専用の拡張型である BooleanDtype / BooleanArray を追加しました。ブール型 NumPy 配列に基づくデフォルトの bool データ型では、列は True または False のみを保持でき、欠損値は保持できません。この新しい BooleanArray は、別のマスクでこれを追跡することにより、欠損値も格納できます (GH 29555GH 30095GH 31131)。

In [15]: pd.Series([True, False, None], dtype=pd.BooleanDtype())
Out[15]: 
0     True
1    False
2     <NA>
Length: 3, dtype: boolean

エイリアス "boolean" も使用できます。

In [16]: s = pd.Series([True, False, None], dtype="boolean")

In [17]: s
Out[17]: 
0     True
1    False
2     <NA>
Length: 3, dtype: boolean

サポートされている拡張 dtype の使用を容易にするための convert_dtypes メソッド#

pd.NA をサポートする拡張データ型である StringDtypeBooleanDtypeInt64DtypeInt32Dtype などの使用を促進するために、DataFrame.convert_dtypes()Series.convert_dtypes() メソッドが導入されました (GH 29752) (GH 30929)。

In [18]: df = pd.DataFrame({'x': ['abc', None, 'def'],
   ....:                    'y': [1, 2, np.nan],
   ....:                    'z': [True, False, True]})
   ....: 

In [19]: df
Out[19]: 
      x    y      z
0   abc  1.0   True
1  None  2.0  False
2   def  NaN   True

[3 rows x 3 columns]

In [20]: df.dtypes
Out[20]: 
x     object
y    float64
z       bool
Length: 3, dtype: object
In [21]: converted = df.convert_dtypes()

In [22]: converted
Out[22]: 
      x     y      z
0   abc     1   True
1  <NA>     2  False
2   def  <NA>   True

[3 rows x 3 columns]

In [23]: converted.dtypes
Out[23]: 
x    string[python]
y             Int64
z           boolean
Length: 3, dtype: object

これは、read_csv()read_excel() などのリーダーを使用してデータを読み込んだ後に特に役立ちます。説明はこちらをご覧ください。

その他の機能強化#

  • DataFrame.to_string() に、幅の広い列が切り捨てられるタイミングを制御する max_colwidth パラメータが追加されました (GH 9784)。

  • Series.to_numpy()Index.to_numpy()、および DataFrame.to_numpy() に、欠損値に使用される値を制御するための na_value 引数が追加されました (GH 30322)。

  • MultiIndex.from_product() は、明示的に指定されていない場合、入力からレベル名を推論します (GH 27292)。

  • DataFrame.to_latex()caption および label 引数を受け入れるようになりました (GH 25436)。

  • Nullable integer新しい string dtype、および期間データ型の DataFrame が pyarrow (>=0.15.0) に変換できるようになり、pyarrow エンジンを使用する際に Parquet ファイル形式への書き込みがサポートされるようになりました (GH 28368)。pyarrow >= 0.16 からは、Parquet への完全なラウンドトリップ (to_parquet() / read_parquet() を使用した書き込みと読み戻し) がサポートされます (GH 20612)。

  • to_parquet() は、pyarrow エンジンのユーザー定義スキーマに対する schema 引数を適切に処理するようになりました (GH 30270)。

  • DataFrame.to_json() は、JSON 出力の整形表示を有効にするために indent 整数引数を受け入れるようになりました (GH 12004)。

  • read_stata() は Stata 119 dta ファイルを読み取ることができます (GH 28250)。

  • Window.var() および Window.std() 関数を実装しました (GH 26597)。

  • DataFrame.to_string() に非ASCIIテキスト用の encoding 引数が追加されました (GH 28766)。

  • DataFrame.to_html() に非ASCIIテキスト用の encoding 引数が追加されました (GH 28663)。

  • Styler.background_gradient()vmin および vmax 引数を受け入れるようになりました (GH 12145)。

  • Styler.format() に、欠損値のフォーマットを支援する na_rep パラメータが追加されました (GH 21527GH 28358)。

  • read_excel() は、engine='pyxlsb' を渡すことでバイナリ Excel (.xlsb) ファイルを読み取ることができるようになりました。詳細と使用例については、バイナリ Excel ファイルのドキュメントを参照してください。GH 8540 を閉じます。

  • DataFrame.to_parquet()partition_cols 引数が文字列を受け入れるようになりました (GH 27117)。

  • pandas.read_json()NaNInfinity、および -Infinity を解析するようになりました (GH 12213)。

  • DataFrame コンストラクタは ExtensionArray と共に ExtensionArray dtype を保持します (GH 11363)。

  • DataFrame.sort_values() および Series.sort_values() に、ソート後にインデックスをリセットできる ignore_index キーワードが追加されました (GH 30114)。

  • DataFrame.sort_index() および Series.sort_index() に、インデックスをリセットするための ignore_index キーワードが追加されました (GH 30114)。

  • DataFrame.drop_duplicates() に、インデックスをリセットするための ignore_index キーワードが追加されました (GH 30114)。

  • バージョン 118 および 119 で Stata dta ファイルをエクスポートするための新しいライター StataWriterUTF8 が追加されました。これらのファイル形式は、Unicode 文字を含む文字列のエクスポートをサポートしています。フォーマット 119 は、32,767 を超える変数を持つデータセットをサポートしています (GH 23573GH 30959)。

  • Series.map() がマッパーとして collections.abc.Mapping サブクラスを受け入れるようになりました (GH 29733)。

  • データセットに関するグローバルメタデータを保存するための実験的な attrs を追加しました (GH 29062)。

  • Timestamp.fromisocalendar() は Python 3.8 以降と互換性があるようになりました (GH 28115)。

  • DataFrame.to_pickle() および read_pickle() が URL を受け入れるようになりました (GH 30163)。

下位互換性のない API の変更#

MultiIndex.levels からの名前の使用を避ける#

MultiIndex の大規模なリファクタリングの一部として、レベル名はレベルとは別に格納されるようになりました (GH 27242)。名前には MultiIndex.names を使用し、名前の更新には Index.set_names() を使用することをお勧めします。

後方互換性のために、レベルを介して名前を *アクセス* することができます。

In [24]: mi = pd.MultiIndex.from_product([[1, 2], ['a', 'b']], names=['x', 'y'])

In [25]: mi.levels[0].name
Out[25]: 'x'

ただし、レベルを介して MultiIndex の名前を *更新* することはできなくなりました。

In [26]: mi.levels[0].name = "new name"
---------------------------------------------------------------------------
RuntimeError                              Traceback (most recent call last)
Cell In[26], line 1
----> 1 mi.levels[0].name = "new name"

File ~/work/pandas/pandas/pandas/core/indexes/base.py:1697, in Index.name(self, value)
   1693 @name.setter
   1694 def name(self, value: Hashable) -> None:
   1695     if self._no_setting_name:
   1696         # Used in MultiIndex.levels to avoid silently ignoring name updates.
-> 1697         raise RuntimeError(
   1698             "Cannot set name on a level of a MultiIndex. Use "
   1699             "'MultiIndex.set_names' instead."
   1700         )
   1701     maybe_extract_name(value, None, type(self))
   1702     self._name = value

RuntimeError: Cannot set name on a level of a MultiIndex. Use 'MultiIndex.set_names' instead.

In [27]: mi.names
Out[27]: FrozenList(['x', 'y'])

更新するには、新しい MultiIndex を返す MultiIndex.set_names を使用します。

In [28]: mi2 = mi.set_names("new name", level=0)

In [29]: mi2.names
Out[29]: FrozenList(['new name', 'y'])

IntervalArray の新しい repr#

pandas.arrays.IntervalArray は、他の配列クラスに準拠した新しい __repr__ を採用しました (GH 25022)。

pandas 0.25.x

In [1]: pd.arrays.IntervalArray.from_tuples([(0, 1), (2, 3)])
Out[2]:
IntervalArray([(0, 1], (2, 3]],
              closed='right',
              dtype='interval[int64]')

pandas 1.0.0

In [30]: pd.arrays.IntervalArray.from_tuples([(0, 1), (2, 3)])
Out[30]: 
<IntervalArray>
[(0, 1], (2, 3]]
Length: 2, dtype: interval[int64, right]

DataFrame.rename は1つの位置引数のみを受け入れるようになりました#

DataFrame.rename() は以前は、曖昧または未定義の動作につながる位置引数を受け入れていました。pandas 1.0 以降では、デフォルト軸に沿ってラベルを新しい名前にマップする最初の引数のみが位置によって渡すことが許可されています (GH 29136)。

pandas 0.25.x

In [1]: df = pd.DataFrame([[1]])
In [2]: df.rename({0: 1}, {0: 2})
Out[2]:
FutureWarning: ...Use named arguments to resolve ambiguity...
   2
1  1

pandas 1.0.0

In [3]: df.rename({0: 1}, {0: 2})
Traceback (most recent call last):
...
TypeError: rename() takes from 1 to 2 positional arguments but 3 were given

競合する引数や潜在的に曖昧な引数が指定された場合、エラーが発生するようになりました。

pandas 0.25.x

In [4]: df.rename({0: 1}, index={0: 2})
Out[4]:
   0
1  1

In [5]: df.rename(mapper={0: 1}, index={0: 2})
Out[5]:
   0
2  1

pandas 1.0.0

In [6]: df.rename({0: 1}, index={0: 2})
Traceback (most recent call last):
...
TypeError: Cannot specify both 'mapper' and any of 'index' or 'columns'

In [7]: df.rename(mapper={0: 1}, index={0: 2})
Traceback (most recent call last):
...
TypeError: Cannot specify both 'mapper' and any of 'index' or 'columns'

最初の位置引数が適用される軸は、axis キーワード引数を指定することで変更できます。

In [31]: df.rename({0: 1})
Out[31]: 
   0
1  1

[1 rows x 1 columns]

In [32]: df.rename({0: 1}, axis=1)
Out[32]: 
   1
0  1

[1 rows x 1 columns]

インデックスと列のラベルの両方を更新したい場合は、それぞれのキーワードを使用してください。

In [33]: df.rename(index={0: 1}, columns={0: 2})
Out[33]: 
   2
1  1

[1 rows x 1 columns]

DataFrame の詳細な情報出力の拡張#

DataFrame.info() が列の概要の行番号を表示するようになりました (GH 17304)。

pandas 0.25.x

In [1]: df = pd.DataFrame({"int_col": [1, 2, 3],
...                    "text_col": ["a", "b", "c"],
...                    "float_col": [0.0, 0.1, 0.2]})
In [2]: df.info(verbose=True)
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 3 entries, 0 to 2
Data columns (total 3 columns):
int_col      3 non-null int64
text_col     3 non-null object
float_col    3 non-null float64
dtypes: float64(1), int64(1), object(1)
memory usage: 152.0+ bytes

pandas 1.0.0

In [34]: df = pd.DataFrame({"int_col": [1, 2, 3],
   ....:                    "text_col": ["a", "b", "c"],
   ....:                    "float_col": [0.0, 0.1, 0.2]})
   ....: 

In [35]: df.info(verbose=True)
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 3 entries, 0 to 2
Data columns (total 3 columns):
 #   Column     Non-Null Count  Dtype  
---  ------     --------------  -----  
 0   int_col    3 non-null      int64  
 1   text_col   3 non-null      object 
 2   float_col  3 non-null      float64
dtypes: float64(1), int64(1), object(1)
memory usage: 200.0+ bytes

pandas.array() の推論の変更点#

pandas.array() は、いくつかのケースで pandas の新しい拡張型を推論するようになりました (GH 29791)。

  1. 文字列データ (欠損値を含む) は、arrays.StringArray を返すようになりました。

  2. 整数データ (欠損値を含む) は、arrays.IntegerArray を返すようになりました。

  3. ブールデータ (欠損値を含む) は、新しい arrays.BooleanArray を返すようになりました。

pandas 0.25.x

In [1]: pd.array(["a", None])
Out[1]:
<PandasArray>
['a', None]
Length: 2, dtype: object

In [2]: pd.array([1, None])
Out[2]:
<PandasArray>
[1, None]
Length: 2, dtype: object

pandas 1.0.0

In [36]: pd.array(["a", None])
Out[36]: 
<StringArray>
['a', <NA>]
Length: 2, dtype: string

In [37]: pd.array([1, None])
Out[37]: 
<IntegerArray>
[1, <NA>]
Length: 2, dtype: Int64

念のため、すべての推論を無効にするには dtype を指定できます。

arrays.IntegerArraypandas.NA を使用するようになりました#

arrays.IntegerArray は、欠損値マーカーとして numpy.nan ではなく pandas.NA を使用するようになりました (GH 29964)。

pandas 0.25.x

In [1]: a = pd.array([1, 2, None], dtype="Int64")
In [2]: a
Out[2]:
<IntegerArray>
[1, 2, NaN]
Length: 3, dtype: Int64

In [3]: a[2]
Out[3]:
nan

pandas 1.0.0

In [38]: a = pd.array([1, 2, None], dtype="Int64")

In [39]: a
Out[39]: 
<IntegerArray>
[1, 2, <NA>]
Length: 3, dtype: Int64

In [40]: a[2]
Out[40]: <NA>

これには、いくつかの API 破壊的な結果があります。

NumPy ndarray への変換

NumPy 配列に変換する際、欠損値は pd.NA となり、float に変換することはできません。したがって、np.asarray(integer_array, dtype="float") を呼び出すと、エラーが発生するようになりました。

pandas 0.25.x

In [1]: np.asarray(a, dtype="float")
Out[1]:
array([ 1.,  2., nan])

pandas 1.0.0

In [41]: np.asarray(a, dtype="float")
Out[41]: array([ 1.,  2., nan])

代わりに、明示的な na_value を指定して arrays.IntegerArray.to_numpy() を使用してください。

In [42]: a.to_numpy(dtype="float", na_value=np.nan)
Out[42]: array([ 1.,  2., nan])

集計は pd.NA を返す可能性があります

skipna=False で合計などの集計を実行する場合、欠損値が存在すると結果は np.nan の代わりに pd.NA になります (GH 30958)。

pandas 0.25.x

In [1]: pd.Series(a).sum(skipna=False)
Out[1]:
nan

pandas 1.0.0

In [43]: pd.Series(a).sum(skipna=False)
Out[43]: <NA>

value_counts は null許容整数 dtype を返す

nullable integer dtype を持つ Series.value_counts() は、値に対して nullable integer dtype を返すようになりました。

pandas 0.25.x

In [1]: pd.Series([2, 1, 1, None], dtype="Int64").value_counts().dtype
Out[1]:
dtype('int64')

pandas 1.0.0

In [44]: pd.Series([2, 1, 1, None], dtype="Int64").value_counts().dtype
Out[44]: Int64Dtype()

pandas.NAnumpy.nan の違いについては、NAセマンティクスを参照してください。

arrays.IntegerArray の比較は arrays.BooleanArray を返します#

arrays.IntegerArray に対する比較演算は、NumPy 配列ではなく arrays.BooleanArray を返すようになりました (GH 29964)。

pandas 0.25.x

In [1]: a = pd.array([1, 2, None], dtype="Int64")
In [2]: a
Out[2]:
<IntegerArray>
[1, 2, NaN]
Length: 3, dtype: Int64

In [3]: a > 1
Out[3]:
array([False,  True, False])

pandas 1.0.0

In [45]: a = pd.array([1, 2, None], dtype="Int64")

In [46]: a > 1
Out[46]: 
<BooleanArray>
[False, True, <NA>]
Length: 3, dtype: boolean

欠損値は、numpy.nan のように常に不等比較されるのではなく、伝播することに注意してください。詳細については、NAセマンティクスを参照してください。

デフォルトで Categorical.min() は np.nan の代わりに最小値を返すようになりました#

Categoricalnp.nan を含む場合、Categorical.min() はデフォルトで np.nan を返さなくなりました (skipna=True) (GH 25303)。

pandas 0.25.x

In [1]: pd.Categorical([1, 2, np.nan], ordered=True).min()
Out[1]: nan

pandas 1.0.0

In [47]: pd.Categorical([1, 2, np.nan], ordered=True).min()
Out[47]: 1

空の pandas.Series のデフォルトの dtype#

dtype を指定せずに空の pandas.Series を初期化すると、DeprecationWarning が発生するようになりました (GH 17261)。将来のリリースでは、DataFrame および Index の動作と一貫性を持たせるために、デフォルトの dtype が float64 から object に変更されます。

pandas 1.0.0

In [1]: pd.Series()
Out[2]:
DeprecationWarning: The default dtype for empty Series will be 'object' instead of 'float64' in a future version. Specify a dtype explicitly to silence this warning.
Series([], dtype: float64)

リサンプル操作の結果の dtype 推論の変更#

DataFrame.resample() 集計における結果の dtype のルールが、拡張型について変更されました (GH 31359)。以前は、pandas は結果を元の dtype に変換しようとし、それが不可能な場合は通常の推論ルールにフォールバックしていました。現在、pandas は、結果のスカラー値が拡張 dtype のスカラー型のインスタンスである場合にのみ、元の dtype の結果を返します。

In [48]: df = pd.DataFrame({"A": ['a', 'b']}, dtype='category',
   ....:                   index=pd.date_range('2000', periods=2))
   ....: 

In [49]: df
Out[49]: 
            A
2000-01-01  a
2000-01-02  b

[2 rows x 1 columns]

pandas 0.25.x

In [1]> df.resample("2D").agg(lambda x: 'a').A.dtype
Out[1]:
CategoricalDtype(categories=['a', 'b'], ordered=False)

pandas 1.0.0

In [50]: df.resample("2D").agg(lambda x: 'a').A.dtype
Out[50]: CategoricalDtype(categories=['a', 'b'], ordered=False, categories_dtype=object)

これにより、resamplegroupby の間の不整合が修正されます。また、結果が元の dtype にどのようにキャストされるかによって、結果の **値** が変化する可能性のある潜在的なバグも修正されます。

pandas 0.25.x

In [1] df.resample("2D").agg(lambda x: 'c')
Out[1]:

     A
0  NaN

pandas 1.0.0

In [51]: df.resample("2D").agg(lambda x: 'c')
Out[51]: 
            A
2000-01-01  c

[1 rows x 1 columns]

Python の最小バージョンが引き上げられました#

pandas 1.0.0 は Python 3.6.1 以降をサポートしています (GH 29212)。

依存関係の最小バージョン引き上げ#

いくつかの依存関係の最小サポートバージョンが更新されました (GH 29766GH 29723)。インストールされている場合、以下のライブラリが必要です。

パッケージ

最小バージョン

必須

変更済み

numpy

1.13.3

X

pytz

2015.4

X

python-dateutil

2.6.1

X

bottleneck

1.2.1

numexpr

2.6.2

pytest (開発)

4.0.2

オプションのライブラリについては、一般的に最新バージョンを使用することが推奨されます。以下の表は、pandas の開発全体で現在テストされているライブラリごとの最低バージョンを示しています。最低テストバージョンより古いオプションのライブラリは動作する可能性がありますが、サポートされているとはみなされません。

パッケージ

最小バージョン

変更済み

beautifulsoup4

4.6.0

fastparquet

0.3.2

X

gcsfs

0.2.2

lxml

3.8.0

matplotlib

2.2.2

numba

0.46.0

X

openpyxl

2.5.7

X

pyarrow

0.13.0

X

pymysql

0.7.1

pytables

3.4.2

s3fs

0.3.0

X

scipy

0.19.0

sqlalchemy

1.1.4

xarray

0.8.2

xlrd

1.1.0

xlsxwriter

0.9.8

xlwt

1.2.0

詳細については、依存関係 および オプションの依存関係 を参照してください。

ビルドの変更#

pandas は pyproject.toml ファイルを追加し、PyPI にアップロードされるソースディストリビューションに Cython 化されたファイルを含めなくなります (GH 28341GH 20775)。ビルド済みのディストリビューション (wheel) をインストールしている場合、または conda を介してインストールしている場合は、影響はありません。ソースから pandas をビルドしている場合、pip install pandas を呼び出す前にビルド環境に Cython をインストールする必要はなくなります。

その他の API の変更#

  • DataFrameGroupBy.transform() および SeriesGroupBy.transform() は、無効な操作名に対してエラーを発生させるようになりました (GH 27489)。

  • pandas.api.types.infer_dtype() は、整数と np.nan の混合に対して「integer-na」を返すようになりました (GH 27283)。

  • MultiIndex.from_arrays() は、names=None が明示的に指定されている場合、配列から名前を推論しなくなりました (GH 27292)。

  • タブ補完を改善するために、pandas は dir (例: dir(df)) を使用して pandas オブジェクトをイントロスペクトするときに、ほとんどの非推奨属性を含めません。除外される属性を確認するには、オブジェクトの _deprecations 属性を参照してください (例: pd.DataFrame._deprecations) (GH 28805)。

  • unique() の戻り値の dtype が入力 dtype と一致するようになりました (GH 27874)。

  • options.matplotlib.register_converters のデフォルト設定値が True から "auto" に変更されました (GH 18720)。これにより、pandas のカスタムフォーマッターは、plot() を介して pandas によって作成されたプロットにのみ適用されるようになります。以前は、pandas のフォーマッターは、plot() の後に作成されたすべてのプロットに適用されていました。詳細については、単位登録を参照してください。

  • Series.dropna() は、単一の how パラメーターの代わりに **kwargs 引数を削除しました。**kwargshow 以外のものを指定すると、以前は TypeError が発生していました (GH 29388)。

  • pandas をテストする場合、pytest の新しい最小必要バージョンは 5.0.1 です (GH 29664)。

  • Series.str.__iter__() は非推奨となり、将来のリリースで削除されます (GH 28277)。

  • read_csv() のデフォルトの NA 値のリストに <NA> が追加されました (GH 30821)。

ドキュメントの改善#

非推奨#

  • Series.item()Index.item() は非推奨ではなくなりました (GH 29250)。

  • Index.set_value は非推奨になりました。特定のインデックス idx、配列 arridx 内の idx_val の値、および val の新しい値について、idx.set_value(arr, idx_val, val)arr[idx.get_loc(idx_val)] = val と同等であり、代わりにこれを使用する必要があります (GH 28621)。

  • is_extension_type() は非推奨になりました。is_extension_array_dtype() を代わりに使用してください (GH 29457)。

  • eval() キーワード引数「truediv」は非推奨になり、将来のバージョンで削除されます (GH 29812)。

  • DateOffset.isAnchored() および DatetOffset.onOffset() は非推奨になり、将来のバージョンで削除されます。代わりに DateOffset.is_anchored() および DateOffset.is_on_offset() を使用してください (GH 30340)。

  • pandas.tseries.frequencies.get_offset は非推奨になり、将来のバージョンで削除されます。代わりに pandas.tseries.frequencies.to_offset を使用してください (GH 4205)。

  • Categorical.take_nd() および CategoricalIndex.take_nd() は非推奨になりました。代わりに Categorical.take() および CategoricalIndex.take() を使用してください (GH 27745)。

  • Categorical.min()Categorical.max() のパラメータ numeric_only は非推奨になり、skipna に置き換えられました (GH 25303)。

  • lreshape() のパラメータ label は非推奨になり、将来のバージョンで削除されます (GH 29742)。

  • pandas.core.index は非推奨になり、将来のバージョンで削除されます。公開クラスはトップレベルの名前空間で利用できます (GH 19711)。

  • pandas.json_normalize() がトップレベルの名前空間で公開されるようになりました。pandas.io.json.json_normalize としての json_normalize の使用は非推奨になり、代わりに pandas.json_normalize() としての json_normalize の使用が推奨されます (GH 27586)。

  • pandas.read_json()numpy 引数は非推奨になりました (GH 28512)。

  • DataFrame.to_stata()DataFrame.to_feather()、および DataFrame.to_parquet() の引数「fname」は非推奨になり、代わりに「path」を使用してください (GH 23574)。

  • RangeIndex の非推奨の内部属性 _start_stop、および _step は、DeprecationWarning の代わりに FutureWarning を発生させるようになりました (GH 26581)。

  • pandas.util.testing モジュールは非推奨になりました。アサーション関数でドキュメント化されている pandas.testing のパブリック API を使用してください (GH 16232)。

  • pandas.SparseArray は非推奨になりました。代わりに pandas.arrays.SparseArray (arrays.SparseArray) を使用してください (GH 30642)。

  • Series.take() および DataFrame.take() のパラメータ is_copy は非推奨になり、将来のバージョンで削除されます (GH 27357)。

  • Index での多次元インデックス付け (例: index[:, None]) のサポートは非推奨になり、将来のバージョンで削除されます。代わりに、インデックス付けする前に numpy 配列に変換してください (GH 30588)。

  • pandas.np サブモジュールは非推奨になりました。代わりに numpy を直接インポートしてください (GH 30296)。

  • pandas.datetime クラスは非推奨になりました。代わりに datetime からインポートしてください (GH 30610)。

  • diff は、将来、拡張型の dtype を暗黙的に失うのではなく、TypeError を発生させるようになります。代わりに、diff を呼び出す前に正しい dtype に変換してください (GH 31025)。

グループ化された DataFrame から列を選択する

DataFrameGroupBy オブジェクトから列を選択する際、単一の角括弧内に個々のキー (またはキーのタプル) を渡すことは非推奨になり、代わりにアイテムのリストを使用する必要があります (GH 23566)。例:

df = pd.DataFrame({
    "A": ["foo", "bar", "foo", "bar", "foo", "bar", "foo", "foo"],
    "B": np.random.randn(8),
    "C": np.random.randn(8),
})
g = df.groupby('A')

# single key, returns SeriesGroupBy
g['B']

# tuple of single key, returns SeriesGroupBy
g[('B',)]

# tuple of multiple keys, returns DataFrameGroupBy, raises FutureWarning
g[('B', 'C')]

# multiple keys passed directly, returns DataFrameGroupBy, raises FutureWarning
# (implicitly converts the passed strings into a single tuple)
g['B', 'C']

# proper way, returns DataFrameGroupBy
g[['B', 'C']]

以前のバージョンの非推奨/変更の削除#

SparseSeries と SparseDataFrame が削除されました

SparseSeriesSparseDataFrame、および DataFrame.to_sparse メソッドは削除されました (GH 28425)。代わりに、スパース値を持つ Series または DataFrame を使用することをお勧めします。

Matplotlib 単位登録

以前は、pandas をインポートする副作用として、pandas は matplotlib にコンバーターを登録していました (GH 18720)。これにより、pandas をインポートした後に matplotlib を介して作成されたプロットの出力が変更されました。これは、plot() を直接使用している場合でも同様でした。

matplotlib プロットで pandas フォーマッターを使用するには、以下を指定します。

In [1]: import pandas as pd
In [2]: pd.options.plotting.matplotlib.register_converters = True

DataFrame.plot() および Series.plot() によって作成されたプロットは、コンバーターを自動的に登録することに注意してください。唯一の動作変更は、matplotlib.pyplot.plot または matplotlib.Axes.plot を介して日付のようなオブジェクトをプロットする場合です。詳細については、時系列プロットのカスタムフォーマッターを参照してください。

その他の削除

  • read_stata()StataReader、および StataReader.read() から以前非推奨だったキーワード「index」が削除されました。代わりに「index_col」を使用してください (GH 17328)。

  • StataReader.data メソッドが削除されました。代わりに StataReader.read() を使用してください (GH 9493)。

  • pandas.plotting._matplotlib.tsplot が削除されました。代わりに Series.plot() を使用してください (GH 19980)。

  • pandas.tseries.converter.registerpandas.plotting.register_matplotlib_converters() に移動されました (GH 18307)。

  • Series.plot() は位置引数を受け入れなくなりました。代わりにキーワード引数を渡してください (GH 30003)。

  • DataFrame.hist()Series.hist()figsize="default" を許可しなくなりました。代わりにタプルを渡して図のサイズを指定してください (GH 30003)。

  • 整数型配列を Timedelta でフロア除算すると TypeError が発生するようになりました (GH 21036)。

  • TimedeltaIndex および DatetimeIndex は、「timedelta64」や「datetime64」のようなナノ秒以外の dtype 文字列を受け入れなくなりました。代わりに「timedelta64[ns]」および「datetime64[ns]」を使用してください (GH 24806)。

  • pandas.api.types.infer_dtype() のデフォルトの「skipna」引数が False から True に変更されました (GH 24050)。

  • Series.ixDataFrame.ix が削除されました (GH 26438)。

  • Index.summary が削除されました (GH 18217)。

  • Index コンストラクタから、以前非推奨であったキーワード「fastpath」が削除されました (GH 23110)。

  • Series.get_valueSeries.set_valueDataFrame.get_valueDataFrame.set_value が削除されました (GH 17739)。

  • Series.compound および DataFrame.compound が削除されました (GH 26405)。

  • DataFrame.set_index() および Series.set_axis() のデフォルトの「inplace」引数が None から False に変更されました (GH 27600)。

  • Series.cat.categoricalSeries.cat.indexSeries.cat.name が削除されました (GH 24751)。

  • to_datetime() および to_timedelta() から、以前非推奨だったキーワード「box」が削除されました。さらに、これらは常に DatetimeIndexTimedeltaIndexIndexSeries、または DataFrame を返すようになりました (GH 24486)。

  • to_timedelta()Timedelta、および TimedeltaIndex は、「unit」引数に「M」、「y」、「Y」を許可しなくなりました (GH 23264)。

  • (非公開) offsets.generate_range から以前非推奨であったキーワード「time_rule」が削除されました。core.arrays._ranges.generate_range() に移動されました (GH 24157)。

  • DataFrame.loc() または Series.loc() がリストのようなインデクサーと欠損ラベルを持つ場合、再インデックス化しなくなりました (GH 17295)。

  • DataFrame.to_excel() および Series.to_excel() は、存在しない列がある場合でも再インデックス化しなくなりました (GH 17295)。

  • concat() から以前非推奨だったキーワード「join_axes」が削除されました。代わりに、結果に対して reindex_like を使用してください (GH 22318)。

  • DataFrame.sort_index() から、以前非推奨であったキーワード「by」が削除されました。代わりに DataFrame.sort_values() を使用してください (GH 10726)。

  • DataFrame.aggregate()Series.aggregate()core.groupby.DataFrameGroupBy.aggregate()core.groupby.SeriesGroupBy.aggregate()core.window.rolling.Rolling.aggregate() でのネストされた名前変更のサポートが削除されました (GH 18529)。

  • datetime64 データを TimedeltaIndex に、または timedelta64 データを DatetimeIndex に渡すと TypeError が発生するようになりました (GH 23539GH 23937)。

  • DatetimeIndex とタイムゾーンに int64 値を渡すと、値は指定されたタイムゾーンの現地時刻ではなく、UTC のナノ秒タイムスタンプとして解釈されるようになりました (GH 24559)。

  • DataFrame.groupby() に渡されるタプルは、単一のキーとしてのみ扱われるようになりました (GH 18314)。

  • Index.contains が削除されました。代わりに key in index を使用してください (GH 30103)。

  •  int または整数配列の加減算は、TimestampDatetimeIndexTimedeltaIndex では許可されなくなりました。obj + n の代わりに obj + n * obj.freq を使用してください (GH 22535)。

  • Series.ptp を削除しました (GH 21614)。

  • Series.from_array を削除しました (GH 18258)。

  • DataFrame.from_items を削除しました (GH 18458)。

  • DataFrame.as_matrixSeries.as_matrix を削除しました (GH 18458)。

  • Series.asobject を削除しました (GH 18477)。

  • DataFrame.as_blocksSeries.as_blocksDataFrame.blocksSeries.blocks を削除しました (GH 17656)。

  • pandas.Series.str.cat() は、join='left' を使用して、デフォルトで others を揃えるようになりました (GH 27611)。

  • pandas.Series.str.cat() は、リストライク*内*のリストライクを受け入れなくなりました (GH 27611)。

  • Series.where()Categorical dtype (または DataFrame.where()Categorical 列) で使用する場合、新しいカテゴリの設定は許可されなくなりました (GH 24114)。

  • 以前非推奨だった「start」、「end」、「periods」キーワードを DatetimeIndexTimedeltaIndex、および PeriodIndex コンストラクタから削除しました。date_range()timedelta_range()、および period_range() を使用してください (GH 23919)。

  • 以前非推奨だった「verify_integrity」キーワードを DatetimeIndex および TimedeltaIndex コンストラクタから削除しました (GH 23919)。

  • 以前非推奨だった「fastpath」キーワードを pandas.core.internals.blocks.make_block から削除しました (GH 19265)。

  • 以前非推奨だった「dtype」キーワードを Block.make_block_same_class() から削除しました (GH 19434)。

  • ExtensionArray._formatting_values を削除しました。代わりに ExtensionArray._formatter を使用してください (GH 23601)。

  • MultiIndex.to_hierarchical を削除しました (GH 21613)。

  • MultiIndex.labels を削除しました。代わりに MultiIndex.codes を使用してください (GH 23752)。

  • 以前非推奨だった「labels」キーワードを MultiIndex コンストラクタから削除しました。代わりに「codes」を使用してください (GH 23752)。

  • MultiIndex.set_labels を削除しました。代わりに MultiIndex.set_codes() を使用してください (GH 23752)。

  • 以前非推奨だった「labels」キーワードを MultiIndex.set_codes()MultiIndex.copy()MultiIndex.drop() から削除しました。代わりに「codes」を使用してください (GH 23752)。

  • レガシーHDF5形式のサポートを削除しました (GH 29787)。

  • dtypeエイリアス (例: 'datetime64[ns, UTC]') を DatetimeTZDtype に渡すことはできなくなりました。代わりに DatetimeTZDtype.construct_from_string() を使用してください (GH 23990)。

  • 以前非推奨だった「skip_footer」キーワードを read_excel() から削除しました。代わりに「skipfooter」を使用してください (GH 18836)。

  • read_excel() は、パラメータ usecols に整数値を受け入れなくなりました。代わりに、0 から usecols までの整数リストを渡してください (GH 23635)。

  • 以前非推奨だった「convert_datetime64」キーワードを DataFrame.to_records() から削除しました (GH 18902)。

  • IntervalIndex.from_intervals は、IntervalIndex コンストラクタに移行するため削除しました (GH 19263)。

  • DatetimeIndex.to_series() のデフォルトの「keep_tz」引数を None から True に変更しました (GH 23739)。

  • api.types.is_period および api.types.is_datetimetz を削除しました (GH 23917)。

  • pandasの0.16バージョン以前で作成された Categorical インスタンスを含むpickleを読み取る機能が削除されました (GH 27538)。

  • pandas.tseries.plotting.tsplot を削除しました (GH 18627)。

  • 以前非推奨だった「reduce」および「broadcast」キーワードを DataFrame.apply() から削除しました (GH 18577)。

  • 以前非推奨だった pandas._testingassert_raises_regex 関数を削除しました (GH 29174)。

  • 以前非推奨だった pandas.core.indexes.frozenFrozenNDArray クラスを削除しました (GH 29335)。

  • 以前非推奨だった「nthreads」キーワードを read_feather() から削除しました。代わりに「use_threads」を使用してください (GH 23053)。

  • Index.is_lexsorted_for_tuple を削除しました (GH 29305)。

  • DataFrame.aggregate()Series.aggregate()core.groupby.DataFrameGroupBy.aggregate()core.groupby.SeriesGroupBy.aggregate()core.window.rolling.Rolling.aggregate() でのネストされた名前変更のサポートを削除しました (GH 29608)。

  • Series.valid を削除しました。代わりに Series.dropna() を使用してください (GH 18800)。

  • DataFrame.is_copySeries.is_copy を削除しました (GH 18812)。

  • DataFrame.get_ftype_countsSeries.get_ftype_counts を削除しました (GH 18243)。

  • DataFrame.ftypesSeries.ftypesSeries.ftype を削除しました (GH 26744)。

  • Index.get_duplicates を削除しました。代わりに idx[idx.duplicated()].unique() を使用してください (GH 20239)。

  • Series.clip_upperSeries.clip_lowerDataFrame.clip_upperDataFrame.clip_lower を削除しました (GH 24203)。

  • DatetimeIndex.freqTimedeltaIndex.freq、または PeriodIndex.freq を変更する機能を削除しました (GH 20772)。

  • DatetimeIndex.offset を削除しました (GH 20730)。

  • DatetimeIndex.asobjectTimedeltaIndex.asobjectPeriodIndex.asobject を削除しました。代わりに astype(object) を使用してください (GH 29801)。

  • 以前非推奨だった「order」キーワードを factorize() から削除しました (GH 19751)。

  • 以前非推奨だった「encoding」キーワードを read_stata() および DataFrame.to_stata() から削除しました (GH 21400)。

  • concat() のデフォルトの「sort」引数を None から False に変更しました (GH 20613)。

  • 以前非推奨だった「raise_conflict」キーワードを DataFrame.update() から削除しました。代わりに「errors」を使用してください (GH 23585)。

  • 以前非推奨だった「n」キーワードを DatetimeIndex.shift()TimedeltaIndex.shift()PeriodIndex.shift() から削除しました。代わりに「periods」を使用してください (GH 22458)。

  • 以前非推奨だった「how」、「fill_method」、「limit」キーワードを DataFrame.resample() から削除しました (GH 30139)。

  • timedelta64[ns] dtype を持つ Series.fillna() または DataFrame.fillna() に整数を渡すと TypeError が発生するようになりました (GH 24694)。

  • DataFrame.dropna() に複数の軸を渡すことはサポートされなくなりました (GH 20995)。

  • Series.nonzero を削除しました。代わりに to_numpy().nonzero() を使用してください (GH 24048)。

  • 浮動小数点dtypeの codesCategorical.from_codes() に渡すことはサポートされなくなりました。代わりに codes.astype(np.int64) を渡してください (GH 21775)。

  • 以前非推奨だった「pat」キーワードを Series.str.partition() および Series.str.rpartition() から削除しました。代わりに「sep」を使用してください (GH 23767)。

  • Series.put を削除しました (GH 27106)。

  • Series.realSeries.imag を削除しました (GH 27106)。

  • Series.to_denseDataFrame.to_dense を削除しました (GH 26684)。

  • Index.dtype_str を削除しました。代わりに str(index.dtype) を使用してください (GH 27106)。

  • Categorical.ravel() は、ndarray ではなく Categorical を返すようになりました (GH 27199)。

  • Numpyのufuncs (例: np.subtract.outer) が Series オブジェクトに作用する「outer」メソッドはサポートされなくなり、NotImplementedError を発生させます (GH 27198)。

  • Series.get_dtype_counts および DataFrame.get_dtype_counts を削除しました (GH 27145)。

  • Categorical.take() のデフォルトの「fill_value」引数を True から False に変更しました (GH 20841)。

  • Series.rolling().apply()DataFrame.rolling().apply()Series.expanding().apply()、および DataFrame.expanding().apply()raw 引数のデフォルト値を None から False に変更しました (GH 20584)。

  • Series.argmin() および Series.argmax() の非推奨の動作を削除しました。以前の動作については、Series.idxmin() および Series.idxmax() を使用してください (GH 16955)。

  • tz 引数を使用して、タイムゾーン対応の datetime.datetime または TimestampTimestamp コンストラクタに渡すと、ValueError が発生するようになりました (GH 23621)。

  • Series.baseIndex.baseCategorical.baseSeries.flagsIndex.flagsPeriodArray.flagsSeries.stridesIndex.stridesSeries.itemsizeIndex.itemsizeSeries.dataIndex.data を削除しました (GH 20721)。

  • Timedelta.resolution() を標準ライブラリの datetime.timedelta.resolution の動作と一致するように変更しました。以前の動作については、Timedelta.resolution_string() を使用してください (GH 26839)。

  • Timestamp.weekday_nameDatetimeIndex.weekday_name、および Series.dt.weekday_name を削除しました (GH 18164)。

  • 以前非推奨だった「errors」キーワードを Timestamp.tz_localize()DatetimeIndex.tz_localize()、および Series.tz_localize() から削除しました (GH 22644)。

  • CategoricalDtype のデフォルトの「ordered」引数を None から False に変更しました (GH 26336)。

  • Series.set_axis() および DataFrame.set_axis() は、最初の引数として「labels」を、オプションの名前付きパラメータとして「axis」を要求するようになりました (GH 30089)。

  • to_msgpackread_msgpackDataFrame.to_msgpackSeries.to_msgpack を削除しました (GH 27103)。

  • Series.compress を削除しました (GH 21930)。

  • 以前非推奨だった「fill_value」キーワードを Categorical.fillna() から削除しました。代わりに「value」を使用してください (GH 19269)。

  • 以前非推奨だった「data」キーワードを andrews_curves() から削除しました。代わりに「frame」を使用してください (GH 6956)。

  • 以前非推奨だった「data」キーワードを parallel_coordinates() から削除しました。代わりに「frame」を使用してください (GH 6956)。

  • 以前非推奨だった「colors」キーワードを parallel_coordinates() から削除しました。代わりに「color」を使用してください (GH 6956)。

  • 以前非推奨だった「verbose」および「private_key」キーワードを read_gbq() から削除しました (GH 30200)。

  • タイムゾーン対応の Series および DatetimeIndex に対して np.array および np.asarray を呼び出すと、タイムゾーン対応の Timestamp のオブジェクト配列が返されるようになりました (GH 24596)。

パフォーマンス改善#

  • DataFrame の算術演算とスカラーとの比較演算のパフォーマンスが向上しました (GH 24990, GH 29853)。

  • 一意でない IntervalIndex を使用したインデックス作成のパフォーマンスが向上しました (GH 27489)。

  • MultiIndex.is_monotonic のパフォーマンスが向上しました (GH 27495)。

  • binsIntervalIndex の場合、cut() のパフォーマンスが向上しました (GH 27668)。

  • range を使用して DataFrame を初期化する際のパフォーマンスが向上しました (GH 30171)。

  • method"spearman" の場合、DataFrame.corr() のパフォーマンスが向上しました (GH 28139)。

  • 置き換える値のリストが提供された場合、DataFrame.replace() のパフォーマンスが向上しました (GH 28099)。

  • ループを反復処理する代わりにベクトル化を使用することで、DataFrame.select_dtypes() のパフォーマンスが向上しました (GH 28317)。

  • Categorical.searchsorted() および CategoricalIndex.searchsorted() のパフォーマンスが向上しました (GH 28795)。

  • Categorical とスカラーを比較する際、スカラーがカテゴリに見つからない場合のパフォーマンスが向上しました (GH 29750)。

  • Categorical の値が、特定のスカラーと同じ、大きい、または大きいかどうかのチェックのパフォーマンスが向上しました。この改善は、Categorical がスカラーより小さい、または小さいか等しいかどうかをチェックする場合には存在しません (GH 29820)。

  • Index.equals() および MultiIndex.equals() のパフォーマンスが向上しました (GH 29134)。

  • skipnaTrue の場合、infer_dtype() のパフォーマンスが向上しました (GH 28814)。

バグ修正#

カテゴリカル#

  • fillna() が、値がカテゴリの値でない場合に正しい ValueError メッセージを発生させることをアサートするテストを追加しました (GH 13628)。

  • Categorical.astype() で、NaN 値がintにキャストされる際に誤って処理されていたバグを修正しました (GH 28406)。

  • DataFrame.reindex()CategoricalIndex で使用すると、ターゲットに重複が含まれている場合に失敗し、ソースに重複が含まれている場合には失敗しないというバグがありました (GH 28107)。

  • Categorical.astype() が拡張dtypeへのキャストを許可しないバグを修正しました (GH 28668)。

  • merge() がカテゴリカルおよび拡張dtypeの列で結合できないバグを修正しました (GH 28668)。

  • Categorical.searchsorted() および CategoricalIndex.searchsorted() が順序付けされていないカテゴリでも機能するようになりました (GH 21667)。

  • DataFrame.to_parquet() または read_parquet() を使用してparquetにラウンドトリップする際に、文字列型のCategorical dtypeが保持されることをアサートするテストを追加しました (GH 27955)。

  • Categorical.remove_categories() のエラーメッセージを変更し、無効な削除を常にセットとして表示するようにしました (GH 28669)。

  • 日付型dtypedの Series の日付アクセサを使用した場合、str.() / dt.() をその型の Series で使用した場合と同じ型のオブジェクトが返されませんでした。例えば、重複エントリを持つ CategoricalSeries.dt.tz_localize() にアクセスした場合、アクセサが重複をスキップしていました (GH 27952)。

  • DataFrame.replace() および Series.replace() がカテゴリカルデータで誤った結果を返すバグを修正しました (GH 26988)。

  • 空のCategoricalで Categorical.min() または Categorical.max() を呼び出すとnumpy例外が発生するバグを修正しました (GH 30227)。

  • 次のメソッドは、groupby(..., observed=False) を介して呼び出された場合でも、未観測のカテゴリの値を正しく出力するようになりました (GH 17605)。 * core.groupby.SeriesGroupBy.count() * core.groupby.SeriesGroupBy.size() * core.groupby.SeriesGroupBy.nunique() * core.groupby.SeriesGroupBy.nth()

日付時刻ライク#

  • Series.__setitem__() で、datetime64 dtypeの Series に挿入する際に、np.timedelta64("NaT")np.datetime64("NaT") に誤ってキャストされていたバグを修正しました (GH 27311)。

  • 基となるデータが読み取り専用の場合の Series.dt() プロパティルックアップのバグを修正しました (GH 27529)。

  • HDFStore.__getitem__ で、Python 2で作成されたtz属性が誤って読み取られていたバグを修正しました (GH 26443)。

  • to_datetime() で、エラー=”coerce”を指定して不正な形式の str の配列を渡すと、誤って ValueError が発生する可能性があったバグを修正しました (GH 28299)。

  • core.groupby.SeriesGroupBy.nunique() で、NaT 値が一意な値の数と干渉していたバグを修正しました (GH 27951)。

  • Timestamp から np.datetime64 オブジェクトを減算すると、誤って TypeError が発生していたバグを修正しました (GH 28286)。

  • 整数または整数dtypeの配列を Timestamp と加減算すると、ValueError ではなく NullFrequencyError が発生するようになりました (GH 28268)。

  • 整数dtypeの Series および DataFramenp.datetime64 オブジェクトの加減算時に TypeError を発生させなかったバグを修正しました (GH 28080)。

  • Series.astype()Index.astype()、および DataFrame.astype() が、整数dtypeへのキャスト時に NaT を処理できなかったバグを修正しました (GH 28492)。

  • Week with weekday で、無効な型を加減算する際に TypeError ではなく AttributeError が誤って発生していたバグを修正しました (GH 28530)。

  • 'timedelta64[ns]' dtype を持つ Series と演算する際の DataFrame 算術演算のバグを修正しました (GH 28049)。

  • core.groupby.generic.SeriesGroupBy.apply() で、元のDataFrameの列がdatetimeであり、列ラベルが標準の整数でない場合に ValueError が発生するバグを修正しました (GH 28247)。

  • pandas._config.localization.get_locales() で、locales -a がロケールリストをwindows-1252としてエンコードするバグを修正しました (GH 23638, GH 24760, GH 27368)。

  • Series.var()timedelta64[ns] dtype で呼び出された場合に TypeError を発生させなかったバグを修正しました (GH 28289)。

  • DatetimeIndex.strftime() および Series.dt.strftime() で、NaTnp.nan ではなく文字列 'NaT' に変換されていたバグを修正しました (GH 29578)。

  • 誤った長さのブールマスクで datetime-like 配列をマスキングすると、IndexError が発生しなかったバグを修正しました (GH 30308)。

  • Timestamp.resolution がクラス属性ではなくプロパティであったバグを修正しました (GH 29910)。

  • pandas.to_datetime() で、None で呼び出された場合に NaT を返す代わりに TypeError が発生していたバグを修正しました (GH 30011)。

  • pandas.to_datetime() で、cache=True (デフォルト) を使用した場合に deque オブジェクトで失敗するバグを修正しました (GH 29403)。

  • datetime64 または timedelta64 dtype の Series.item()DatetimeIndex.item()、および TimedeltaIndex.item() が、Timestamp または Timedelta ではなく整数を返していたバグを修正しました (GH 30175)。

  • DatetimeIndex の加算で、非最適化された DateOffset を加算する際にタイムゾーン情報が誤って失われていたバグを修正しました (GH 30336)。

  • DataFrame.drop() で、DatetimeIndexから存在しない値を削除しようとすると、混乱を招くエラーメッセージが表示されていたバグを修正しました (GH 30399)。

  • DataFrame.append() で、新しいデータのタイムゾーン対応が削除されていたバグを修正しました (GH 30238)。

  • Series.cummin() および Series.cummax() で、タイムゾーン対応のdtypeを持つ場合にタイムゾーンが誤って削除されていたバグを修正しました (GH 15553)。

  • DatetimeArrayTimedeltaArray、および PeriodArray で、インプレース加減算が実際にはインプレースで動作しなかったバグを修正しました (GH 24115)。

  • pandas.to_datetime() で、IntegerArray を格納する Series とともに呼び出された場合に、Series を返す代わりに TypeError が発生していたバグを修正しました (GH 30050)。

  • date_range() で、カスタム営業時間を freq として指定し、periods の数が与えられた場合のバグを修正しました (GH 30593)。

  • PeriodIndex の比較で、整数が誤って Period オブジェクトにキャストされ、Period の比較動作と一貫性がなかったバグを修正しました (GH 30722)。

  • DatetimeIndex.insert() で、タイムゾーン対応の Timestamp をタイムゾーン非対応の DatetimeIndex に挿入しようとすると、TypeError ではなく ValueError が発生していたバグを修正しました (GH 30806)。

Timedelta#

  • np.datetime64 オブジェクトから TimedeltaIndex または TimedeltaArray を減算する際のバグを修正しました (GH 29558)。

タイムゾーン#

数値#

  • 列がゼロの DataFrameDataFrame.quantile() が誤って例外を発生させていたバグを修正しました (GH 23925)。

  • オブジェクトdtypeと complex エントリを持つ DataFrame の柔軟な不等式比較メソッド (DataFrame.lt()DataFrame.le()DataFrame.gt()DataFrame.ge()) が、Series の対応するものと同様に TypeError を発生させなかったバグを修正しました (GH 28079)。

  • DataFrame の論理演算 (&|^) が、NA値を埋めることで Series の動作と一致しなかったバグを修正しました (GH 28741)。

  • DataFrame.interpolate() で、軸を名前で指定すると、変数が割り当てられる前に参照されるバグを修正しました (GH 29142)。

  • Series.var() で、NULL可能な整数dtypeのシリーズでddof引数が渡されなかった場合に正しい値が計算されなかったバグを修正しました (GH 29128)。

  • frac > 1 と replace = False を使用した場合のエラーメッセージを改善しました (GH 27451)。

  • 数値インデックスのバグにより、Int64IndexUInt64Index、または Float64Index を無効なdtype (例: datetime-like) でインスタンス化できる可能性があったバグを修正しました (GH 29539)。

  • UInt64Index で、np.uint64 範囲の値を持つリストから構築する際に精度が失われるバグを修正しました (GH 29526)。

  • NumericIndex 構築のバグにより、np.uint64 範囲の整数を使用してインデックスを作成した場合にインデックス作成が失敗する原因となっていたバグを修正しました (GH 28023)。

  • NumericIndex 構築のバグにより、np.uint64 範囲の整数を使用して DataFrame をインデックス作成した場合に、UInt64IndexFloat64Index にキャストされていたバグを修正しました (GH 28279)。

  • Series.interpolate() で、`index` メソッドをソートされていないインデックスで使用すると、以前は誤った結果が返されていたバグを修正しました (GH 21037)。

  • DataFrame.round() で、IntervalIndex 列の CategoricalIndex を持つ DataFrame が誤って TypeError を発生させていたバグを修正しました (GH 30063)。

  • インデックスが重複している場合に、Series.pct_change() および DataFrame.pct_change() のバグを修正しました (GH 30463)。

  • DataFrame の累積演算 (例: cumsum, cummax) が誤ってobject-dtypeにキャストされていたバグを修正しました (GH 19296)。

  • diff が拡張型のdtypeを失うバグを修正しました (GH 30889)。

  • DataFrame.diff で、列の1つがNULL可能な整数dtypeであった場合に IndexError が発生していたバグを修正しました (GH 30967)。

変換#

文字列#

  • 空の SeriesSeries.str.isalnum() (および他の「ismethods」) を呼び出すと、bool ではなく object dtypeが返されていたバグを修正しました (GH 29624)。

Interval#

インデックス付け#

  • 逆スライサーを使った代入におけるバグ(GH 26939)。

  • DataFrame.explode()において、インデックスに重複がある場合にフレームが複製されるバグ(GH 28010)。

  • PeriodIndex()Periodを含む別の種類のインデックスで再インデックス付けする際のバグ(GH 28323)(GH 28337)。

  • .locを使用したnumpyの非ナノ秒日付時刻型による列の代入を修正(GH 27395)。

  • Float64Index.astype()において、整数dtypeにキャストする際にnp.infが適切に処理されないバグ(GH 28475)。

  • Index.union()は、左側に重複が含まれる場合に失敗する可能性がありました(GH 28257)。

  • インデックスが文字列以外のカテゴリを持つCategoricalIndexである場合に.locでインデックス付けが機能しないバグ(GH 17569GH 30225)。

  • Index.get_indexer_non_unique()は、文字列インデックス内の整数を検索する場合など、一部のケースでTypeErrorで失敗する可能性がありました(GH 28257)。

  • Float64Index.get_loc()KeyErrorの代わりに誤ってTypeErrorを発生させるバグ(GH 29189)。

  • 1行のDataFrameでCategorical値を設定する際に、DataFrame.loc()のdtypeが不正になるバグ(GH 25495)。

  • MultiIndex.get_loc()が、入力に欠損値が含まれる場合に欠損値を見つけられないバグ(GH 19132)。

  • Series.__setitem__()において、新しいデータの長さがTrue値の数と一致し、新しいデータがSeriesまたはnp.arrayでない場合に、ブールインデクサーで値が誤って代入されるバグ(GH 30567)。

  • PeriodIndexでインデックス付けする際に、年を表す整数を誤って受け入れるバグ。代わりにser.loc[2007]ではなく、例えばser.loc["2007"]を使用してください(GH 30763)。

欠損値#

MultiIndex#

  • MultiIndexのコンストラクターは、verify_integrityパラメータがTrue(デフォルト)の場合、与えられたsortorderが実際のlexsort_depthと互換性があることを検証します(GH 28735)。

  • SeriesおよびMultiIndexの.dropは、指定されたレベルにラベルがない場合に例外を発生させます(GH 8594)。

IO#

  • read_csv()は、Python csvエンジンを使用する際にバイナリモードのファイルバッファを受け入れるようになりました(GH 23779)。

  • DataFrame.to_json()において、Tupleを列またはインデックス値として使用し、orient="columns"またはorient="index"を使用した場合に、不正なJSONが生成されるバグ(GH 20500)。

  • 無限大の解析を改善しました。read_csv()は、Infinity+Infinity-Infinityを浮動小数点値として解釈するようになりました(GH 10065)。

  • DataFrame.to_csv()において、na_repの長さがテキスト入力データよりも短い場合に値が切り捨てられるバグ(GH 25099)。

  • DataFrame.to_string()において、フルコンテンツを出力する代わりに表示オプションを使用して値が切り捨てられるバグ(GH 9784)。

  • DataFrame.to_json()において、日付時刻列ラベルがorient="table"でISO形式で出力されないバグ(GH 28130)。

  • DataFrame.to_parquet()において、ファイルがまだ存在しない場合にengine='fastparquet'でGCSに書き込むと失敗するバグ(GH 28326)。

  • read_hdf()が例外発生時に開いていないストアを閉じるバグ(GH 28699)。

  • DataFrame.read_json()において、orient="index"を使用した場合に順序が維持されないバグ(GH 28557)。

  • DataFrame.to_html()において、formatters引数の長さが検証されないバグ(GH 28469)。

  • DataFrame.read_excel()において、engine='ods'sheet_name引数が存在しないシートを参照した場合のバグ(GH 27676)。

  • pandas.io.formats.style.Styler()の浮動小数点値の書式設定が小数点を正しく表示しないバグ(GH 13257)。

  • DataFrame.to_html()において、formatters=<list>max_colsを同時に使用した場合のバグ(GH 25955)。

  • Styler.background_gradient()がdtype Int64で機能しないバグ(GH 28869)。

  • DataFrame.to_clipboard()がipythonで確実に機能しないバグ(GH 22707)。

  • read_json()において、デフォルトエンコーディングがutf-8に設定されないバグ(GH 29565)。

  • PythonParserにおいて、decimalフィールドを処理する際にstrとbytesが混在するバグ(GH 29650)。

  • read_gbq()は、データのダウンロード中にプログレスバーを表示するためにprogress_bar_typeを受け入れるようになりました(GH 29857)。

  • pandas.io.json.json_normalize()において、record_pathで指定された場所の欠損値がTypeErrorを発生させるバグ(GH 30148)。

  • read_excel()はバイナリデータを受け入れるようになりました(GH 15914)。

  • read_csv()において、Cエンジンでのエンコーディング処理が文字列utf-16のみに限定されていたバグ(GH 24130)。

プロット#

GroupBy/resample/rolling#

再整形#

  • DataFrame.apply()において、空のDataFrameで不正な出力が発生するバグ(GH 28202GH 21959)。

  • DataFrame.stack()が、MultiIndexを作成する際に非ユニークなインデックスを正しく処理しないバグ(GH 28301)。

  • pivot_table()が、margins=Trueおよびaggfunc='mean'の場合に正しい型floatを返さないバグ(GH 24893)。

  • merge_asof()が、tolerance kwargにdatetime.timedeltaを使用できないバグ(GH 28098)。

  • merge()が、MultiIndexでサフィックスを正しく追加しないバグ(GH 28518)。

  • qcut()およびcut()は、ブール入力を処理するようになりました(GH 20303)。

  • merge_asof()で公差値を使用する場合に、すべての整数dtypeが使用できるように修正。以前は、int64型以外のすべての型で誤ったMergeErrorが発生していました(GH 28870)。

  • get_dummies()において、columnsがリスト状の値でない場合のより良いエラーメッセージ(GH 28383)。

  • Index.join()において、MultiIndex名順序の不一致により無限再帰エラーが発生するバグ(GH 25760GH 28956)。

  • Series.pct_change()において、固定された頻度を指定するとValueErrorがスローされるバグ(GH 28664)。

  • DataFrame.equals()が、2つのDataFrameが異なる順序で同じ列を持つ場合に誤ってTrueを返すバグ(GH 28839)。

  • DataFrame.replace()において、非数値の置換子のdtypeが尊重されないバグ(GH 26632)。

  • melt()において、id_varsまたはvalue_varsに混合文字列と数値を提供した場合に、誤ってValueErrorが発生するバグ(GH 29718)。

  • 各列が同じ拡張dtypeであるDataFrameを転置する際に、dtypeが保持されるようになりました(GH 30091)。

  • merge_asof()において、tz対応のleft_indexとtz対応の列に対するright_onをマージするバグ(GH 29864)。

  • cut()およびqcut()において、labels=Trueの場合のエラーメッセージとドキュメンテーションを改善しました(GH 13318)。

  • DataFrame.unstack()に、レベルのリストを持つfill_naパラメータが欠落しているバグ(GH 30740)。

スパース#

  • SparseDataFrameの算術演算において、入力が誤ってfloatにキャストされるバグ(GH 28107)。

  • DataFrame.sparseが、アクセサーではなくsparseという名前の列があった場合にSeriesを返すバグ(GH 30758)。

  • ブールdtypeのSparseArrayでのoperator.xor()を修正しました。オブジェクトdtypeではなく、スパースな結果を返すようになりました(GH 31025)。

ExtensionArray#

  • arrays.PandasArrayにおいて、スカラー文字列を設定する際のバグ(GH 28118GH 28150)。

  • null許容整数が文字列と比較できないバグ(GH 28930)。

  • DataFrameコンストラクターが、リスト状のデータと指定されたdtypeValueErrorを発生させるバグ(GH 30280)。

その他#

  • set_option()を使用してdisplay.precisiondisplay.max_rows、またはdisplay.max_columnsNoneまたは正の整数以外のものに設定しようとすると、ValueErrorが発生するようになりました(GH 23348)。

  • DataFrame.replace()でネストされた辞書に重複するキーを指定しても、エラーは発生しなくなり、フラットな辞書と同じ動作になりました(GH 27660)。

  • DataFrame.to_csv()およびSeries.to_csv()は、compression引数として辞書を受け入れるようになりました。キー'method'は圧縮方法であり、圧縮方法が'zip'の場合は他のキーが追加の圧縮オプションとなります(GH 26023)。

  • Series.diff()において、ブールシリーズが誤ってTypeErrorを発生させるバグ(GH 17294)。

  • Series.append()は、Seriesのタプルが渡された場合にTypeErrorを発生させなくなりました(GH 28410)。

  • 0次元配列でpandas.libs._json.encode()を呼び出した際の破損したエラーメッセージを修正しました(GH 18878)。

  • DataFrame.query()およびDataFrame.eval()でのバックティック引用は、数字で始まる名前、Pythonのキーワード、または単一文字演算子を使用する名前のような無効な識別子を使用できるようになりました(GH 27017)。

  • pd.core.util.hashing.hash_pandas_objectにおいて、タプルを含む配列がハッシュ不可能として誤って扱われるバグ(GH 28969)。

  • DataFrame.append()において、空のリストで追加する際にIndexErrorが発生するバグ(GH 28769)。

  • AbstractHolidayCalendarが2030年以降の年に対して正しい結果を返すように修正しました(現在は2200年まで対応)(GH 27790)。

  • IntegerArrayが、0で除算する操作でNaNではなくinfを返すバグを修正しました(GH 27398)。

  • IntegerArraypow演算において、もう一方の値が0または1の場合のバグを修正しました(GH 29997)。

  • Series.count()が、use_inf_as_naが有効な場合にエラーを発生させるバグ(GH 29478)。

  • Indexにおいて、ハッシュ不可能な名前がTypeErrorを発生させずに設定されるバグ(GH 29069)。

  • DataFrameコンストラクターが、2次元ndarrayと拡張dtypeを渡された場合のバグ(GH 12513)。

  • DataFrame.to_csv()において、dtype="string"のシリーズとna_repが指定された場合に、na_repが2文字に切り捨てられるバグ(GH 29975)。

  • DataFrame.itertuples()が、255列のデータフレームに対してnamedtupleを使用できるかどうかを誤って判断するバグ(GH 28282)。

  • ExtensionArrayの実装に対して、testing.assert_series_equal()でネストされたNumPy object配列を処理するようにしました(GH 30841)。

  • Indexコンストラクターが、2次元入力配列を誤って許可するバグ(GH 13601GH 27125)。

貢献者#

このリリースには、合計308名の方々がパッチを貢献しました。「+」が付いている方は、今回初めてパッチを貢献されました。

  • Aaditya Panikath +

  • Abdullah İhsan Seçer

  • Abhijeet Krishnan +

  • Adam J. Stewart

  • Adam Klaum +

  • Addison Lynch

  • Aivengoe +

  • Alastair James +

  • アルバート・ビラノバ・デル・モラル

  • Alex Kirko +

  • Alfredo Granja +

  • Allen Downey

  • Alp Arıbal +

  • Andreas Buhr +

  • Andrew Munch +

  • Andy

  • Angela Ambroz +

  • Aniruddha Bhattacharjee +

  • Ankit Dhankhar +

  • Antonio Andraues Jr +

  • Arda Kosar +

  • Asish Mahapatra +

  • Austin Hackett +

  • Avi Kelman +

  • AyowoleT +

  • Bas Nijholt +

  • Ben Thayer

  • Bharat Raghunathan

  • Bhavani Ravi

  • Bhuvana KA +

  • Big Head

  • Blake Hawkins +

  • Bobae Kim +

  • Brett Naul

  • Brian Wignall

  • Bruno P. Kinoshita +

  • Bryant Moscon +

  • Cesar H +

  • Chris Stadler

  • Chris Zimmerman +

  • クリストファー・ウィーラン

  • Clemens Brunner

  • Clemens Tolboom +

  • Connor Charles +

  • Daniel Hähnke +

  • ダニエル・サクストン

  • Darin Plutchok +

  • Dave Hughes

  • David Stansby

  • DavidRosen +

  • Dean +

  • Deepan Das +

  • Deepyaman Datta

  • DorAmram +

  • Dorothy Kabarozi +

  • Drew Heenan +

  • Eliza Mae Saret +

  • Elle +

  • Endre Mark Borza +

  • Eric Brassell +

  • Eric Wong +

  • Eunseop Jeong +

  • Eyden Villanueva +

  • Felix Divo

  • ForTimeBeing +

  • Francesco Truzzi +

  • Gabriel Corona +

  • Gabriel Monteiro +

  • Galuh Sahid +

  • Georgi Baychev +

  • Gina

  • GiuPassarelli +

  • Grigorios Giannakopoulos +

  • Guilherme Leite +

  • Guilherme Salomé +

  • Gyeongjae Choi +

  • Harshavardhan Bachina +

  • Harutaka Kawamura +

  • Hassan Kibirige

  • Hielke Walinga

  • Hubert

  • Hugh Kelley +

  • Ian Eaves +

  • Ignacio Santolin +

  • Igor Filippov +

  • アーブ・ラスティッグ

  • Isaac Virshup +

  • Ivan Bessarabov +

  • JMBurley +

  • Jack Bicknell +

  • Jacob Buckheit +

  • Jan Koch

  • Jan Pipek +

  • Jan Škoda +

  • Jan-Philip Gehrcke

  • Jasper J.F. van den Bosch +

  • Javad +

  • ジェフ・リーバック

  • ジェレミー・シェンデル

  • Jeroen Kant +

  • Jesse Pardue +

  • Jethro Cao +

  • Jiang Yue

  • Jiaxiang +

  • Jihyung Moon +

  • Jimmy Callin

  • Jinyang Zhou +

  • Joao Victor Martinelli +

  • Joaq Almirante +

  • John G Evans +

  • John Ward +

  • Jonathan Larkin +

  • Joris Van den Bossche

  • Josh Dimarsky +

  • Joshua Smith +

  • Josiah Baker +

  • Julia Signell +

  • Jung Dong Ho +

  • Justin Cole +

  • ジャスティン・ジェン

  • Kaiqi Dong

  • Karthigeyan +

  • Katherine Younglove +

  • Katrin Leinweber

  • Kee Chong Tan +

  • Keith Kraus +

  • Kevin Nguyen +

  • ケビン・シェパード

  • Kisekka David +

  • Koushik +

  • Kyle Boone +

  • Kyle McCahill +

  • Laura Collard, PhD +

  • LiuSeeker +

  • Louis Huynh +

  • Lucas Scarlato Astur +

  • Luiz Gustavo +

  • Luke +

  • Luke Shepard +

  • MKhalusova +

  • Mabel Villalba

  • Maciej J +

  • Mak Sze Chun

  • Manu NALEPA +

  • Marc

  • Marc Garcia

  • Marco Gorelli +

  • Marco Neumann +

  • Martin Winkel +

  • Martina G. Vilas +

  • Mateusz +

  • Matthew Roeschke

  • Matthew Tan +

  • Max Bolingbroke

  • Max Chen +

  • MeeseeksMachine

  • Miguel +

  • MinGyo Jung +

  • Mohamed Amine ZGHAL +

  • Mohit Anand +

  • MomIsBestFriend +

  • Naomi Bonnin +

  • Nathan Abel +

  • Nico Cernek +

  • Nigel Markey +

  • Noritada Kobayashi +

  • Oktay Sabak +

  • Oliver Hofkens +

  • Oluokun Adedayo +

  • Osman +

  • Oğuzhan Öğreden +

  • Pandas Development Team +

  • Patrik Hlobil +

  • Paul Lee +

  • Paul Siegel +

  • Petr Baev +

  • ピエトロ・バティストン

  • Prakhar Pandey +

  • Puneeth K +

  • Raghav +

  • Rajat +

  • Rajhans Jadhao +

  • Rajiv Bharadwaj +

  • Rik-de-Kort +

  • Roei.r

  • Rohit Sanjay +

  • Ronan Lamy +

  • Roshni +

  • Roymprog +

  • Rushabh Vasani +

  • Ryan Grout +

  • Ryan Nazareth

  • Samesh Lakhotia +

  • Samuel Sinayoko

  • Samyak Jain +

  • Sarah Donehower +

  • Sarah Masud +

  • Saul Shanabrook +

  • Scott Cole +

  • SdgJlbl +

  • Seb +

  • Sergei Ivko +

  • Shadi Akiki

  • Shorokhov Sergey

  • Siddhesh Poyarekar +

  • Sidharthan Nair +

  • Simon Gibbons

  • Simon Hawkins

  • Simon-Martin Schröder +

  • Sofiane Mahiou +

  • Sourav kumar +

  • Souvik Mandal +

  • Soyoun Kim +

  • Sparkle Russell-Puleri +

  • Srinivas Reddy Thatiparthy (శ్రీనివాస్ రెడ్డి తాటిపర్తి)

  • Stuart Berg +

  • Sumanau Sareen

  • Szymon Bednarek +

  • Tambe Tabitha Achere +

  • Tan Tran

  • Tang Heyi +

  • Tanmay Daripa +

  • Tanya Jain

  • テルジ・ピーターセン

  • Thomas Li +

  • Tirth Jain +

  • Tola A +

  • Tom Augspurger

  • Tommy Lynch +

  • Tomoyuki Suzuki +

  • Tony Lorenzo

  • Unprocessable +

  • Uwe L. Korn

  • Vaibhav Vishal

  • Victoria Zdanovskaya +

  • Vijayant +

  • Vishwak Srinivasan +

  • WANG Aiyong

  • Wenhuan

  • Wes McKinney

  • Will Ayd

  • Will Holmgren

  • ウィリアム・エイド

  • William Blan +

  • Wouter Overmeire

  • Wuraola Oyewusi +

  • YaOzI +

  • Yash Shukla +

  • Yu Wang +

  • Yusei Tahara +

  • alexander135 +

  • alimcmaster1

  • avelineg +

  • bganglia +

  • bolkedebruin

  • bravech +

  • chinhwee +

  • cruzzoe +

  • dalgarno +

  • daniellebrown +

  • danielplawrence

  • est271 +

  • francisco souza +

  • ganevgv +

  • garanews +

  • ジーエフヤング

  • h-vetinari

  • hasnain2808 +

  • ianzur +

  • jalbritt +

  • jbrockmendel

  • jeschwar +

  • jlamborn324 +

  • joy-rosie +

  • kernc

  • killerontherun1

  • krey +

  • lexy-lixinyu +

  • lucyleeow +

  • lukasbk +

  • maheshbapatu +

  • mck619 +

  • nathalier

  • naveenkaushik2504 +

  • nlepleux +

  • nrebena

  • ohad83 +

  • pilkibun

  • pqzx +

  • proost +

  • pv8493013j +

  • qudade +

  • rhstanton +

  • rmunjal29 +

  • sangarshanan +

  • sardonick +

  • saskakarsi +

  • shaido987 +

  • ssikdar1

  • steveayers124 +

  • tadashigaki +

  • timcera +

  • tlaytongoogle +

  • tobycheese

  • tonywu1999 +

  • tsvikas +

  • yogendrasoni +

  • zys5945 +