搭建好数据挖掘基础阶段环境,包括Matplotlib,Numpy,Pandas,Ta-Lib(技术指标库),tables(hdfs),jupyter(数据分析与展示平台)等
界面启动、创建文件
在终端输入jupyter notebook/ipython
notebook
cell操作
cell:一对in out会话被视作为一个代码单元,称为cell
编辑模式:enter进入/鼠标点击
命令模式:esc进入/鼠标在本单元格外点一下
快捷键:
两种模式通用:
shift + enter:执行本单元代码,并跳至下一单元
CTRL+enter:执行本单元代码,留在本单元
cell行号前的*,表示代码正在运行
命令模式:
快捷键 | 功能 |
---|---|
Y | 切换到code模式 |
M | 切换到markdown模式 |
A | 在当前cell上面添加cell |
B | 在当前cell下面添加cell |
双击D | 删除当前cell |
Z | 回退 |
L | 为当前cell加上行号 |
CTRL+shift+p | 对话框输入命令直接运行 |
CTRL+home | 快速跳转首个cell |
CTRL+end | 快速跳转最后一个cell |
编辑模式:
快捷键 | 功能 |
---|---|
CTRL+鼠标点击 | 多光标操作 |
CTRL+Z | 回退 |
CTRL+Z | 重做 |
变量、方法后+tab | 补全代码 |
CTRL+/ | 添加/取消注释 |
在最后语句加分号 | 屏蔽自动输出信息 |
快捷键 | 功能 |
---|---|
撤销 | Ctrl/Command + Z |
重做 | Ctrl/Command + Y |
加粗 | Ctrl/Command + B |
斜体 | Ctrl/Command + I |
标题 | Ctrl/Command + Shift + H |
无序列表 | Ctrl/Command + Shift + U |
有序列表 | Ctrl/Command + Shift + O |
检查列表 | Ctrl/Command + Shift + C |
插入链接 | Ctrl/Command + Shift + L |
插入图片 | Ctrl/Command + Shift + G |
查找 | Command + F |
替换 | Command + G |
类似matlab的画图函数,作用于当前图形的当前坐标系
import matplotlib.pyplot as plt
# 设置matplotlib正常显示中文和负号
matplotlib.rcParams['font.sans-serif']=['SimHei'] # 用黑体显示中文
matplotlib.rcParams['axes.unicode_minus']=False # 正常显示负号
plt.xlabel("横轴/单位",fontproperties="STLiti")
plt.ylabel("纵轴/单位",fontproperties="STXingkai")
plt.title("标题",fontproperties="STXinwei")
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import seaborn as sns
# plot:面向过程的画图方法
plt.figure(figsize=(20,8),dpi=80) #创建画布;figsize指定图像长宽, dpi图像清晰度
plt.plot([1,2,3],[4,5,6],color = "r",linestyle = "--") #绘制图像;[]内分别为x,y轴;color线条颜色;linestyle线条格式
plt.title('Age distribution') #标题
plt.xlabel('Age') #x轴标签
plt.ylabel('#Employee') #y轴标签
plt.show() #显示图像;注意:show会释放figure资源,show之后保存的是空图片
plt.savefig(path) #保存图像
plt.xticks(x,**kwargs) #自定义修改x刻度
plt.yticks(y,**kwargs) #自定义修改y刻度
plt.grid(True,linestyle = "--",alpha = 0.5) #显示网格; linestyle网格形式;alpha透明度
# subplots:面向对象的画图方法
figure,axes = plt.subplots(nrows=1,ncols=2,**fig_kw) #创建一行两列多个绘图区
axes[0].plot() #面向对象的画法需要在plot前面加上指定绘图区
axes[0].legend() #显示图例
axes[0].set_xticks(x[::5],x_label[::5]) #修改x刻度
axes[0].set_yticks(range(0,40,5)) #修改y刻度
axes[0].grid(True,linestyle = "--",alpha = 0.5) #显示网格
axes[0].set_xlabel("时间") #x轴标签
axes[0].set_ylabel("温度") #y轴标签
axes[0].set_title("上海城市气温变化") #标题
# 直方图Histogram:
fig = plt.figure() #创建画布
ax = fig.add_subplot(1, 1, 1)
ax.hist(df['Age'], bins=7) #绘制图像,bin为组数
plt.title('Age distribution')
plt.xlabel('Age')
plt.ylabel('#Employee')
plt.show()
#箱线图
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
ax.boxplot(df['Age'])
plt.show()
#小提琴图
sns.violinplot(df['Age'],df['Gender'])
sns.despine()
#条形图
var = df.groupby('Gender').Sales.sum()
fig = plt.figure()
ax1 = fig.add_subplot(1, 1, 1)
ax1.set_xlabel('Gender')
ax1.set_ylabel('Sum of Sales')
ax1.set_title('Gender wise Sum of Sales')
var.plot(kind='bar')
#折线图:趋势变化
var = df.groupby('BMI').Sales.sum()
fig = plt.figure()
ax1 = fig.add_subplot(1,1,1)
ax1.set_xlabel('BMI')
ax1.set_ylabel('Sum of Sales')
ax1.set_title('BMI wise Sum of Sales')
var.plot(kind = 'line') # 选择折线图类型
#二维堆叠柱形图:统计/对比
var = df.groupby(['BMI','Gender']).Sales.sum()
var.unstack().plot(kind = 'bar',stacked = True, color=['red','blue'],grid=False)
#散点图:反映关系/规律
plt.scatter(x,y) # 直接输入x,y轴即可
#气泡图
fig = plt.figure()
ax = fig.add_subplot(1,1,1)
ax.scatter(df['Age'],df['Sales'],s=df['Income']) #图像绘制
plt.show()
#饼图
var = df.groupby(['Gender']).sum().stack()
temp = var.unstack()
type(temp)
x_list = temp['Sales']
label_list = temp.index
plt.axis('equal')
plt.pie(x_list,labels = label_list,autopct = '%1.1f%%') #图像绘制
plt.title('Pastafarianism expenses')
plt.show()
#区域图
data = np.random.rand(4, 2) #生成数据
rows = list('1234')
columns = list('MF')
fig, ax = plt.subplots()
ax.pcolor(data, cmap=plt.cm.Reds, edgecolors='k')
ax.set_xticks(np.arange(0, 2) + 0.5)
ax.set_yticks(np.arange(0, 4) + 0.5)
ax.xaxis.tick_bottom()
ax.yaxis.tick_left()
ax.set_xticklabels(columns, minor=False, fontsize=20)
ax.set_yticklabels(rows, minor=False, fontsize=20)
plt.show()
import numpy as np
#查看属性
ndarry.shape #获取行列数
ndarry.dtype #类型
ndarry.ndim #数组维数
ndarry.size #数组中的元素数量
ndarry.itemsize #一个数据元素的长度(字节)
#生成数组
np.zeros(shape) #生成0的数组
np.ones(shape) #生成1的数组
np.array() #从现有数组中生成,深拷贝生成后不随原数组改变
np.copy() #深拷贝生成后不随原数组改变
np.asarray() #浅拷贝,生成后随原数组改变
np.linspace(start,end,num,endpoint,retstep,dtype) #生成start-end固定范围的数组,等距离生成,endpoint指是否包含stop值
np.arange(start,stop,step,dtype) #以step为距离生成
np.random.uniform(low=a,high=b,size=n) #生成采样下界为a,上界为b,样本数为n的随机均匀分布数组
np.random.normal(loc=a,scale=b,size=n) #生成均值为a,标准差为b,样本数为n的数组
my_array[0,:3] #数组切片取值
my_array[1,2,3] #数组索引取值
my_array.reshape([10,8]) #形状修改,行列互换,返回新的数组,原始数据不变
my_array.resize(shape) #没有返回值,对原始数组进行修改
my_array.T #转置
my_array.astype() #数组类型修改
np.unique() #去重
np.append(other_array) #增加记录
np.insert(my_array,1,5) #插入记录
np.delete(my_array,[1]) #删除记录
#逻辑运算
np.all() #只要有一个false则返回false,全true返回true
np.any() #全false返回false
np.where(blossoms,true返回值,false返回值) #三元运算符
np.logical_or() #逻辑或
np.logical_and() #逻辑与
#统计运算
np.max(my_array,axis=0/1) #最大值,axis=0按列,axis=1按行
np.min() #最小值
np.mean(my_array) #获取平均值
np.median(my_array) #获取中位数
np.corrcoef() #获取方差
np.std(my_array) #获取标准差
np.argmax(my_array,axis=0/1) #返回最大值的索引位置
#其他
np.hsatck() #横向拼接
np.vstack() #纵向拼接
np.concatenate() #横向拼接
np.genformtxt('test.csv',delimiter=',') #读取文件