import numpy as np
import pandas as pd
from pandas_datareader import data
import datetime as dt
数据准备
'''
获取国内股票数据的方式是:“股票代码”+“对应股市”(港股为.hk,A股为.ss)
例如腾讯是港股是: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]
AliDf['sum_pct_change']=AliDf['Close'].apply(lambda x: (x-Close1)/Close1)
AliDf['sum_pct_change'].tail()
Date
2017-12-22 0.989729
2