数据客户化可以让我们很直观的发现数据中隐藏的规律,察觉到变量之间的互动关系,可以帮助我们更好的给他人解释现象,做到一图胜千文的说明效果。
常见的数据可视化库有:
- matplotlib:是最常见的2维库,可以算作可视化的必备技能库,由于 matplotlib 是比较底层的库,api 很多,代码学起来不太容易。
- seaborn:是构建于 matplotlib 基础上,能满足绝大多数可视化需求。更特殊的需求还是需要学习 matplotlib;
- pyecharts:上面两个库都是静态的可视化库,而 pyecharts 有很好的 web 兼容性,可以做到可视化的动态效果。
但是在数据科学中,几乎都离不开 pandas 数据分析库,而 pandas 可以做:
- 数据采集
- 数据读取
- 数据清洗
- 可视化,兼容 matplotlib 语法
在本文中我们可以学到用 pandas 做:
- 导入数据
- 绘制最简单的图 plot()
- 多个 y 的绘制图
- 折线图,条形图,饼形图和散点图绘制
- 统计信息绘图
- 箱型图
- 轴坐标刻度
- plot() 更多精细化参数
- 可视化结果输出保存
准备工作
如果之前没有学过 pandas 和 matplotlib,需要先安装好这几个库:
1 | pip install pandas |
已经安装好,现在我们导入这几个需要用到的库。使用的是伦敦的天气数据,一开始我们只有 12 个月的小数据作为例子:
1 | # jupyter notebook 中需要加入这行代码: |
plot 最简单的图(折线图)
选择 Month 作为横坐标,Tmax 作为纵坐标,绘图;
折线图语法有三种:
1 | df.plot(x='Month', y='Tmax') |
写法1:
1
2df.plot(x='Month', y='Tmax')
plt.show()绘制格线 grid
1
2df.plot(x='Month', y='Tmax', kind='line', grid=True)
plt.show()
多个 y 值
上面的折线图中只有一条线,如果将多个 y 绘制到一个图中,比如 Tmax,TMin
1 | df.plot(x='Month', y=['Tmax', 'Tmin'], kind='line',) |
条形图
1 | df.plot(x='Month', y='Rain', kind='bar',) |
水平条形图
1 | df.plot(x='Month', y='Rain', kind='barh',) |
多个变量的条形图
1 | df.plot(x='Month', y=['Tmax', 'Tmin'], kind='bar',) |
散点图
1 | df.plot(x='Month', y='Sun', kind='scatter',) |
饼形图
1 | df.plot(kind='pie', y='Sun') |
上图绘制有两个小问题:
- legend 图例不应该显示
- 月份的显示用数字不太正规
修改为如下代码:
1 | df.index = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', |
箱型图
1 | df.plot.box(y='Rain') |
直方图
1 | df.plot(y='Rain', kind='hist') |
多图并存
1 | df.plot(kind='line', y=['Tmax', 'Tmin', 'Rain', 'Sun'], |
1 | df.plot(kind='bar', y=['Tmax', 'Tmin', 'Rain', 'Sun'], |
加标题
给可视化加一个标题
1 | df.plot(kind='bar', y=['Tmax', 'Tmin',], |
保存结果
可视化的的结果可以存储为图片文件
1 | df.plot(kind='pie', y='Rain', legend=False, figsize=(10, 5), |
df.plot 更多参数
1 | df.plot(x, y, kind, figsize, title, grid, legend, style) |
- x:只有 DataFrame 对象时,x可用。横坐标变量
- y:同上,纵坐标变量
- kind:可视化图的种类,如 line, hist, bar, barh, pie, kde, scatter
- figsize:画布尺寸
- title:标题
- grid:是否显示格子线条
- legend:是否显示图例
- style:图的风格
查看 plot 参数可以使用 help
1 | In [1]: import pandas as pd |