Spec-Zone.ru › pandas 0.22

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

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

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

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

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

Эти примеры написаны для python 3.4. Возможно, потребуется внести незначительные изменения для более ранних версий python.

Идиомы

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

если-то/если-то-иначе для одного столбца и присвоение другому одному или нескольким столбцам:

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

если-то...

Если-то для одного столбца

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

Если-то с присвоением в 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

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

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

если-то-иначе с помощью 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.22.0/cookbook.html

Spec-Zone.ru

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