金融数据挖掘—科学计算语言---基础篇4

金融数据挖掘—科学计算语言—基础篇4

一、Python基础

二、Numpy科学计算包

三、Pandas数据分析包

四、图形绘制

(一)Matplotlib图形绘制

在这里插入图片描述
在这里插入图片描述

练习1.

在这里插入图片描述

import matplotlib.pyplot as plt
import numpy as np
plt.figure(figsize=(10,6))  #设置画布大小,figsize以元组形式
plt.rcParams["font.family"]="SimHei"  #设置黑体,显示中文标签
plt.rcParams["font.size"]=20  #设置字体大小
x=np.arange(100,201)  #左闭右开
y=2*x+1
plt.plot(x,y)
plt.title("y=2x+1图形")
plt.legend(["y"])  #添加图的示例

在这里插入图片描述

练习2.

在这里插入图片描述

plt.figure(figsize=(10,6))
plt.scatter(np.random.rand(20)*100,np.random.rand(20)*100,c="r",s=100,alpha=0.8)  #c代表颜色,s代表大小,alpha代表透明度
plt.scatter(np.random.rand(20)*100,np.random.rand(20)*100,c="g",s=200,alpha=0.5)
plt.scatter(np.random.rand(20)*100,np.random.rand(20)*100,c="b",s=300,alpha=0.2)
plt.savefig("散点图.png",dpi=300)  #保存图片,dpi设置像素

在这里插入图片描述

练习3.

在这里插入图片描述

plt.figure(figsize=(10,6))
L=["北京","上海","香港","深圳","广州"]  #添加Lable标签
y2016=[15600,12700,11300,4270,3620]
y2017=[17400,14800,12000,5200,4020]

plt.bar(np.arange(5),y2016,color="blue",width=0.5,alpha=0.8)  #x用索引来代替
plt.bar(np.arange(5)+0.5,y2017,tick_label=L,color="green",width=0.5,alpha=0.8)  #+0.5进行错位,防止覆盖
plt.xlabel("城市前5名")
plt.ylabel("家庭数")
plt.ylim([2500,20000])  #设置纵轴范围
plt.legend(["2016","2017"])  #添加图的示例
plt.title("千万资产家庭数量条形图")  #设置标题
plt.savefig("资产家庭数条形图.png",dpi=300)  #保存图片,dpi设置像素

# 为每个柱状图添加标签
for i,j in enumerate(y2016):  #y2016是一个列表
    print(i,j)  #输出,i为索引,j为数值
    plt.text(i-0.25,j+200,j)  #添加文本,通过i,j确定位置
for i ,j in enumerate(y2017):
    plt.text(i+0.25,j+200,j)

在这里插入图片描述
在这里插入图片描述

练习4.

在这里插入图片描述

plt.figure(figsize=(10,6))  #设置绘图画布大小
plt.rcParams["font.family"]="SimHei"  #设置黑体,显示中文标签
plt.rcParams["font.size"]=20  #设置字体大小
plt.axes(aspect="equal")  #设置轴,使饼图变圆
plt.xlim(0,4)  #x轴尺寸
plt.ylim(0,4)  #y轴尺寸

x=np.array([25.15,37.24,33.36,3.68,0.57])*0.01
e=[0,0,0,0.1,0]
L=["高中","大专","本科","硕士","其他"]
plt.pie(x,explode=e,labels=L,
        autopct="%.1f%%",
        pctdistance=0.5,
        labeldistance=1,
        radius=1.5,
        wedgeprops={"linewidth":1.5,"edgecolor":"blue"},
        center=(1.8,1.8),
        frame=1)  #explod为缝隙,labels为标签
plt.legend(loc="upper right",fontsize=10)  #设置图例,loc放置位置
plt.title("信用违约客户分析饼图")
plt.savefig("信用违约客户分析饼图.jpg",dpi=300)

在这里插入图片描述
在这里插入图片描述

练习5.

在这里插入图片描述

from mpl_toolkits.mplot3d import Axes3D

plt.figure(figsize=(10,6))  #设置画布大小
ax=plt.subplot(111,projection="3d")  #创建三维绘图工程

data=np.random.randint(0,255,(3,6,6))  #随机生成0到255,3层6行6列
x,y,z=data[0],data[1],data[2]  #赋值
ax.scatter(x[:2],y[:2],z[:2],c="y",s=100)
ax.scatter(x[2:4],y[2:4],z[2:4],c="m",marker="*",s=100)
ax.scatter(x[4:6],y[4:6],z[4:6],c="k",marker="v",s=100)
ax.set_xlabel("X")  #标识x轴名称
ax.set_ylabel("Y")
ax.set_zlabel("Z")
plt.savefig("三维散点图.png",dpi=300)

在这里插入图片描述

(二)Seaborn图形绘制

Seaborn是一个基于Matplotlib的Python数据可视化库,可视之为Matplotlib的一层外套。
Seaborn简化了直接使用Matplotlib所需要的繁琐和复杂的参数设置,有助于用户快捷地创建各类复杂图形。
Seaborn的优点主要体现在:仅需进行少量参数设置就能创建赏心悦目的图形;容易创建具有统计意义的图形;能够兼容DataFrame等多种数据类型。
在这里插入图片描述

练习1.使用seaborn叠加绘制条形图和折线图
import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
plt.figure(figsize=(10,6))
x=list(range(1,20,2))  #横轴范围,步长为2
y_bar=[3,4,6,6,9,10,9,11,7,8]  #柱状图高度
y_line=[2,3,5,5,8,9,8,10,6,7]  #折线图高度
sns.set(style="whitegrid",font="SimHei")  #设置风格、字体
plt.bar(x,y_bar)
plt.plot(x,y_line,"-o",color="y")

在这里插入图片描述

练习2.

在这里插入图片描述

from scipy import stats

plt.rcParams["axes.unicode_minus"]=False  #负号显示
plt.rcParams["font.family"]="SimHei"  #中文显示
plt.figure(figsize=(10,6))  #设置画布大小

mean=[0,1]  #设置均值
cov=np.mat([[1,0.5],[0.5,1]])  #设置协方差
data=np.random.multivariate_normal(mean,cov,1000)  #给DataFrame增加数据,均值、协方差、行数(2列)
df=pd.DataFrame(data,columns=["x","y"])  #以DataFrame形式存储数据
g=sns.jointplot(x="x",y="y",data=df,kind="hex",color="c")  #x,y是DataFrame的columns的列标签,数据为DataFrame形式,hex是HexBin图,是直方图的二维模拟
g.annotate(stats.pearsonr,fontsize=15)  #annotate()函数作用是添加注释,添加皮尔逊相关系数
g.set_axis_labels("X轴","Y轴",fontsize=15)
plt.savefig("seaborn联合直方图.png",dpi=300)

#构造二维矩阵,mean为均值向量,第一维均值为0,第二维均值为1,cov是协方差
# mean,cov=[0,1],[(1,0.5),(0.5,1)]
# data=np.random.multivariate_normal(mean,cov,1000)  #生成多元正态分布N*2数组
# df=pd.DataFrame(data,columns=["X","Y"])  #以DataFrame形式存储数据
# g=sns.jointplot(x="X",y="Y",data=df,kind="hex",color="c")

在这里插入图片描述
在这里插入图片描述

练习3.

在这里插入图片描述

x1=np.arange(100)  #设定x范围为0到99
y1=2*x1+1
#给y增加一个扰动
var=np.random.normal(0,50,100)  #生成高斯随机分布随机数,均值为0,方差50,100个
y1=y1+var

df=pd.DataFrame({"CorX":x1,"CorY":y1})  #以DataFrame形式存储数据,通过字典键、值
g=sns.jointplot(x="CorX",y="CorY",data=df,kind="reg",color="b")  #reg用来拟合回归直线
g.annotate(stats.pearsonr,fontsize=12)  #添加相关性
g.set_axis_labels("X轴","Y轴",fontsize=15)  #重置x轴y轴名称
plt.savefig("seaborn回归分析.png",dpi=300)

在这里插入图片描述
在这里插入图片描述

使用sklearn进行上面(练习3)的二维数据之间的回归分析
from sklearn.linear_model import LinearRegression  #linear_model线性模型,LinearRegression线性回归

reg=LinearRegression()
X=df[["CorX"]]  #X是二维的
Y=df["CorY"]
reg.fit(X,Y)
plt.scatter(X,Y)
plt.plot(X,reg.predict(X),"r")

在这里插入图片描述

练习4.

在这里插入图片描述

plt.rcParams["font.family"]="SimHei"  #设置黑体,显示中文标签

reg=LinearRegression()
diameter=[[6],[8],[10],[14],[18]]
price=[7,9,13,17.5,18]
reg.fit(diameter,price)
plt.plot(diameter,price,"or")
plt.plot([[0],[12],[20],[40],[2]],reg.predict([[0],[12],[20],[40],[2]]),"b")
plt.legend(["原始数据点","回归"])
plt.savefig("sklearn一元回归.png",dpi=300)

在这里插入图片描述

五、数据源处理

六、文本处理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一只敲代码的嗷呜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值