Python | 股票数据可视化

import numpy as np
import pandas as pd
from pandas_datareader import data
import datetime as dt

数据准备

'''
获取国内股票数据的方式是:“股票代码”+“对应股市”(港股为.hk,A股为.ss)
例如腾讯是港股是:0700.hk
'''
#字典:6家公司的股票
# gafataDict={'谷歌':'GOOG','亚马逊':'AMZN','Facebook':'FB', '苹果':'AAPL','阿里巴巴':'BABA','腾讯':'0700.hk'}
'''
定义函数
函数功能:计算股票涨跌幅=(现在股价-买入价格)/买入价格
输入参数:column是收盘价这一列的数据
返回数据:涨跌幅
'''
def change(column):
    # 买入价格
    buyPrice=column[0]
    # 现在股价
    curPrice=column[column.size-1]
    priceChange=(curPrice-buyPrice)/buyPrice
    # 判断股票是上涨还是下跌
    if priceChange>0:
        print('股票累计上涨=',round(priceChange*100,2),'%')
    elif priceChange==0:
        print('股票无变化=',round(priceChange*100,2)*100,'%')
    else:
        print('股票累计下跌=',round(priceChange*100,2)*100,'%')
    
    # 返回数据
    return priceChange
'''
三星电子

每日股票价位信息
Open:开盘价
High:最高加
Low:最低价
Close:收盘价
Volume:成交量

因雅虎连接不到,仅以三星作为获取数据示例
'''
sxDf = data.DataReader('005930', 'naver', start='2021-01-01', end='2022-01-01')
sxDf.head()
Open High Low Close Volume
Date
2021-01-04 81000 84400 80200 83000 38655276
2021-01-05 81600 83900 81600 83900 35335669
2021-01-06 83300 84500 82100 82200 42089013
2021-01-07 82800 84200 82700 82900 32644642
2021-01-08 83300 90000 83000 88800 59013307
sxDf.info()
<class 'pandas.core.frame.DataFrame'>
DatetimeIndex: 248 entries, 2021-01-04 to 2021-12-30
Data columns (total 5 columns):
 #   Column  Non-Null Count  Dtype 
---  ------  --------------  ----- 
 0   Open    248 non-null    object
 1   High    248 non-null    object
 2   Low     248 non-null    object
 3   Close   248 non-null    object
 4   Volume  248 non-null    object
dtypes: object(5)
memory usage: 11.6+ KB
sxDf.iloc[:,0:4]=sxDf.iloc[:,0:4].astype('float')
sxDf.iloc[:,-1]=sxDf.iloc[:,-1].astype('int')
sxDf.info()
<class 'pandas.core.frame.DataFrame'>
DatetimeIndex: 248 entries, 2021-01-04 to 2021-12-30
Data columns (total 5 columns):
 #   Column  Non-Null Count  Dtype  
---  ------  --------------  -----  
 0   Open    248 non-null    float64
 1   High    248 non-null    float64
 2   Low     248 non-null    float64
 3   Close   248 non-null    float64
 4   Volume  248 non-null    int32  
dtypes: float64(4), int32(1)
memory usage: 10.7 KB

阿里巴巴

# 读取数据
AliDf=pd.read_excel(r'C:\Users\EDY\Desktop\吧哩吧啦\学习\Untitled Folder\阿里巴巴2017年股票数据.xlsx',index_col='Date')
AliDf.tail()
Open High Low Close Adj Close Volume
Date
2017-12-22 175.839996 176.660004 175.039993 176.289993 176.289993 12524700
2017-12-26 174.550003 175.149994 171.729996 172.330002 172.330002 12913800
2017-12-27 172.289993 173.869995 171.729996 172.970001 172.970001 10152300
2017-12-28 173.039993 173.529999 171.669998 172.300003 172.300003 9508100
2017-12-29 172.279999 173.669998 171.199997 172.429993 172.429993 9704600
# 查看基本信息及数据类型
AliDf.info()
<class 'pandas.core.frame.DataFrame'>
DatetimeIndex: 251 entries, 2017-01-03 to 2017-12-29
Data columns (total 6 columns):
 #   Column     Non-Null Count  Dtype  
---  ------     --------------  -----  
 0   Open       251 non-null    float64
 1   High       251 non-null    float64
 2   Low        251 non-null    float64
 3   Close      251 non-null    float64
 4   Adj Close  251 non-null    float64
 5   Volume     251 non-null    int64  
dtypes: float64(5), int64(1)
memory usage: 13.7 KB
# 计算涨跌幅
AliChange=change(AliDf['Close'])
股票累计上涨= 94.62 %
'''增加一列累计增长百分比'''
#一开始的股价
Close1=AliDf['Close'][0]
# # .apply(lambda x: format(x, '.2%'))
AliDf['sum_pct_change']=AliDf['Close'].apply(lambda x: (x-Close1)/Close1)
AliDf['sum_pct_change'].tail()
Date
2017-12-22    0.989729
2017-12-26    0.945034
2017-12-27    0.952257
2017-12-28    0.944695
2017-12-29    0.946162
N
  • 7
    点赞
  • 70
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值