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