数据可视化:
·我们生活中常见的图形
·数据可视化基础
·绘图包Mateplotlib如何使用?
·如何使用pandas绘图?
·如何用Notebook制作数据分析报告
1生活中常见的图形
技术成熟度“几字形”曲线
分为萌芽期、过热期、低谷期、复苏期、成熟期。
库布勒罗斯转变曲线
在面对一个有用的技能时,你是像上图中的拒绝、逃离现实、愤怒还是最终取得成功呢?
2数据可视化基础知识
画板figure
画纸Axes/Subplot
坐标轴Axis
坐标轴x/y label
标题title
主要刻度Major tick
次要刻度Minor tick
图例Legend
网格Grid
线Line
点Markers
数值类型:散点图scatter plot
时间顺序:折线图line plot
分类数据:柱状图bar plot
颜色:热图heatmap
3python绘图包matplotlib
首先在conda中安装,代码:conda install matplotlib
·通过pyplot绘图
#导入matplotlib的pyplot模块
import matplotlib.pyplot as plt
'''
第1步:定义x和y坐标轴上的点
'''
#x坐标轴上点的数值
x=[1,2,3,4]
#y坐标轴上点的数值
y=[1,4,9,16]
'''
第2步:使用plot绘制线条
'''
plt.plot(x,y)
'''
第3步:显示图形
'''
plt.show(x,y)
·线条属性
'''
color表示颜色
marker:点的形状
linestyle:线条的形状
'''
plt.plot(x,y,color='r',marker='o',linestyle='dashed')
'''
axis:坐标轴范围
语法axis[xmin,xmax,ymin,ymax]
'''
plt.axis([0,6,0,20])
plt.show()
·多图
import numpy as np
t=np.arange(0,5,0.2)
t
array([ 0. , 0.2, 0.4, 0.6, 0.8, 1. , 1.2, 1.4, 1.6, 1.8, 2. ,
2.2, 2.4, 2.6, 2.8, 3. , 3.2, 3.4, 3.6, 3.8, 4. , 4.2,
4.4, 4.6, 4.8])
#线条1
x1=y1=t
#线条2
x2=x1
y2=t**2
#线条3
x3=x1
y3=t**3
#使用plot绘制线条
linesList=plt.plot(x1,y1,
x2,y2,
x3,y3)
#使用setp方法可以同时设置多个线条属性
plt.setp(linesList,color='r')
plt.show()
·添加文本
'''
第1步:定义x和y坐标轴上的点
'''
#x坐标轴上点的数值
x=[1,2,3,4]
#y坐标轴上点的数值
y=[1,4,9,16]
'''
第2步:使用plot绘制线条
'''
plt.plot(x,y)
'''
添加文本
'''
#x轴文本
plt.xlabel('x轴坐标')
#y轴文本
plt.ylabel('y轴坐标')
#标题
plt.title('标题')
#添加注释
plt.annotate('我是注释',xy=(2,5),xytext=(2,10),
arrowprops=dict(facecolor='black',shrink=0.01),
)
'''
第3步:显示图形
'''
plt.show()
修改后:
·如何创建多个画板
#1创建画板
fig=plt.figure(1)
#2创建画纸
ax1=plt.subplot(2,1,1)
#3在画纸1上绘画
plt.plot([1,2,3])
#4在画纸2上绘画
ax2=plt.subplot(2,1,2)
plt.plot([4,5,6])
plt.show()
4如何使用pandas绘图
互联网数据获取:conda install pandas-datareader
·导入包
#数据分析包
import pandas as pd
'''
互联数据获取包
注意:安装包的命令中的连接符是‘-’也就是pandas-datareader。
但是这里导入包的连接符是下划线‘_’,也就是pandas-datareader
这里一定要注意安装和导入包这两个连接符是不一样的,不然无法导入使用
'''
from pandas_datareader import data
·6家公司
'''
获取国内股票数据的方式是:“股票代码”+“对应股市”(港股为.hk,A股为.ss)
例如腾讯是港股是:0700.hk
'''
#字典:6家公司的股票
gafataDict={'谷歌':'GOOG','亚马逊':'AMZN','Facebook':'FB',
'苹果':'AAPL','阿里巴巴':'BABA','腾讯':'0700.hk'}
·获取数据
# 获取哪段时间范围的股票数据
start_date = '2017-01-01'
end_date = '2018-01-01'
#从雅虎财经数据源(get_data_yahoo)获取阿里巴巴股票数据
babaDf=data.get_data_yahoo(gafataDict['阿里巴巴'],start_date, end_date)
·查看数据
#查看前5行数据
babaDf.head()
#查看数据集情况
babaDf.info()
·股票时间
babaDf.plot(x=babaDf.index,y='Close')
#x坐标轴文本
plt.xlabel('时间')
#y坐标轴文本
plt.ylabel('股价(美元)')
#图片标题
plt.title('2017年阿里巴巴股价走势')
#显示网格
plt.grid(True)
#显示图形
plt.show()
·散点图
babaDf.plot(x='Volume',y='Close',kind='scatter')
#x坐标轴文本
plt.xlabel('成交量')
#y坐标轴文本
plt.ylabel('股价(美元)')
#图片标题
plt.title('成交量和股价')
#显示网格
plt.grid(True)
#显示图形
plt.show()
·GAFATA比较
#绘制谷歌的画纸1
ax1=googDf.plot(x=googDf.index,y='Close')
#通过指定画纸ax,在同一张画纸上绘图
#亚马逊
amazDf.plot(ax=ax1,x=amazDf.index,y='Close')
fbDf.plot(ax=ax1,x=fbDf.index,y='Close')
#苹果
applDf.plot(ax=ax1,x=applDf.index,y='Close')
#阿里巴巴
babaDf.plot(ax=ax1,x=babaDf.index,y='Close')
#腾讯
txDf.plot(ax=ax1,x=txDf.index,y='Close_dollar')
#x坐标轴文本
plt.xlabel('时间')
#y坐标轴文本
plt.ylabel('股价(美元)')
#图片标题
plt.title('2018年GAFATA股价累计涨幅比较')
#显示网格
plt.grid(True)
plt.show()
'''
使用label自定义图例
'''
#绘制谷歌的画纸1
ax1=googDf.plot(x=googDf.index,y='Close',label='谷歌')
#通过指定画纸ax,在同一张画纸上绘图
#亚马逊
amazDf.plot(ax=ax1,x=amazDf.index,y='Close',label='亚马逊')
fbDf.plot(ax=ax1,x=fbDf.index,y='Close',label='Facebook')
#苹果
applDf.plot(ax=ax1,x=applDf.index,y='Close',label='苹果')
#阿里巴巴
babaDf.plot(ax=ax1,x=babaDf.index,y='Close',label='阿里巴巴')
#腾讯
txDf.plot(ax=ax1,x=txDf.index,y='Close_dollar',label='腾讯')
#x坐标轴文本
plt.xlabel('时间')
#y坐标轴文本
plt.ylabel('股价(美元)')
#图片标题
plt.title('2018年GAFATA累计涨幅')
#显示网格
plt.grid(True)
plt.show()
因为谷歌和亚马逊的股价比较高,造成我们看不出其他4家公司的股票走势。 所以根据股价我们可以将这6家公司分成2组,一组是股价较高的谷歌和亚马逊。另外一组是股价较低的4家公司。
'''
第1组:谷歌,亚马逊
'''
#绘制谷歌的画纸2
ax2=googDf.plot(x=googDf.index,y='Close',label='谷歌')
#通过指定画纸ax,在同一张画纸上绘图
#亚马逊
amazDf.plot(ax=ax2,x=amazDf.index,y='Close',label='亚马逊')
#x坐标轴文本
plt.xlabel('时间')
#y坐标轴文本
plt.ylabel('股价(美元)')
#图片标题
plt.title('2018年谷歌和亚马逊累计涨幅')
#显示网格
plt.grid(True)
plt.show()
'''
第2组:4家公司
'''
#绘制Facebook的画纸3
#通过指定画纸ax,在同一张画纸上绘图
ax3=fbDf.plot(x=fbDf.index,y='Close',label='Facebook')
#苹果
applDf.plot(ax=ax3,x=applDf.index,y='Close',label='苹果')
#阿里巴巴
babaDf.plot(ax=ax3,x=babaDf.index,y='Close',label='阿里巴巴')
#腾讯
txDf.plot(ax=ax3,x=txDf.index,y='Close_dollar',label='腾讯')
#x坐标轴文本
plt.xlabel('时间')
#y坐标轴文本
plt.ylabel('股价(美元)')
#图片标题
plt.title('GAFATA2018年累计涨幅')
#显示网格
plt.grid(True)
plt.show()
·柱状图:股价平均值
#6家公司股票收盘价平均值
gafataMeanList=[googDf['Close'].mean(),#谷歌
amazDf['Close'].mean(),#亚马逊
fbDf['Close'].mean(),#Facebook
applDf['Close'].mean(),#苹果
babaDf['Close'].mean(),#阿里巴巴
txDf['Close_dollar'].mean()#腾讯
]
#创建pandas一维数组Series
gafataMeanSer=pd.Series(gafataMeanList,
index=['谷歌',
'亚马逊',
'Facebook',
'苹果',
'阿里巴巴',
'腾讯'])
gafataMeanSer.plot(kind='bar',label='GAFATA')
#图片标题
plt.title('2017年GAFATA股价平均值')
#x坐标轴文本
plt.xlabel('公司名称')
#y坐标轴文本
plt.ylabel('股价平均值(美元)')
plt.grid(True)
plt.show()
改为箱线图
#存放6家公司的收盘价
closeDf=pd.DataFrame()
#合并6家公司的收盘价
closeDf=pd.concat([closeDf,googDf['Close'],#谷歌
amazDf['Close'],#亚马逊
fbDf['Close'],#Facebook
applDf['Close'],#苹果
babaDf['Close'],#阿里巴巴
txDf['Close_dollar']#腾讯
],axis=1)
#重命名列名为公司名称
closeDf.columns=['谷歌','亚马逊','Facebook','Facebook','阿里巴巴','阿里巴巴']
#箱线图
closeDf.plot(kind='box')
plt.grid(True)
plt.show()
5如何用Notebook制作数据分析报告
原则:每一步都要有效结论,最后要有总结和下一步对策或趋势预测。
使用notebook中的markdown语法
#一级标题
##二级标题
...
*无需列表
1. 有序列表
**加粗**
*斜体*
[插入链接](网址)
![插入图片](图片路径)
>引用
- - -分割线
生成幻灯片
·显示幻灯片单元格菜单view-cell toolbar-slideshow
·隐藏幻灯片单元格菜单view-cell toolbar-none
案例:泰坦尼克号生存预测