python : pandas 读取csv 文件, matplotlib 画基金净值线

来源:互联网 发布:log4j2连接数据库 编辑:程序博客网 时间:2024/05/01 08:16
数据文件 66001.txt 内容格式:
2017-09-01,1.0202,1.6531,2.4647,1.1081,NaN,2.9068
2017-09-04,1.0134,1.6621,2.4576,1.1083,NaN,2.8983
2017-09-05,1.0168,1.6637,2.4616,1.1085,NaN,2.9010

... ...

mpl_funds.py  读取csv 文件, 画基金净值线

# -*- coding: utf8 -*-import datetime as dtimport matplotlib as mplimport matplotlib.dates as mdateimport matplotlib.pyplot as pltfrom matplotlib.ticker import MultipleLocatorfrom matplotlib.ticker import FormatStrFormatterimport csv#import numpy as np#import pandas as pddate2num = mdate.strpdate2num('%Y-%m-%d')x = []y = []y1 =[]y2 =[]y3 =[]y4 =[]y5 =[]with open("66001.txt",'r') as csvfile:    rows = csv.reader(csvfile, delimiter=',')    for row in rows:        #print row        x.append(date2num(row[0]))        y.append(float(row[1]))        y1.append(float(row[2]))        y2.append(float(row[3]))        y3.append(float(row[4]))        y4.append(float(row[5]))        y5.append(float(row[6]))## 加这个两句 可以显示中文mpl.rcParams['font.sans-serif'] = [u'SimHei']mpl.rcParams['axes.unicode_minus'] = Falsefig = plt.figure(figsize=(12,6)) # 1200x600fig.autofmt_xdate()        # 设置x轴时间外观ax1 = fig.add_subplot(1,1,1)autodate = mdate.AutoDateLocator()ax1.xaxis.set_major_locator(autodate)  # 设置时间间隔# 设置时间标签显示格式dateFmt = mdate.DateFormatter('%y%m%d')ax1.xaxis.set_major_formatter(dateFmt)# 将x轴次刻度标签设置为61的倍数xminorLocator = MultipleLocator(61)# 显示次刻度标签的位置,没有标签文本ax1.xaxis.set_minor_locator(xminorLocator)#ax1.set_xticks() # 设置x轴间隔  ax1.set_xlim(date2num('2012-01-01'),date2num('2017-09-30')) # 设置x轴范围#plt.xticks(pd.date_range('2012-01-01','2017-09-30'))plt.xticks(rotation=90) # 显示日期旋转90度 plt.title(u'基金净值图')plt.plot(x,y, label='660010')plt.plot(x,y1,label='660011')plt.plot(x,y2,label='660012')plt.plot(x,y3,label='660013')plt.plot(x,y4,label='660014')plt.plot(x,y5,label='660015')plt.grid(True)plt.xlabel(u'日期')plt.ylabel(u'净值')plt.legend(loc=2,prop={'family':'SimHei','size':12}) # loc=2 : upper leftplt.savefig("66001.png", dpi=100)#plt.show()
看了参考书:[利用Python进行数据分析] 第6章 数据加载   读写文本格式的数据 第167页
先在数据文件加入表头: date,jz0,jz1,jz2,jz3,jz4,jz5

再简化脚本 mpl_pd_csv.py

# -*- coding: utf-8 -*-import pandas as pd# dataFrame  df = pd.read_csv('./66001.txt', parse_dates=True, index_col=0 )df.head() # 预览前5行数据df.describe() # 数据基本统计量import matplotlib.pyplot as plt# 加这个两句 可以显示中文plt.rcParams['font.sans-serif'] = [u'SimHei']plt.rcParams['axes.unicode_minus'] = Falsedf.plot(title= u'基金净值图', grid=True )plt.show()
how to 画30日移动平均线
df['jz5'].plot(grid=True)# 画30日移动平均线pd.rolling_mean(df['jz5'], 30).plot(grid=True)
plt.show()