python 金融数据分析与挖掘
matplotlib
数据可视化是数据分析与挖掘中一个非常重要的任务。数据可视化是通过各种类型的图像来展现数据的分析结果或者分析过程,从而提高分析的效率和可读性。本章将介绍Python中用于数据可视化的一个非常重要的包:Matplotlib,并通过Matplotlib包中的pyplot模块,实现常见图像的绘制,如散点图、线性图、柱状图、直方图、饼图、箱线图及子图。
Matplotlib图像构成Matplotlib图像大致可以分为如下4个层次结构。
(1)canvas(画板)。位于最底层,导入matplotlib包时就自动存在。
(2)figure(画布)。建立在canvas之上,从这一层就能开始设置其参数。
(3)axes(子图)。将figure分成不同块,实现分面绘图。
(4)图表信息(构图元素)。添加或修改axes上的图形信息,优化图表的显示效果
# -*- coding: utf-8 -*-
import matplotlib.pyplot as plt
import numpy as np
plt.Figure() # 创建画布
x = np.linspace(-1, 1,100)
#plt.subplot(2,1,1) # 分为2*1图形阵,选择第一张图片绘画
plt.title("y=x^2 & y=x") # 添加标题
plt.xlabel("x") # 添加X轴的名称
plt.ylabel("y") # 添加y轴的名称
plt.xlim((0,1)) #指定x轴的范围
plt.ylim((0,1)) #指定y轴的范围
plt.xticks([-1,-0.5,0,0.5,1]) #设定x轴的刻度
plt.yticks([0,0.5,1]) # 设定y轴的刻度
plt.plot(x,x**2)
plt.plot(x,x)
plt.legend(["y=x^z","y=x"]) # 添加图例
plt.savefig("5.png")
plt.show()
# -*- coding: utf-8 -*-
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(0,10,0.2)
y1 = np.sin(x)
y2 = np.cos(x)
plt.xticks([0,2.5,5,7.5,10]) #设定x轴的刻度
plt.rcParams["font.sans-serif"] = "SimHei" #设置字体为simhei
plt.rcParams["axes.unicode_minus"] = False #解决负号显示异常问题
plt.title("y=sin(x)曲线")
plt.plot(x,y1)
plt.plot(x,y2)
plt.savefig("2.png")
plt.show()
plt.show()图像不显示问题
添加代码
import matplotlib
import pylab
matplotlib.use("TkAgg")
plt.show("9.png")
中文字符显示问题
添加代码
plt.rcParams["font.sans-serif"] = "SimHei" #设置字体为simhei
plt.rcParams["axes.unicode_minus"] = False #解决负号显示异常问题
坐标轴转换
# -*- coding: utf-8 -*-
import matplotlib
import matplotlib.pyplot as plt
import numpy as np
matplotlib.use("TkAgg")
x = np.array([1,2,3,4,5,6,7,8])
v = ["第一","第二","第三","第四","第物","第六","第七","第八"]
y = np.array([100,125,123,100,123,147,156,132])
plt.rcParams["font.sans-serif"] = "SimHei" #设置字体为simhei
plt.rcParams["axes.unicode_minus"] = False #解决负号显示异常问题
plt.xlabel("季度")
plt.xticks(x,v,rotation = 90)
plt.ylabel("销售金额")
plt.plot(x, y)
plt.savefig("9.jpg")
plt.show("9.jpg")
销售数据散点图
# -*- coding: utf-8 -*-
# 散点图 函数为scatter(x,y[可选项])
import matplotlib
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
matplotlib.use("TkAgg")
path = "C:/Users/xiexi/Desktop/学习数据.xlsx"
date = pd.read_excel(path)
td = date.loc[date['车次编号'] ==1001,['日期','人数']].sort_values('日期')
x = np.arange(1,len(td.iloc[:,0])+1)
y = td.iloc[:,1]
v = td.iloc[:,0]
# v.map(methodcaller('strftime', '%d-%m-%Y'))
plt.rcParams["font.sans-serif"] = "SimHei" #设置字体为simhei
plt.rcParams["axes.unicode_minus"] = False #解决负号显示异常问题
plt.title("1001车次人数表")
plt.xlabel("日期")
plt.ylabel("人数")
plt.xticks(x,v)
plt.scatter(x, y)
plt.savefig("1.png")
plt.show("1.png")