shares_110609 = df5[df5['date'] == '2020-01-03'][['code', 'name', 'close']] shares_160609 = df5[df5['date'] == '2022-12-14'][['code', 'close']] # 按照股票代码将2天数据关联 shares_price = shares_110609.merge(shares_160609, on='code') shares_price如何计算涨跌幅
时间: 2023-10-11 11:08:19 浏览: 133
要计算涨跌幅,可以先在 shares_price 中新增一个列,即新股价(new_price),用于存储股票在 2022-12-14 的收盘价。然后,可以再新增一个列,即涨跌幅(increase),用于存储股票价格的涨跌情况,计算公式如下:
```python
shares_price['new_price'] = shares_price['close_y']
shares_price['increase'] = (shares_price['new_price'] - shares_price['close_x']) / shares_price['close_x']
```
其中,`close_x` 是 2020-01-03 的收盘价,`close_y` 是 2022-12-14 的收盘价。计算出来的 `increase` 列即为股票价格的涨跌幅。注意,这里的涨跌幅是以百分比的形式呈现的。
相关问题
shares_market_value = df5[df5['date'] == '2016-06-08'][['name', 'zongshizhi']].sort_values(by='zongshizhi', ascending=False) # 市值最大的公司 top10 tmp_df = shares_market_value.head(10) # 画图 sns.barplot(x=tmp_df['zongshizhi'], y=tmp_df['name'])
这段代码使用 Pandas 和 Seaborn 库,根据数据集中2016-06-08的市值数据,绘制了市值最大的10家公司的柱状图。
首先,使用 Pandas 的 loc 方法选取日期为2016-06-08的数据,并选择“name”和“zongshizhi”两列数据,然后按照“zongshizhi”列进行降序排列,取出前10行数据,存储在 tmp_df 变量中。
接着,使用 Seaborn 的 barplot 方法,将 tmp_df 的“zongshizhi”列作为 x 轴,tmp_df 的“name”列作为 y 轴,绘制柱状图。
值得注意的是,这段代码中使用了中文变量名,“zongshizhi”指代的是“总市值”,“name”指代的是“公司名称”。如果您的程序中需要使用英文变量名,请将“zongshizhi”替换为“market_value”,将“name”替换为“company_name”等。
bins = np.array([0, 0.5, 1, 2, 10]) # 股价上涨的公司 shares_up = shares_price[shares_price['increase'] > 0] # 按涨幅进行分组 shares_up['label'] = pd.cut(shares_up['increase'], bins) # 分组统计 up_label_count = shares_up[['label', 'code']].groupby('label').count() up_label_count['占比'] = up_label_count['code'] / up_label_count.sum().values sns.barplot(x=up_label_count['占比'], y=up_label_count.index)修改代码,使配色好看
bins = np.array([0, 0.5, 1, 2, 10])
shares_up = shares_price[shares_price['increase'] > 0]
shares_up['label'] = pd.cut(shares_up['increase'], bins)
up_label_count = shares_up[['label', 'code']].groupby('label').count()
up_label_count['占比'] = up_label_count['code'] / up_label_count.sum().values
plt.figure(figsize=(8, 6))
sns.set(style="whitegrid")
sns.barplot(x=up_label_count['占比'], y=up_label_count.index, palette="Blues_d")
plt.xlabel("占比", size=12)
plt.ylabel("涨幅", size=12)
plt.title("股价上涨的公司涨幅分布", size=14)
阅读全文