Spec-Zone.ru › pandas 0.23

Поваренная книга

Это хранилище кратких и понятных примеров и ссылок для полезных рецептов pandas. Мы рекомендуем пользователям дополнять эту документацию.

Добавление интересных ссылок и/или примеров в эту секцию — отличный первый запрос на добавление.

По возможности были вставлены упрощенные, сжатые, понятные для новых пользователей примеры, дополняющие ссылки на Stack-Overflow и GitHub. Многие ссылки содержат расширенную информацию, помимо той, что предлагают примеры.

pandas (pd) и Numpy (np) — единственные два сокращенно импортированных модуля. Остальные импортируются явно для новых пользователей.

Эти примеры написаны для Python 3. Для более ранних версий Python могут потребоваться незначительные корректировки.

Идиомы

Вот несколько интересных pandas idioms

if-then/if-then-else по одному столбцу, и присвоение одному или нескольким другим столбцам:

In [1]: df = pd.DataFrame(
   ...:      {'AAA' : [4,5,6,7], 'BBB' : [10,20,30,40],'CCC' : [100,50,-30,-50]}); df
   ...: 
Out[1]: 
   AAA  BBB  CCC
0    4   10  100
1    5   20   50
2    6   30  -30
3    7   40  -50

if-then…

An if-then по одному столбцу

In [2]: df.loc[df.AAA >= 5,'BBB'] = -1; df
Out[2]: 
   AAA  BBB  CCC
0    4   10  100
1    5   -1   50
2    6   -1  -30
3    7   -1  -50

An if-then с присвоением в 2 столбца:

In [3]: df.loc[df.AAA >= 5,['BBB','CCC']] = 555; df
Out[3]: 
   AAA  BBB  CCC
0    4   10  100
1    5  555  555
2    6  555  555
3    7  555  555

Добавьте еще одну строку с другой логикой, чтобы сделать -else

In [4]: df.loc[df.AAA < 5,['BBB','CCC']] = 2000; df
Out[4]: 
   AAA   BBB   CCC
0    4  2000  2000
1    5   555   555
2    6   555   555
3    7   555   555

Или используйте pandas where после настройки маски

In [5]: df_mask = pd.DataFrame({'AAA' : [True] * 4, 'BBB' : [False] * 4,'CCC' : [True,False] * 2})

In [6]: df.where(df_mask,-1000)
Out[6]: 
   AAA   BBB   CCC
0    4 -1000  2000
1    5 -1000 -1000
2    6 -1000   555
3    7 -1000 -1000

if-then-else с использованием numpy’s where()

In [7]: df = pd.DataFrame(
   ...:      {'AAA' : [4,5,6,7], 'BBB' : [10,20,30,40],'CCC' : [100,50,-30,-50]}); df
   ...: 
Out[7]: 
   AAA  BBB  CCC
0    4   10  100
1    5   20   50
2    6   30  -30
3    7   40  -50

In [8]: df['logic'] = np.where(df['AAA'] > 5,'high','low'); df

© 2008–2012, AQR Capital Management, LLC, Lambda Foundry, Inc. and PyData Development Team
Licensed under the 3-clause BSD License.
https://pandas.pydata.org/pandas-docs/version/0.23.4/cookbook.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API