Spec-Zone.ru › pandas 0.20

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

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

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

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

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

Эти примеры написаны для python 3.4. Могут потребоваться незначительные коррективы для более ранних версий 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.20.3/cookbook.html

Spec-Zone.ru

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