pandas读取股票CSV文件并用mplfinance绘制蜡烛图

发布时间:2023-08-10 12:00

CSV文件内容格式如下,使用相关插件(VSCode,Excel Viewer)进行了美化。可以注意到总共有7列。
\"pandas读取股票CSV文件并用mplfinance绘制蜡烛图_第1张图片\"

导入CSV的文件

import pandas as pd
data = pd.read_csv(\'./data/AAPL.csv\',index_col=0, parse_dates = [\'Date\']) #将第一列设置为index

这里将第一列设置为index,实际上CSV文件中第一列是行号。然后将Date列自动转化为日期类型,,方便后续操作。

#查看data的数据类型
print(data.dtypes) #dtypes是DataFrame和Series的一个属性
#输出结果
Date      datetime64[ns]
Open             float64
High             float64
Low              float64
Close            float64
Volume           float64
dtype: object
#查看data的详细信息
print(data.info())
#输出结果
<class \'pandas.core.frame.DataFrame\'>   #data的数据类型   
Int64Index: 5255 entries, 0 to 5254      #index的数据类型  
Data columns (total 6 columns): #除了index总共6列,index,Date,HOCL,V
 #   Column  Non-Null Count  Dtype
---  ------  --------------  -----
 0   Date    5255 non-null   datetime64[ns] #日期类型
 1   Open    5255 non-null   float64       
 2   High    5255 non-null   float64       
 3   Low     5255 non-null   float64
 4   Close   5255 non-null   float64
 5   Volume  5255 non-null   float64
dtypes: datetime64[ns](1), float64(5)
memory usage: 287.4 KB #占用内存空间
None

#查看data的统计分析
print(data.describe())
#输出
              Open         High          Low        Close        Volume
count  5255.000000  5255.000000  5255.000000  5255.000000  5.255000e+03
mean    158.335855   160.109968   156.388133   158.286548  2.122191e+07
std     161.309153   162.588024   159.766714   161.195754  1.824189e+07
min      12.990000    13.190000    12.720000    13.120000  7.025000e+05
25%      37.940000    38.580000    37.160000    37.980000  6.705350e+06
50%     106.370000   108.000000   104.880000   106.130000  1.677300e+07
75%     187.765000   189.405000   185.635000   187.560050  2.976013e+07
max     702.410000   705.070000   699.570000   702.100000  1.895606e+08

对数据根据日期进行排序

data = data.sort_values(\'Date\') #排序
#然后设置日期列为index
data = data.set_index(\'Date\')

根据日期提取数据

data_of_2018 = data.loc[\'2018\'] #data[\'2018\']也可以,但是建议用loc操作符

#也可以提取某月的数据
data_of_month = data.loc[\'2018-01\']

#提取某日的数据
data_of_day = data.loc[\'2018-01-02\']

或者数据切片

#提取2018年2月到4月的数据
data_of_during = data.loc[\'2018-02\':\'2018-04\']
print(data_of_during.head())
print(data_of_during.tail())

结果如下

               Open    High       Low   Close      Volume
Date                                                     
2018-02-01  167.165  168.62  166.7600  167.78  38099665.0
2018-02-02  166.000  166.80  160.1000  160.50  85436075.0
2018-02-05  159.100  163.88  156.0000  156.49  66090446.0
2018-02-06  154.830  163.72  154.0000  163.03  66625484.0
2018-02-07  163.085  163.40  159.0685  159.54  50852130.0
                Open    High       Low   Close      Volume
Date                                                      
2018-04-24  165.6700  166.33  161.2201  162.94  33692017.0
2018-04-25  162.6200  165.42  162.4100  163.65  28382084.0
2018-04-26  164.1200  165.73  163.3700  164.22  27963014.0
2018-04-27  164.0000  164.33  160.6300  162.32  35655839.0
2018-04-30  162.1302  167.26  161.8400  165.26  42427424.0

对数据进行截断truncate

data_after_2018_10 = data.truncate(before=\'2018-10\') #截断2018年10月之前的数据
print(data_after_2018_10.head())
              Open    High     Low   Close      Volume
Date                                                  
2018-10-01  227.95  229.42  226.35  227.26  23600802.0
2018-10-02  227.25  230.00  226.63  229.28  24788170.0
2018-10-03  230.05  233.47  229.78  232.07  28654799.0
2018-10-04  230.78  232.35  226.73  227.99  32042000.0
2018-10-05  227.96  228.41  220.58  224.29  33580463.0

同理after=\'2018-10’表示截断2018年10月之后的数据,保留之前的数据

shift操作

data_of_during_shift1 = data_of_during.shift(1)
print(data_of_during_shift1.head())
Date                                                   
2018-02-01      NaN     NaN     NaN     NaN         NaN
2018-02-02  167.165  168.62  166.76  167.78  38099665.0
2018-02-05  166.000  166.80  160.10  160.50  85436075.0
2018-02-06  159.100  163.88  156.00  156.49  66090446.0
2018-02-07  154.830  163.72  154.00  163.03  66625484.0

可以看到,index不动,数据整体往后移动了一行。如果shift(-1)则表示,舍弃第一行数据,数据整体往前移动一行。
该方法在金融领域的数据常用

使用mplfinace绘制蜡烛图

import mplfinance as mpf
kwargs = dict(type=\'candle\',mav=(2,4,6),volume=True)
mc = mpf.make_marketcolors(up=\'r\',down=\'g\') #自定义蜡烛图的颜色
my_style  = mpf.make_mpf_style(marketcolors=mc) #仅仅指定marketcolors
mpf.plot(data_after_2018_10,**kwargs,style=my_style)

mplfinance的操作很简单,具体可以查看其github官网教程
\"pandas读取股票CSV文件并用mplfinance绘制蜡烛图_第2张图片\"
文末,推广一下个人公众号【港资交易数据分析】,或者直接访问网站
\"pandas读取股票CSV文件并用mplfinance绘制蜡烛图_第3张图片\"

ItVuer - 免责声明 - 关于我们 - 联系我们

本网站信息来源于互联网,如有侵权请联系:561261067@qq.com

桂ICP备16001015号