数据之美-Python数据可视化

640?wx_fmt=jpeg

   阅读文本大概需要 6 分钟。

之前也写过画可视化的方法的文章,用的是 pyecharts 库:

我们这次主要用到两个库来画图,Matplotlib 库和 seaborn 库。

我们先要安装这两个库,分别用 pip 命令安装即可。

pip install matplotlib
pip install seaborn

安装好后就可以导入了,取一个名称短一点的别名。

import matplotlib.pyplot as plt
import seaborn as sn

直方图

直方图是一种二维统计图表,用图形表示数据的分布情况。

Matplotlib 画直方图:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

a = np.random.randn(200)
s = pd.Series(a)

plt.hist(s)
plt.show()

640?wx_fmt=png

Seaborn 画直方图,当参数 kde=False 时,和 上面 Matplotlib 画的直方图基本一样。

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sn

a = np.random.randn(200)
s = pd.Series(a)

sn.distplot(s, kde=False)
plt.show()

640?wx_fmt=png

当 kde 参数默认不填或者设置当参数 kde=True 时,在上图基础上,会显示核密度估计,这可以帮助我们估计概率密度。

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sn

a = np.random.randn(200)
s = pd.Series(a)

sn.distplot(s, kde=True)
plt.show()

640?wx_fmt=png

条形图

条形图是用宽度相同的条形的高度或长短来表示数据多少的图形。

Matplotlib 画条形图:

import matplotlib.pyplot as plt

x = ["a", "b", "c", "d", "e", "f"]
y = [22, 44, 66, 95, 77, 55]

plt.bar(x, y)
plt.show()

640?wx_fmt=png

Seaborn 画条形图:

import matplotlib.pyplot as plt
import seaborn as sn

x = ["a", "b", "c", "d", "e", "f"]
y = [22, 44, 66, 95, 77, 55]

sn.barplot(x, y)
plt.show()

640?wx_fmt=png

通过效果图可以看出,Seaborn 生成的条形图默认颜色不一样,视觉效果更好些。

折线图

折线图可以显示随时间而变化的连续数据,因此非常适用于显示在相等时间间隔下数据的趋势。

用 Matplotlib 库画折线图:

import pandas as pd
import matplotlib.pyplot as plt

x = [2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019]
y = [50, 25, 70, 200, 170, 160, 190, 300, 320, 350]
plt.plot(x, y)
plt.show()

640?wx_fmt=png

用 seaborn 库画折线:

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sn

x = [2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019]
y = [50, 25, 70, 200, 170, 160, 190, 300, 320, 350]

df = pd.DataFrame({'x': x, 'y': y})
sn.lineplot(x="x", y="y", data=df)
plt.show()

640?wx_fmt=png

我们发现,画折线图,这两个库的效果几乎一样,只是 seaborn 库画的图标注了 x 和 y 坐标的位置。

散点图

散点图是指在回归分析中,数据点在直角坐标系平面上的分布图,散点图表示因变量随自变量而变化的大致趋势,据此可以选择合适的函数对数据点进行拟合。

用 Matplotlib 库画散点图:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

N = 1000
x = np.random.randn(N)
y = np.random.randn(N)
plt.scatter(x, y, marker='x')
plt.show()

640?wx_fmt=png

用 seaborn 库画散点图:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sn

N = 1000
x = np.random.randn(N)
y = np.random.randn(N)
df = pd.DataFrame({'x': x, 'y': y})
sn.jointplot(x="x", y="y", data=df, kind='scatter')
plt.show()

640?wx_fmt=png

两个方法画的图差不多,区别在于 Matplotlib 库画的图默认是长方形,seaborn 库画图默认是正方形,不仅画出了散点图,还给出了他们的分布情况。

箱线图

箱线图,是一种用作显示一组数据分散情况资料的统计图。

Matplotlib 绘制箱线图:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sn


# 生成 0-1 之间的 10*5 维度数据
data=np.random.normal(size=(10, 5))
lables = ["a", "b", "c", "d", "e"]

plt.boxplot(data, labels=lables)
plt.show()

640?wx_fmt=png

Seaborn 绘制箱线图:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sn


# 生成 0-1 之间的 10*5 维度数据
data=np.random.normal(size=(10, 5))
lables = ["a", "b", "c", "d", "e"]

# 用 Seaborn 画箱线图
df = pd.DataFrame(data, columns=lables)
sn.boxplot(data=df)
plt.show()

640?wx_fmt=png

饼图

饼图常用于统计学模块,用于显示各块的比例。

Matplotlib 画饼图:

import matplotlib.pyplot as plt

nums = [12, 45, 29, 46, 30]
labels = ['A', 'B', 'C', 'D', 'E']

plt.pie(x=nums, labels=labels)
plt.show()

640?wx_fmt=png

热力图

热力图是以特殊高亮的形式显示访客热衷的页面区域和访客所在的地理区域的图示。

数据用 seaborn 中自带的 flights 航班数据,记录了 1949 年到 1960 年期间的每个月航班乘客的数量。

import matplotlib.pyplot as plt
import seaborn as sn

flights = sn.load_dataset("flights")
data = flights.pivot('year', 'month', 'passengers')
sn.heatmap(data)
plt.show()

颜色越浅表示乘客越多。

640?wx_fmt=png

雷达图

玩过绝地求生游戏的伙伴应该会很熟悉这种图,游戏结束后会出现一张评价雷达图。

640?wx_fmt=png

看到这个图,生存值为 100,我们就知道了,肯定是大吉大利的「吃鸡」了,下面我们用 Matplotlib 库画出来。

import numpy as np
import matplotlib.pyplot as plt
import seaborn as sn
from matplotlib.font_manager import FontProperties

labels = np.array([u" 生存 ", u" 伤害 ", u" 击败 ", u" 支援 ", u" 物资 "])
stats = [100.0, 95.0, 95.8, 62.8, 96.8]

angles = np.linspace(0, 2*np.pi, len(labels), endpoint=False)
stats = np.concatenate((stats, [stats[0]]))
angles = np.concatenate((angles, [angles[0]]))

fig = plt.figure()
ax = fig.add_subplot(111, polar=True)
ax.plot(angles, stats, 'o-', linewidth=2)
ax.fill(angles, stats, alpha=0.25)

# 设置中文字体
font = FontProperties(fname=r"C:\Windows\Fonts\simhei.ttf", size=14)
ax.set_thetagrids(angles * 180/np.pi, labels, FontProperties=font)
plt.show()

640?wx_fmt=png

成对关系

我们用 Seaborn 自带的 iris 数据集,什么是 Iris 数据集呢?这里引用下百度百科的解释:Iris 数据集是常用的分类实验数据集,由 Fisher, 1936 收集整理。Iris 也称鸢尾花卉数据集,是一类多重变量分析的数据集。数据集包含 150 个数据集,分为 3 类,每类 50 个数据,每个数据包含 4 个属性。可通过花萼长度,花萼宽度,花瓣长度,花瓣宽度4个属性预测鸢尾花卉属于(Setosa,Versicolour,Virginica)三个种类中的哪一类。

import matplotlib.pyplot as plt
import seaborn as sn

iris = sn.load_dataset('iris')
sn.pairplot(iris)
plt.show()

640?wx_fmt=png

Python 数据可视化方法就介绍到这里了,如果你有更好的方法,欢迎给我留言。

640?wx_fmt=png

640?wx_fmt=png
推荐

1.



640?wx_fmt=png
时刻

01. 公众号(ID:Myaiy24_DT)后台回复「06」获取「数据仓库工具箱, 3rd Edition」、「阿里巴巴大数据之路」、「数据治理」等经典大数据和数据仓库著作电子书籍或视频赠送。

02. 如要获取《大牛带你从0到1建设数据仓库》实战高清PPT,或大数据/数仓视频课程,请关注公众号,添加小助手微信[ IDiom1128 昵称:紫霞仙子],备注:PPT。

03. 终于等到你!投入组织大怀抱,请添加小助手,拉您入群「数据仓库群」,「爬虫萌新群」、「资料分享群」,备注:入群。技术大牛们在等你,各种资源定期分享~

640?wx_fmt=png


640?wx_fmt=png


640?wx_fmt=png
感谢阅读!关注,不迷路。点个[在看],分享给朋友们吧~ 

 !据说喜欢分享的,后来都成了大神 !

                                               留言区


  • 0
    点赞
  • 0
    评论
  • 3
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
©️2020 CSDN 皮肤主题: 深蓝海洋 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值