我正在尝试使用可导入.txt文件的熊猫创建Python脚本, 计算每个主题的平均值
我正在尝试打开此“ 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
subject2的计算方式如下:(7 + 5)/ 2 <-因为一个人的0 表示他/她没想到,所以他们的0不加和计数 向平均水平
subject3的计算方式如下:(8 + 7)/ 2 <-如上
我还试图找到一种使脚本更灵活并能够添加更多主题和更多人的方法(因此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}')
感谢帮助人员^ _ ^
答案 0 :(得分:2)
您提供给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
答案 1 :(得分:0)
如果我对您的理解很好,那么您想这样做。
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())