python - 是否有用于构建平均价格的 Python 函数,它以 2 个数组作为参数
问题描述
首先,我对 Python 完全陌生,并尝试自己学习。我得到了以下练习来练习并尝试用NumPy
and来解决它Pandas
。
使用 2 个数组记录股票交易。正在交易的股票名称进入第一个数组。交易的股价进入第二个数组的相同位置。例如,数组可能如下所示:
String[] shares = {"HSBC","o2","Vodafone","Vodafone","HSBC","o2","Vodafone"};
double[] prices = {6.40,9.99,2.40,2.45,6.37,10.10,2.50};
我需要编写一个名为的方法averagePrices
,它将 2 个数组作为参数。该方法应打印出每家公司的平均股价,四舍五入到小数点后两位。上面的数组将产生:
Vodafone: £2.45
HSBC: £6.39
o2: £10.05
使用简单的Lists
和For
循环我得到了正确的结果,但我想处理这个问题,好像列表会更长并且不够方便,无法自己逐步键入单个值的所有位置。所以我正在寻找一个类似VLookup
Excel 或类似使用的函数pandas
,它可以总结不同股票的相应价格以建立平均值。
import numpy as np
shares = np.array(["HSBC", "o2", "Vodafone", "Vodafone", "HSBC", "o2", "Vodafone"])
prices = np.array([6.40, 9.99, 2.40, 2.45, 6.37, 10.10, 2.50])
HSBC_bool = shares == "HSBC"
o2_bool = shares == "o2"
Vodafone_bool = shares == "Vodafone"
HSBC = shares[HSBC_bool]
o2 = shares[o2_bool]
Vodafone = shares[Vodafone_bool]
HSBC_count = HSBC.shape
o2_count = o2.shape
Vodafone_count = Vodafone.shape
HSBC_share = []
o2_share = []
Vodafone_share = []
if HSBC_bool.any == True:
HSBC_share.append(prices[:])
if o2_bool.any == True:
o2_share.append(prices[:])
if Vodafone_bool.any == True:
Vodafone_share.append(prices[:])
print(Vodafone_share)
print(o2_share)
print(HSBC_share)
avg_HSBC = sum(HSBC_share) / HSBC_count
avg_o2 = sum(o2_share) / o2_count
avg_Vodafone = sum(Vodafone_share) / Vodafone_count
print(round(avg_HSBC, 2))
print(round(avg_o2, 2))
print(round(avg_Vodafone, 2))
解决方案
尝试使用pandas
和groupby().mean()
功能。我建议您在 SO 提问之前先在线阅读并玩一些时间,否则您不会学到那么多。
链接:https ://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.core.groupby.GroupBy.mean.html
在你的情况下:
shares = np.array(["HSBC", "o2", "Vodafone", "Vodafone", "HSBC", "o2", "Vodafone"])
prices = np.array([6.40, 9.99, 2.40, 2.45, 6.37, 10.10, 2.50])
df = pd.DataFrame({'shares': shares,
'prices': prices})
df.groupby('shares').mean()
结果是:
prices
shares
HSBC 6.385
Vodafone 2.450
o2 10.045
推荐阅读
- php - php替换readline
- intellij-idea - 从类名中获取 PsiClass
- lua - 防止lua窗口关闭
- c++ - 关于非并行和并行排序算法的问题?
- spring - 使用 spring cloud config 从 git-repo 获取 jks 文件
- c++ - 数组中的大量数字/C++
- javascript - 从 Puppeteer 中的 page.evaluate 获取元素?
- html - Flexbox 网格对齐图像中心
- ide - PhpStorm - 自动折叠所有方法体,不包括活动方法
- postgresql - 是否可以在 PostgreSQL 9.4 的 PL/pgSQL 函数中执行 IF 条件?