Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何获得csv文件中两列的平均值_Python - Fatal编程技术网

Python 如何获得csv文件中两列的平均值

Python 如何获得csv文件中两列的平均值,python,Python,我有一个csv文件,有两列 rw1, 24 rw2, 34 rw3, 56 rw1, 78 rw2, 56 rw2, 45 rw2, 64 rw3, 32 rw1, 28 现在我想要一个average.py文件,它分别计算所有rw1、rw2和rw3的平均值,并将其写入average.txt文件 rw1 - average value, rw2 - average value, rw3 - average value 给定读取csv并将其转换为元组。然后对它们进行排序,以便在分组中使用 im

我有一个csv文件,有两列

rw1, 24
rw2, 34
rw3, 56
rw1, 78
rw2, 56
rw2, 45
rw2, 64
rw3, 32
rw1, 28
现在我想要一个average.py文件,它分别计算所有rw1、rw2和rw3的平均值,并将其写入average.txt文件

rw1 - average value,
rw2 - average value, 
rw3 - average value

给定读取csv并将其转换为元组。然后对它们进行排序,以便在分组中使用

import itertools
import csv

fileLocation = 'newslot.csv'
with open(fileLocation,'rb') as f:
    r = csv.reader(f)
    lis=sorted([(i[0],i[1]) for i in r])
    for k,g in itertools.groupby(lis,key=lambda x:x[0]):
        g=list(g)
        print k,sum(int(i[1]) for i in g)/len(g)
输出

对于,它有点短:

import pandas as pd
df = pd.read_csv(file, header=None)

In [1]: df
Out[1]: 
     0   1
0  rw1  24
1  rw2  34
2  rw3  56
3  rw1  78
4  rw2  56
5  rw2  45
6  rw2  64
7  rw3  32
8  rw1  28

In [2]: df.groupby(df[0]).mean() # it groups on the column "0", and calculates the mean on the different group 
Out[2]: 
             1
0             
rw1  43.333333
rw2  49.750000
rw3  44.000000

希望这有帮助

请发布您解决问题的尝试,并解释为什么它是不够的。通过一个循环,你可以计算你的平均值……你把字符串转换成整数了吗?你最后错过了最后一个大括号,我想:)
rw1 - 43.3333,
rw2 - 49.75,
rw3 - 44
import pandas as pd
df = pd.read_csv(file, header=None)

In [1]: df
Out[1]: 
     0   1
0  rw1  24
1  rw2  34
2  rw3  56
3  rw1  78
4  rw2  56
5  rw2  45
6  rw2  64
7  rw3  32
8  rw1  28

In [2]: df.groupby(df[0]).mean() # it groups on the column "0", and calculates the mean on the different group 
Out[2]: 
             1
0             
rw1  43.333333
rw2  49.750000
rw3  44.000000