почему pandas .DataFrame.sum (axis = 0) возвращает сумму значений в каждом столбце, где axis = 0 представляет строки? - PullRequest
1 голос
/ 09 мая 2020

В pandas, axis = 0 представляет строки и axis = 1 представляет столбцы . Поэтому для получения суммы значений в каждой строке в pandas вызывается df.sum (axis = 0) . Но он возвращает сумму значений в каждом столбце и наоборот. Почему ???

import pandas as pd
df=pd.DataFrame({"x":[1,2,3,4,5],"y":[2,4,6,8,10]})
df.sum(axis=0)

Dataframe:

   x   y
0  1   2

1  2   4

2  3   6

3  4   8

4  5  10

Вывод:

x    15

y    30

Ожидаемый результат:

0     3

1     6

2     9

3    12

4    15

Ответы [ 2 ]

1 голос
/ 09 мая 2020

Я читал исходный код в проекте pandas, и я думаю, что это происходит из Numpy, в этой библиотеке используется именно так (0 сумм по вертикали и 1 по горизонтали), и дополнительно Pandas использовать под капотом numpy, чтобы получить эту сумму.

В этой ссылке вы можете проверить, что pandas использует функцию numpy.cumsum для вычисления суммы. И эта ссылка предназначена для numpy документации.

Если вы ищете способ запомнить, как использовать параметр оси, ответ 'anant', это хороший подход, интерпретация сумма over ось вместо across. Итак, когда указано значение 0, вы вычисляете сумму по строкам (итерация по индексу, чтобы было больше pandas до c жалоб). Когда ось равна 1, вы перебираете столбцы.

0 голосов
/ 09 мая 2020

Я думаю, что правильный способ интерпретации параметра axis - это то, по какой оси вы суммируете «по» (или «по горизонтали»), а не по «направлению», в котором вычисляется сумма. Указание axis = 0 вычисляет сумму по строки, дающие вам общее количество для каждого столбца; axis = 1 вычисляет сумму по столбцам, давая вам сумму для каждой строки.

...