Поваренная книга
Это хранилище кратких и понятных примеров и ссылок для полезных рецептов 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