python - 用数组计算 numpy.mean?

标签 python arrays csv numpy

我正在尝试定义一个程序来计算每种证券的每日返回平均值:

import csv
import numpy as np

def security_mean(com):
    CSV = csv.reader(open("my_file.csv","rb"))
    foo = False
    old = 0
    new = 0
    mean = []
    for row in CSV:
        try:
            if foo == True:
                old = float(row[-1])
                x = (new - old) / old
                mean.append(x)
                new = float(row[-1])
                foo = True
            else:
                new = float(row[-1])
                foo = True
        except ValueError:
            string = row[-1]
            continue
    value = np.mean(mean)
    print string + ' mean: ' + str(value)

这是my_file.csv:

Date    Open    High    Low Close           Volume    Adj Close
2013-09-27  874.82  877.52  871.31  876.39  1258800    876.39
2013-09-26  878.3   882.75  875 878.17  1259900        878.17
2013-09-25  886.55  886.55  875.6   877.23  1649000    877.23
2013-09-24  886.5   890.1   881.4   886.84  1467000    886.84
2013-09-23  896.15  901.59  885.2   886.5   1777400    886.5
2013-09-20  898.39  904.13  895.62  903.11  4345300    903.11
2013-09-19  905.99  905.99  895.4   898.39  1597900    898.39
2013-09-18  886.35  903.97  883.07  903.32  1934700    903.32
2013-09-17  887.41  888.39  881 886.11  1259400        886.11
2013-09-16  896.2   897 884.87  887.76  1336500        887.76

我可以使用数组使我的函数更小吗?怎么办?

谢谢。

注意每日返回公式:(x - y)/y(x/y) - 1 ;其中 x = 今天 Adj 收盘,y = 昨天 Adj 收盘

最佳答案

看来你可以使用 np.loadtxt() 来简化你的函数:

np.loadtxt('my_file.csv', skiprows=1, usecols=(1,2,3,4,5,6)).mean(axis=0)

关于python - 用数组计算 numpy.mean?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19066924/

相关文章:

python - 如何在 django 上处理 tcp 连接

php函数内爆调整

c - C 中的二维字符串声明数组

java - 算法设计: inserting bags into containers with a limited size

R从系统命令的标准输出读取数据到数据帧

python - 使用 python requests 库将文件发布到服务器时出现错误请求错误

java - 如何使我的库、模块或 jar 文件在 diff 项目之间保持同步

python - 使用 Python 将 csv 导入 QGIS

r - 写csv时避免拆分字符串列

python - pandas 中的 groupby 和函数调用