Сумма определенных строк в кадре данных (панды) - PullRequest
0 голосов
/ 07 мая 2018

Мне дан набор следующих данных:

week  A      B      C      D      E
1     243    857    393    621    194
2     644    576    534    792    207
3     946    252    453    547    436
4     560    100    864    663    949
5     712    734    308    385    303

Меня просят найти сумму каждого столбца для указанных строк / указанного количества недель , а затем нанести эти цифры на гистограмму для сравнения A-E.

Если у меня есть нужные мне строки (например, df.iloc[2:4,:]), что мне делать дальше? Я предполагаю, что мне нужно создать маску с одной строкой, которая включает сумму каждого столбца, но я не уверен, как мне это сделать.

Я знаю, как сделать последний шаг (т. Е. .plot(kind='bar'), мне просто нужно знать, каков средний шаг для получения необходимых мне сумм.

Ответы [ 2 ]

0 голосов
/ 07 мая 2018

Вы можете использовать для выбора по позициям iloc, sum и Series.plot.bar:

df.iloc[2:4].sum().plot.bar()

graph1

Или, если хотите выбрать по именам индекса (здесь недели), используйте loc:

df.loc[2:4].sum().plot.bar()

graph2

Разница составляет iloc, исключая последнюю позицию:

print (df.loc[2:4])
        A    B    C    D    E
week                         
2     644  576  534  792  207
3     946  252  453  547  436
4     560  100  864  663  949

print (df.iloc[2:4])
        A    B    C    D    E
week                         
3     946  252  453  547  436
4     560  100  864  663  949

А при необходимости также фильтруйте столбцы по позициям:

df.iloc[2:4, :4].sum().plot.bar()  

И по именам (недели):

df.loc[2:4, list('ABCD')].sum().plot.bar()
0 голосов
/ 07 мая 2018

Все, что вам нужно сделать, это позвонить .sum() на вашем подмножестве данных:

df.iloc[2:4,:].sum()

Возвращает:

week       7
A       1506
B        352
C       1317
D       1210
E       1385
dtype: int64

Кроме того, для построения графика, я думаю, вы, вероятно, можете избавиться от столбца week (так как сумма чисел недели вряд ли будет что-либо значить):

df.iloc[2:4,1:].sum().plot(kind='bar')
# or
df[list('ABCDE')].iloc[2:4].sum().plot(kind='bar')

plot

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...