1.2.0 中的新功能(2020年12月26日)#

这是 pandas 1.2.0 的更改。请参阅 发布 以获取包括其他版本 pandas 的完整更新日志。

警告

用于编写旧样式 .xls Excel 文件的 xlwt 包不再维护。xlrd 包现在仅用于读取旧样式的 .xls 文件。

之前,read_excel() 的默认参数 engine=None 在许多情况下会导致使用 xlrd 引擎,包括新的 Excel 2007+ (.xlsx) 文件。如果安装了 openpyxl ,这些情况现在将默认使用 openpyxl 引擎。更多详情请参见 read_excel() 文档。

因此,强烈建议安装 openpyxl 来读取 Excel 2007+ (.xlsx) 文件。请不要在使用 ``xlrd`` 读取 ``.xlsx`` 文件时报告问题。 这不再受支持,请改用 openpyxl

尝试使用 xlwt 引擎将引发 FutureWarning,除非选项 io.excel.xls.writer 设置为 "xlwt"。虽然此选项现已弃用,并且也会引发 FutureWarning,但它可以全局设置并抑制警告。建议用户使用 openpyxl 引擎来写 .xlsx 文件。

增强功能#

可选地禁止重复标签#

SeriesDataFrame 现在可以使用 allows_duplicate_labels=False 标志创建,以控制索引或列是否可以包含重复标签 (GH 28394)。这可以用来防止意外引入重复标签,这可能会影响下游操作。

默认情况下,允许重复。

In [1]: pd.Series([1, 2], index=['a', 'a'])
Out[1]:
a    1
a    2
Length: 2, dtype: int64

In [2]: pd.Series([1, 2], index=['a', 'a']).set_flags(allows_duplicate_labels=False)
...
DuplicateLabelError: Index has duplicates.
      positions
label
a        [0, 1]

pandas 将在许多操作中传播 allows_duplicate_labels 属性。

In [3]: a = (
   ...:     pd.Series([1, 2], index=['a', 'b'])
   ...:       .set_flags(allows_duplicate_labels=False)
   ...: )

In [4]: a
Out[4]:
a    1
b    2
Length: 2, dtype: int64

# An operation introducing duplicates
In [5]: a.reindex(['a', 'b', 'a'])
...
DuplicateLabelError: Index has duplicates.
      positions
label
a        [0, 2]

[1 rows x 1 columns]

警告

这是一个实验性功能。目前,许多方法未能传播 allows_duplicate_labels 值。在未来的版本中,预计每个接受或返回一个或多个 DataFrame 或 Series 对象的方法都将传播 allows_duplicate_labels

更多信息请参见 重复标签

allows_duplicate_labels 标志存储在新的 DataFrame.flags 属性中。这存储了适用于 pandas 对象 的全局属性。这与 DataFrame.attrs 不同,后者存储适用于数据集的信息。

传递参数给 fsspec 后端#

许多读/写函数已经获得了 storage_options 可选参数,用于将参数字典传递给存储后端。这允许,例如,将凭证传递给 S3 和 GCS 存储。有关可以传递给哪些后端的参数的详细信息,可以在各个存储后端的文档中找到(从 fsspec 文档中详细介绍了 内置实现,并链接到 外部实现)。请参见章节 读取/写入远程文件

GH 35655 添加了对读取 excel 文件的 fsspec 支持(包括 storage_options)。

to_csv 中支持二进制文件句柄#

to_csv() 支持二进制模式下的文件句柄(GH 19827GH 35058),带有 encoding``(:issue:`13068` :issue:`23854`)和 ``compression``(:issue:`22555`)。如果 pandas 无法自动检测文件句柄是在二进制模式还是文本模式下打开的,则需要提供 ``mode="wb"

例如:

In [1]: import io

In [2]: data = pd.DataFrame([0, 1, 2])

In [3]: buffer = io.BytesIO()

In [4]: data.to_csv(buffer, encoding="utf-8", compression="gzip")

to_latex 中支持短标题和表格位置#

DataFrame.to_latex() 现在允许指定一个浮动表格位置 (GH 35281) 和一个短标题 (GH 36267)。

关键词 position 已被添加以设置位置。

In [5]: data = pd.DataFrame({'a': [1, 2], 'b': [3, 4]})

In [6]: table = data.to_latex(position='ht')

In [7]: print(table)
\begin{table}[ht]
\begin{tabular}{lrr}
\toprule
 & a & b \\
\midrule
0 & 1 & 3 \\
1 & 2 & 4 \\
\bottomrule
\end{tabular}
\end{table}

关键词 caption 的使用已经扩展。除了接受单个字符串作为参数外,还可以选择提供一个元组 (full_caption, short_caption) 来添加一个短标题宏。

In [8]: data = pd.DataFrame({'a': [1, 2], 'b': [3, 4]})

In [9]: table = data.to_latex(caption=('the full long caption', 'short caption'))

In [10]: print(table)
\begin{table}
\caption[short caption]{the full long caption}
\begin{tabular}{lrr}
\toprule
 & a & b \\
\midrule
0 & 1 & 3 \\
1 & 2 & 4 \\
\bottomrule
\end{tabular}
\end{table}

read_csvread_table 的默认浮点精度变化#

对于C解析引擎,方法 read_csv()read_table() 以前默认使用一个解析器,该解析器在读取浮点数时对最后一位精度的处理略有不当。选项 floating_precision="high" 一直可用以避免此问题。从本版本开始,默认情况下现在使用更准确的解析器,使 floating_precision=None 对应于高精度解析器,并新增选项 floating_precision="legacy" 以使用旧版解析器。默认使用更高精度解析器的更改不应影响性能。(GH 17154)

实验性的可空浮点数据类型#

我们已经添加了 Float32Dtype / Float64DtypeFloatingArray。这些是专门用于浮点数据的扩展数据类型,可以持有 pd.NA 缺失值指示符 (GH 32265, GH 34307)。

虽然默认的浮点数据类型已经使用 np.nan 支持缺失值,但这些新的数据类型使用 ``pd.NA``(及其相应的行为)作为缺失值指示符,与已经存在的可空 整数布尔 数据类型保持一致。

一个 np.nanpd.NA 行为不同的例子是比较操作:

# the default NumPy float64 dtype
In [11]: s1 = pd.Series([1.5, None])

In [12]: s1
Out[12]: 
0    1.5
1    NaN
dtype: float64

In [13]: s1 > 1
Out[13]: 
0     True
1    False
dtype: bool
# the new nullable float64 dtype
In [14]: s2 = pd.Series([1.5, None], dtype="Float64")

In [15]: s2
Out[15]: 
0     1.5
1    <NA>
dtype: Float64

In [16]: s2 > 1
Out[16]: 
0    True
1    <NA>
dtype: boolean

有关使用 pd.NA 缺失值指示器时的行为的更多详细信息,请参阅 NA 语义 文档部分。

如上所示,可以使用 “Float64” 或 “Float32” 字符串(首字母大写以区别于默认的 “float64” 数据类型)来指定 dtype。或者,您也可以使用 dtype 对象:

In [17]: pd.Series([1.5, None], dtype=pd.Float32Dtype())
Out[17]: 
0     1.5
1    <NA>
dtype: Float32

对现有的整数或布尔可空数据类型进行操作并产生浮点数结果的操作现在也将使用可空的浮点数据类型 (GH 38178)。

警告

实验性:新的浮点数据类型目前是实验性的,它们的行为或API可能会在没有警告的情况下发生变化。特别是关于NaN(与NA缺失值不同)的行为可能会发生变化。

聚合时保留索引/列名#

当使用 concat()DataFrame 构造函数进行聚合时,pandas 现在将尽可能地保留索引和列名 (GH 35847)。在所有输入共享一个公共名称的情况下,该名称将被分配给结果。当输入名称不完全一致时,结果将没有名称。以下是一个保留索引名称的示例:

In [18]: idx = pd.Index(range(5), name='abc')

In [19]: ser = pd.Series(range(5, 10), index=idx)

In [20]: pd.concat({'x': ser[1:], 'y': ser[:-1]}, axis=1)
Out[20]: 
       x    y
abc          
1    6.0  6.0
2    7.0  7.0
3    8.0  8.0
4    9.0  NaN
0    NaN  5.0

对于 MultiIndex 也是如此,但逻辑是按层级分别应用的。

GroupBy 直接支持 EWM 操作#

DataFrameGroupBy 现在直接支持指数加权窗口操作(GH 16037)。

In [21]: df = pd.DataFrame({'A': ['a', 'b', 'a', 'b'], 'B': range(4)})

In [22]: df
Out[22]: 
   A  B
0  a  0
1  b  1
2  a  2
3  b  3

In [23]: df.groupby('A').ewm(com=1.0).mean()
Out[23]: 
            B
A            
a 0  0.000000
  2  1.333333
b 1  1.000000
  3  2.333333

此外,mean 通过 Numba 支持执行,使用 engineengine_kwargs 参数。必须安装 Numba 作为可选依赖项才能使用此功能。

其他增强功能#

值得注意的错误修复#

这些是可能会有显著行为变化的错误修复。

DataFrame 归约的一致性#

DataFrame.any()DataFrame.all()bool_only=True 的情况下,现在基于每一列来决定是否排除 object-dtype 列,而不是检查 所有 object-dtype 列是否可以被视为布尔值。

这防止了在部分列上应用归约可能导致更大的 Series 结果的病态行为。见 (GH 37799)。

In [24]: df = pd.DataFrame({"A": ["foo", "bar"], "B": [True, False]}, dtype=object)

In [25]: df["C"] = pd.Series([True, True])

以前的行为:

In [5]: df.all(bool_only=True)
Out[5]:
C    True
dtype: bool

In [6]: df[["B", "C"]].all(bool_only=True)
Out[6]:
B    False
C    True
dtype: bool

新行为:

In [26]: In [5]: df.all(bool_only=True)
Out[26]: 
C    True
dtype: bool

In [27]: In [6]: df[["B", "C"]].all(bool_only=True)
Out[27]: 
C    True
dtype: bool

其他带有 numeric_only=None 的 DataFrame 缩减操作也将避免这种病态行为 (GH 37827):

In [28]: df = pd.DataFrame({"A": [0, 1, 2], "B": ["a", "b", "c"]}, dtype=object)

以前的行为:

In [3]: df.mean()
Out[3]: Series([], dtype: float64)

In [4]: df[["A"]].mean()
Out[4]:
A    1.0
dtype: float64

新行为:

In [3]: df.mean()
Out[3]:
A    1.0
dtype: float64

In [4]: df[["A"]].mean()
Out[4]:
A    1.0
dtype: float64

此外,使用 numeric_only=None 的 DataFrame 归约现在将与它们的 Series 对应部分保持一致。特别是,对于 Series 方法引发 TypeError 的归约,DataFrame 归约现在将认为该列是非数字的,而不是转换为可能具有不同语义的 NumPy 数组(GH 36076, GH 28949, GH 21020)。

In [29]: ser = pd.Series([0, 1], dtype="category", name="A")

In [30]: df = ser.to_frame()

以前的行为:

In [5]: df.any()
Out[5]:
A    True
dtype: bool

新行为:

In [5]: df.any()
Out[5]: Series([], dtype: bool)

增加 Python 的最小版本#

pandas 1.2.0 支持 Python 3.7.1 及以上版本 (GH 35214)。

增加了依赖项的最小版本#

一些依赖项的最低支持版本已更新(GH 35214)。如果已安装,我们现在要求:

最低版本

必需的

更改

numpy

1.16.5

X

X

pytz

2017.3

X

X

python-dateutil

2.7.3

X

瓶颈

1.2.1

numexpr

2.6.8

X

pytest (开发版)

5.0.1

X

mypy (dev)

0.782

X

对于 可选库 ,一般建议使用最新版本。下表列出了在 pandas 开发过程中当前测试的每个库的最低版本。低于最低测试版本的可选库可能仍然有效,但不被视为受支持。

最低版本

更改

beautifulsoup4

4.6.0

fastparquet

0.3.2

fsspec

0.7.4

gcsfs

0.6.0

lxml

4.3.0

X

matplotlib

2.2.3

X

numba

0.46.0

openpyxl

2.6.0

X

pyarrow

0.15.0

X

pymysql

0.7.11

X

pytables

3.5.1

X

s3fs

0.4.0

scipy

1.2.0

sqlalchemy

1.2.8

X

xarray

0.12.3

X

xlrd

1.2.0

X

xlsxwriter

1.0.2

X

xlwt

1.3.0

X

pandas-gbq

0.12.0

更多信息请参见 依赖项可选依赖项

其他 API 更改#

  • 现在,对于 Datetime-like Index 子类的 Series.sort_values()Index.sort_values(),降序排序是稳定的。这会影响在多列上排序 DataFrame、使用产生重复项的键函数排序或在使用 Index.sort_values() 时请求排序索引时的排序顺序。使用 Series.value_counts() 时,缺失值的计数不再必然是重复计数列表中的最后一个。相反,它的位置对应于原始 Series 中的位置。使用 Datetime-like Index 子类的 Index.sort_values() 时,NaTs 忽略了 na_position 参数,并被排序到最前面。现在它们尊重 na_position,默认值为 last,与其他 Index 子类相同 (GH 35992)

  • Categorical.take()DatetimeArray.take()TimedeltaArray.take()PeriodArray.take() 传递一个无效的 fill_value 现在会引发 TypeError 而不是 ValueError (GH 37733)

  • 将无效的 fill_value 传递给带有 CategoricalDtypeSeries.shift() 现在会引发 TypeError 而不是 ValueError (GH 37733)

  • 将无效值传递给 IntervalIndex.insert()CategoricalIndex.insert() 现在会引发 TypeError 而不是 ValueError (GH 37733)

  • 尝试使用无效的 fill_value 重新索引带有 CategoricalIndex 的 Series 现在会引发 TypeError 而不是 ValueError (GH 37733)

  • CategoricalIndex.append() 使用包含非类别值的索引现在会进行类型转换,而不是引发 TypeError (GH 38098)

弃用#

在非对齐的DataFrames上调用NumPy ufuncs

在 pandas 1.2.0 中,对未对齐的 DataFrames 调用 NumPy ufuncs 的行为发生了变化(在调用 ufunc 之前对齐输入),但这一更改在 pandas 1.2.1 中被恢复。现在不对其的行为已被弃用,更多详情请参见 1.2.1 版本说明

性能提升#

错误修复#

Categorical#

  • Categorical.fillna() 将始终返回一个副本,验证传递的填充值,无论是否存在任何需要填充的NAs,并且不允许 NaT 作为数字类别的填充值 (GH 36530)

  • Categorical.__setitem__() 中的错误,在尝试设置一个元组值时错误地引发 (GH 20439)

  • CategoricalIndex.equals() 中的错误不正确地将非类别条目转换为 np.nan (GH 37667)

  • CategoricalIndex.where() 中的错误将非类别条目错误地设置为 np.nan 而不是引发 TypeError (GH 37977)

  • 在具有 tz-aware datetime64 类别的 Categorical.to_numpy()np.array(categorical) 中存在一个错误,错误地丢失了时区信息,而不是转换为对象数据类型 (GH 38136)

Datetime-like#

  • DataFrame.combine_first() 中的一个错误,当原始 DataFrame 中不存在该列时,会将其他 DataFrame 中的类似日期时间的列转换为整数 (GH 28481)

  • DatetimeArray.date 中的错误,当使用只读后备数组时会引发 ValueError (GH 33530)

  • NaT 比较中未能引发 TypeError 的错误,在无效的不等式比较中 (GH 35046)

  • DateOffset 中的一个错误,当输入值超出正常范围(例如 months=12)时,从 pickle 文件重建的属性与原始对象不同 (GH 34511)

  • DatetimeIndex.get_slice_bound() 中的一个错误,其中 datetime.date 对象不被接受,或者使用带有 tz-aware DatetimeIndex 的朴素 Timestamp (GH 35690)

  • DatetimeIndex.slice_locs() 中的错误,其中 datetime.date 对象不被接受 (GH 34077)

  • DatetimeIndex.searchsorted(), TimedeltaIndex.searchsorted(), PeriodIndex.searchsorted(), 和 Series.searchsorted() 中存在一个错误,当使用 datetime64, timedelta64Period 数据类型时,NaT 值的放置与 NumPy 不一致 (GH 36176, GH 36254)

  • DatetimeArrayTimedeltaArrayPeriodArray 方法 __setitem__ 中,将字符串数组转换为类似日期时间的标量,但不转换标量字符串 (GH 36261)

  • DatetimeArray.take() 中的错误不正确地允许 fill_value 使用不匹配的时区 (GH 37356)

  • DatetimeIndex.shift 中的错误在移动空索引时错误地引发 (GH 14811)

  • TimestampDatetimeIndex 在 tz-aware 和 tz-naive 对象之间的比较现在遵循标准库 datetime 的行为,对于 !=/== 返回 True/False,并在不等比较时引发 (GH 28507)

  • DatetimeIndex.equals()TimedeltaIndex.equals() 中的错误错误地将 int64 索引视为相等 (GH 36744)

  • Series.to_json(), DataFrame.to_json(), 和 read_json() 现在在 orient 结构为 table 时实现时区解析 (GH 35973)

  • astype() 现在尝试直接从 object 转换为 datetime64[ns, tz],通过从字符串推断出的时区 (GH 35973)

  • 在空索引或系列上使用 timedelta64 数据类型的 TimedeltaIndex.sum()Series.sum() 中的错误,返回 NaT 而不是 Timedelta(0) (GH 31751)

  • DatetimeArray.shift() 中的错误不正确地允许 fill_value 使用不匹配的时区 (GH 37299)

  • 在将带有非零 offsetBusinessDay 添加到非标量对象时出现的错误 (GH 37457)

  • 在只读数组中使用 to_datetime() 时错误地引发的问题 (GH 34857)

  • datetime64[ns] 类型和 DatetimeIndex.isin()Series.isin() 中存在一个错误,错误地将整数转换为日期时间 (GH 36621)

  • Series.isin() 中使用 datetime64[ns] dtype 和 DatetimeIndex.isin() 未能始终将带时区和无时区的日期时间视为不同 (GH 35728)

  • PeriodDtype dtype 和 PeriodIndex.isin() 中存在一个错误,未能考虑具有不同 PeriodDtype 的参数,总是视为不同 (GH 37528)

  • Period 构造函数现在正确处理 value 参数中的纳秒 (GH 34621GH 17053)

Timedelta#

时区#

Numeric#

转换#

  • orient='records' 的情况下,DataFrame.to_dict() 中的错误现在会为类似日期时间的列返回 Python 原生的日期时间对象 (GH 21256)

  • 在存在 pd.NA 值的情况下,从 string 转换为 floatSeries.astype() 中的错误 (GH 37626)

字符串#

Interval#

  • DataFrame.replace()Series.replace() 中的错误,其中 Interval 数据类型会被转换为对象数据类型 (GH 34871)

  • IntervalIndex.take() 中使用负索引和 fill_value=None 的错误 (GH 37330)

  • IntervalIndex.putmask() 中存在一个错误,对于类似日期时间的 dtype 不正确地转换为 object dtype (GH 37968)

  • IntervalArray.astype() 中的错误在处理 CategoricalDtype 对象时错误地丢失了 dtype 信息 (GH 37984)

索引#

缺失#

MultiIndex#

I/O#

周期#

绘图#

Styler#

  • Styler.render() 中的错误导致 HTML 生成不正确,因为 rowspan 属性中的格式错误,现在它与 w3 语法匹配 (GH 38234)

分组/重采样/滚动#

Reshaping#

ExtensionArray#

其他#

贡献者#

总共有257人为此版本贡献了补丁。名字后面带有“+”的人首次贡献了补丁。

  • 21CSM +

  • AbdulMAbdi +

  • Abhiraj Hinge +

  • Abhishek Mangla +

  • Abo7atm +

  • Adam Spannbauer +

  • Albert Villanova del Moral

  • Alex Kirko

  • Alex Lim +

  • Alex Thorne +

  • Aleš Erjavec +

  • Ali McMaster

  • Amanda Dsouza +

  • Amim Knabben +

  • Andrew Wieteska

  • Anshoo Rajput +

  • Anthony Milbourne

  • Arun12121 +

  • Asish Mahapatra

  • Avinash Pancham +

  • BeanNan +

  • Ben Forbes +

  • Brendan Wilby +

  • Bruno Almeida +

  • Byron Boulton +

  • Chankey Pathak

  • Chris Barnes +

  • Chris Lynch +

  • Chris Withers

  • Christoph Deil +

  • Christopher Hadley +

  • Chuanzhu Xu

  • Coelhudo +

  • Dan Moore

  • Daniel Saxton

  • David Kwong +

  • David Li +

  • David Mrva +

  • Deepak Pandey +

  • Deepyaman Datta

  • Devin Petersohn

  • Dmitriy Perepelkin +

  • Douglas Hanley +

  • Dāgs Grīnbergs +

  • Eli Treuherz +

  • Elliot Rampono +

  • Erfan Nariman

  • Eric Goddard

  • Eric Leung +

  • Eric Wieser

  • Ethan Chen +

  • Eve +

  • Eyal Trabelsi +

  • Fabian Gebhart +

  • Fangchen Li

  • Felix Claessen +

  • Finlay Maguire +

  • Florian Roscheck +

  • Gabriel Monteiro

  • Gautham +

  • Gerard Jorgensen +

  • Gregory Livschitz

  • Hans

  • Harsh Sharma

  • Honfung Wong +

  • Igor Gotlibovych +

  • Iqrar Agalosi Nureyza

  • Irv Lustig

  • Isaac Virshup

  • Jacob Peacock

  • Jacob Stevens-Haas +

  • Jan Müller +

  • Janus

  • Jeet Parekh

  • Jeff Hernandez +

  • Jeff Reback

  • Jiaxiang

  • Joao Pedro Berno Zanutto +

  • Joel Nothman

  • Joel Whittier +

  • John Karasinski +

  • John McGuigan +

  • Johnny Pribyl +

  • Jonas Laursen +

  • Jonathan Shreckengost +

  • Joris Van den Bossche

  • Jose +

  • JoseNavy +

  • Josh Temple +

  • Jun Kudo +

  • Justin Essert

  • Justin Sexton +

  • Kaiqi Dong

  • Kamil Trocewicz +

  • Karthik Mathur

  • Kashif +

  • Kenny Huynh

  • Kevin Sheppard

  • Kumar Shivam +

  • Leonardus Chen +

  • Levi Matus +

  • Lucas Rodés-Guirao +

  • Luis Pinto +

  • Lynch +

  • Marc Garcia

  • Marco Gorelli

  • Maria-Alexandra Ilie +

  • Marian Denes

  • Mark Graham +

  • Martin Durant

  • Matt Roeschke

  • Matthew Roeschke

  • Matthias Bussonnier

  • Maxim Ivanov +

  • Mayank Chaudhary +

  • MeeseeksMachine

  • Meghana Varanasi +

  • Metehan Kutlu +

  • Micael Jarniac +

  • Micah Smith +

  • Michael Marino

  • Miroslav Šedivý

  • Mohammad Jafar Mashhadi

  • Mohammed Kashif +

  • Nagesh Kumar C +

  • Nidhi Zare +

  • Nikhil Choudhary +

  • Number42

  • Oleh Kozynets +

  • OlivierLuG

  • Pandas Development Team

  • Paolo Lammens +

  • Paul Ganssle

  • Pax +

  • Peter Liu +

  • Philip Cerles +

  • Pranjal Bhardwaj +

  • Prayag Savsani +

  • Purushothaman Srikanth +

  • Qbiwan +

  • Rahul Chauhan +

  • Rahul Sathanapalli +

  • Rajat Bishnoi +

  • Ray Bell

  • Reshama Shaikh +

  • Richard Shadrach

  • Robert Bradshaw

  • Robert de Vries

  • Rohith295

  • S Mono +

  • S.TAKENO +

  • Sahid Velji +

  • Sam Cohen +

  • Sam Ezebunandu +

  • Sander +

  • Sarthak +

  • Sarthak Vineet Kumar +

  • Satrio H Wicaksono +

  • Scott Lasley

  • Shao Yang Hong +

  • Sharon Woo +

  • Shubham Mehra +

  • Simon Hawkins

  • Sixuan (Cherie) Wu +

  • Souris Ash +

  • Steffen Rehberg

  • Suvayu Ali

  • Sven

  • SylvainLan +

  • T. JEGHAM +

  • Terji Petersen

  • Thomas Dickson +

  • Thomas Heavey +

  • Thomas Smith

  • Tobias Pitters

  • Tom Augspurger

  • Tomasz Sakrejda +

  • Torsten Wörtwein +

  • Ty Mick +

  • UrielMaD +

  • Uwe L. Korn

  • Vikramaditya Gaonkar +

  • VirosaLi +

  • W.R +

  • Warren White +

  • Wesley Boelrijk +

  • William Ayd

  • Yanxian Lin +

  • Yassir Karroum +

  • Yong Kai Yi +

  • Yuanhao Geng +

  • Yury Mikhaylov +

  • Yutaro Ikeda

  • Yuya Takashina +

  • Zach Brookler +

  • Zak Kohler +

  • ZhihuiChen0903 +

  • abmyii

  • alexhtn +

  • asharma13524 +

  • attack68

  • beanan +

  • chinhwee

  • cleconte987

  • danchev +

  • ebardie +

  • edwardkong

  • elliot rampono +

  • estasney +

  • gabicca

  • geetha-rangaswamaiah +

  • gfyoung

  • guru kiran

  • hardikpnsp +

  • icanhazcodeplz +

  • ivanovmg +

  • jbrockmendel

  • jeschwar

  • jnecus

  • joooeey +

  • junk +

  • krajatcl +

  • lacrosse91 +

  • leo +

  • lpkirwin +

  • lrjball

  • lucasrodes +

  • ma3da +

  • mavismonica +

  • mlondschien +

  • mzeitlin11 +

  • nguevara +

  • nrebena

  • parkdj1 +

  • partev

  • patrick

  • realead

  • rxxg +

  • samilAyoub +

  • sanderland

  • shawnbrown

  • sm1899 +

  • smartvinnetou

  • ssortman +

  • steveya +

  • taytzehao +

  • tiagohonorato +

  • timhunderwood

  • tkmz-n +

  • tnwei +

  • tpanza +

  • vineethraj510 +

  • vmdhhh +

  • xinrong-databricks +

  • yonas kassa +

  • yonashub +

  • Ádám Lippai +