数据可视化可以让我们很直观的发现数据中隐藏的规律,察觉到变量之间的互动关系,可以帮助我们更好的给他人解释现象,做到一图胜千文的说明效果。

常见的数据可视化库有:

  1. matplotlib 是最常见的2维库,可以算作可视化的必备技能库,由于matplotlib是比较底层的库,api很多,代码学起来不太容易。
  2. seaborn 是建构于matplotlib基础上,能满足绝大多数可视化需求。更特殊的需求还是需要学习matplotlib。
  3. pyecharts 上面的两个库都是静态的可视化库,而pyecharts有很好的web兼容性,可以做到可视化的动态效果。

但是在数据科学中,几乎都离不开pandas数据分析库,而pandas可以做:

  • 数据采集:如何批量采集网页表格数据?
  • 数据读取:pd.read_csv/pd.read_excel
  • 数据清洗(预处理):理解pandas中的apply和map的作用和异同
  • 可视化,兼容matplotlib语法(今天重点)

londonweather.csv 链接: https://pan.baidu.com/s/1yZrsWG_-RytDAwIJMs3OtA 提取码: wn54

london2018.xlsx 链接: https://pan.baidu.com/s/1Jfb082DTQb1htPTp3Dl9pg 提取码: ga3c

import pandas as pd
import matplotlib.pyplot as plt

df = pd.read_excel('london2018.xlsx')
print(df)

# plot最简单的图 Month作为横坐标 Tmax作为纵坐标
# 横坐标轴参数x传入的是df中的列名Month 纵坐标轴参数y传入的是df中的列名Tmax
df.plot(x='Month', y='Tmax')
plt.show()

"""
上面的图就是折线图,折线图语法有三种
df.plot(x='Month', y='Tmax')
df.plot(x='Month', y='Tmax', kind='line')
df.plot.line(x='Month', y='Tmax')
"""

# grid绘制格线
df.plot(x='Month', y='Tmax', kind='line', grid='True')
plt.show()

# 多个y值 上面的折线图中只有一条线, 如何将多个y绘制到一个图中,比如Tmax, Tmin
df.plot(x='Month', y=['Tmax', 'Tmin'])
plt.show()

# 条形图
df.plot(x='Month', y='Rain', kind='bar')
# 或者 df.plot.bar(x='Month', y='Rain')
plt.show()

# 水平条形图 将kind中bar替换为barh
df.plot(x='Month', y='Rain', kind='barh')
plt.show()

# 多个变量的条形图
df.plot(x='Month', y=['Tmax', 'Tmin'], kind='bar')
plt.show()

# 散点图
df.plot(kind='scatter', x='Month', y='Sun')
plt.show()

# 饼图
df.plot(kind='pie', y='Sun')
plt.show()
"""
上面的饼图绘制有两个小问题:
legend图例不应该显示
月份的显示用数字不太正规
"""
df.index = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
df.plot(kind='pie', y='Sun', legend=False)
plt.show()

# 更多数据进行操作
df2 = pd.read_csv('londonweather.csv')
print(df.head())

# 共748条记录,62年的记录
print(df2.Rain.describe())

# 箱型图
df2.plot.box(y='Rain')
# df2.plot(y='Rain', kind='box')
plt.show()

# 直方图
df2.plot(y='Rain', kind='hist')
# df2.plot.hist(y='Rain')
plt.show()

# 纵坐标的刻度可以通过bins来设置
df2.plot(y='Rain', kind='hist', bins=[0, 25, 50, 75, 100, 125, 150, 175, 200])
# df2.plot.hist(y='Rain')
plt.show()

# 多图并存
df.plot(kind='line',
y=['Tmax', 'Tmin', 'Rain', 'Sun'], # 4个变量可视化
subplots=True, # 多子图并存
layout=(2, 2), # 子图排列两行两列
figsize=(20, 10)) # 图布的尺寸
plt.show()

df.plot(kind='bar',
y=['Tmax', 'Tmin', 'Rain', 'Sun'], # 4个变量可视化
subplots=True, # 多子图并存
layout=(2, 2), # 子图排列2行2列
figsize=(20, 10)) # 图布的尺寸
plt.show()

# 加标题

df.plot(kind='bar',
y=['Tmax', 'Tmin'], # 2个变量可视化
subplots=True, # 多子图并存
layout=(1, 2), # 子图排列1行2列
figsize=(20, 5), # 图布的尺寸
title='The Weather of London') # 标题
plt.show()

# 存储为图片
df.plot(kind='pie', y='Rain', legend=False, figsize=(10, 5), title='Pie of Weather inLondon')
plt.savefig('pie.png')
plt.show()

"""
df.plot更多参数
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
# help(pd.DataFrame.plot)