Подсчитайте положительные значения в столбце панд

1

У меня есть таблица с несколькими столбцами чисел. Я пытаюсь получить статистику для этой таблицы, и я застрял, пытаясь подсчитать количество положительных повышений между строками в одном столбце.

что я имею

A  |  B  |  C
--------------
1  |  5  |  2
5  |  2  |  7
2  |  2  |  10
18 |  0  |  14

функция, которую я пытаюсь написать для своей проблемы

def countIncreace(data,value):  #not complete but what I have so far
  print( data[value].pct_change().fillna(0).count( > 0) )  

pct_change() возвращает таблицу процента от числа в этом индексе по сравнению с числом в строке перед ним, а fillna(0) заменяет NaN в позиции 0 диаграммы, pct_change() создает pct_change() с 0

мой желаемый результат:

[IN]>countIncreace(df, 'A'):
[OUT]> 2
[IN]>countIncreace(df, 'B'):
[OUT]> 0
[IN]>countIncreace(df, 'C'):
[OUT]> 3

Что мне не хватает в моей функции, чтобы получить количество положительных значений

Теги:
pandas
python-3.x

3 ответа

1
Лучший ответ

Очень близко! Все правильно, за исключением того, как вы пытаетесь подсчитать количество процентов, превышающих 0. Вот один из способов сделать это

def countIncrease(df,column):
    print sum(df[column].pct_change().fillna(0) > 0)
2

Вы можете использовать методы pd.Series gt (больше) и sum:

df[column].pct_change().fillna(0).gt(0).sum()

В общем, это лучшая идея, чем использование встроенных функций с массивами Pandas series/NumPy.

0

Вы можете использовать DataFrame.loc

len(df.loc[df.A > 0]

Пример:

df = pd.DataFrame(np.random.randint(-10, 10, (3, 3)), columns=list('ABC'))
print(len(df.loc[df.A > 0]))

Или просто [ ]:

print(len(df[df.A > 0]))

Ещё вопросы

Сообщество Overcoder
Наверх
Меню