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