python - 在列表上迭代函数,并附加返回值

标签 python function counter average

我有一个 CSV 数据集,40 列乘以 800 多行。 但作为一个例子,假设它看起来像这样:

Ref  X  Y
11   1  10 
11   2  9
11   3  8
11   4  7
12   5  6 
12   6  5
12   7  4
13   8  3
13   9  2

您将如何定义一个函数来返回每个 Ref 的平均 X 和 Y 值列表?即产生类似的东西:

Ref_list = [11,12,13]        
Av_X = [2.5,6,12.5]

我怀疑这是处理它的最佳方式,但我已经编写了以下代码:

my_data = genfromtxt('somedata.csv', delimiter=',',skiprows=1) 

X=[]
for i in my_data:
    X.append(i[0])
    counter=collections.Counter(X)
    keys=np.sort((counter.keys())) #find and sort ref key values

def getdata():
    X , Y = [], []
    for i in my_data:
       if i[0] == refs:
           X.append(i[1])
           Y.append(i[2])
    AV_X=np.average(X)
    AV_Y=np.average(X)
    return AV_X, AV_Y

for refs in keys: # run function over key range 
    AV_X, AV_Y = getdata()

这里我卡住了,我试图在 ref no 的范围内迭代函数。 (键)并附加返回的值。但除了错误,我只能得到最后一个 Ref 的值。在键中。

我想有更好的方法可以做到这一点,但我仍然是这方面的新手。 非常感谢任何建议

最佳答案

你可以使用辉煌pandas这类工作的图书馆:

from StringIO import StringIO
import pandas as pd

df = pd.read_csv(StringIO('your_data'),
        delim_whitespace=True)

df.groupby('Ref').mean()

       X    Y
Ref          
11   2.5  8.5
12   6.0  5.0
13   8.5  2.5

正如您在最后一行中看到的,您在问题中计算错误...

您同样可以要求 median, sum, max, etc..

关于python - 在列表上迭代函数,并附加返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14201190/

相关文章:

python - 如何使用 django、Location.objects.all() 获取第一个元素和最后一个元素

Python tkinter 单选按钮不会更改变量

python - MySQL备份-警告密码不安全

Java 是否可以将 httpServletRequest 发送到函数?

C++ 具有不同返回类型的相同函数参数

jquery - 如何使用 jQuery 通过单击表格单元格中的文本来获取 event.target.id?

python - 计数器列表 python 2.7

python-3.x - python 3.4 计算 .txt 文件中的出现次数

python - 根据Python中的条件从DataFrame中提取之前的日期数据

assembly - pic汇编中如何计算超过255?