Питон |Как сделать программу для расчета строк - PullRequest
0 голосов
/ 07 октября 2018

Я пытаюсь создать скрипт Python, используя панд, которые могут импортировать файл .txt и вычислять среднее значение для каждого предмета

Я пытаюсь включить этот файл "file.txt":

code name subject1 subject2 subject3
1234 Ali 6 0 8
1235 Carl 4 7 7
1236 Jason 3 5 0

и введите это:

subject1 average is: 4.3
subject2 average is: 6
subject3 average is: 7.5
  • subject1 рассчитывается так: (6 + 4 + 3) / 3,
  • subject2рассчитывается следующим образом: (7 + 5) / 2 <- потому что один человек имеет 0 означает, что он / она не ожидал, поэтому их 0 не прибавляется и считается в среднем </p>

  • subject3 рассчитывается следующим образом: (8 + 7) / 2 <- как выше </p>

    Я также пытаюсь найти способ, чтобы скрипт был гибким и имел возможность добавлять большепредметы и больше людей (так что 3 вместо 5)

Это мой код до сих пор:

# read input file
df = pd.read_csv('file.txt')

# calculate mean, ignoring 0 values
df['mean'] = df.iloc[:, 2:].astype(float).replace(0, np.nan).mean(1)

# iterate rows and print results
for name, mean in df.set_index('name')['mean'].items():
    print(f'{name} has average of {mean:.2f}')
  • Он рассчитывает среднее значение для каждого человека (по горизонтали)
  • но я не могу найти способ сделать это вертикально для каждого предмета.

спасибо за помощь, ребята ^ _ ^

Ответы [ 2 ]

0 голосов
/ 07 октября 2018

Если я вас хорошо понимаю, вы хотите это сделать.

import pandas as pd
data=pd.read_csv('data.csv',sep=' ')
    #You can change the range for number of subjects
    for i in range(1,4):
    #Print average for subject
    print(datos['subject'+str(i)].mean())
0 голосов
/ 07 октября 2018

Аргумент 1, который вы указываете pd.Series.mean, - это ось, по которой рассчитывается среднее значение;по умолчанию это столбцы, поэтому вы явно указываете это для вычисления среднего значения по строке.Уберите этот аргумент, и у вас все получится.

In [155]: df.iloc[:, 2:].astype(float).replace(0, np.nan).mean()
Out[155]:
subject1    4.333333
subject2    6.000000
subject3    7.500000
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...