在艺术领域,达芬奇和毕加索等大师通过他们的作品让人们更接近现实。数据科学家们也不逊色于艺术家,他们以数字可视化的形式“绘制”数据,揭示隐藏在数据中的模式和洞察。当人们接触到可视化的内容或数据时,他们的感知、认知和沟通能力会得到增强。
在数据科学领域,有多种工具可以进行数据可视化。本文将展示如何使用Python进行各种可视化图表的绘制。要进行Python中的可视化,其实并不复杂——Python已经为准备了两个专门的可视化库,即matplotlib和seaborn。
Python提供了两个强大的可视化库:matplotlib和seaborn。Matplotlib是一个基于Python的绘图库,提供完整的2D支持和有限的3D图形支持。它适用于在交互式环境中跨平台生成出版质量的图形,也可用于动画制作。Seaborn则是基于matplotlib的库,用于创建信息丰富且吸引人的统计图形。它提供了内置主题、调色板、函数和工具,用于可视化单变量、双变量、线性回归、数据矩阵、统计时间序列等,使能够构建复杂的可视化。
import matplotlib.pyplot as plt
import pandas as pd
df = pd.read_excel("E:/First.xlsx", "Sheet1")
fig = plt.figure()
ax = fig.add_subplot(1,1,1)
ax.hist(df['Age'], bins=7)
plt.title('年龄分布')
plt.xlabel('年龄')
plt.ylabel('员工数')
plt.show()
fig = plt.figure()
ax = fig.add_subplot(1,1,1)
ax.boxplot(df['Age'])
plt.show()
import seaborn as sns
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('性别')
ax1.set_ylabel('销售额总和')
ax1.set_title("按性别划分的销售额总和")
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('销售额总和')
ax1.set_title("按BMI划分的销售额总和")
var.plot(kind='line')
var = df.groupby(['BMI', 'Gender']).Sales.sum()
var.unstack().plot(kind='bar', stacked=True, color=['red', 'blue'], grid=False)
fig = plt.figure()
ax = fig.add_subplot(1,1,1)
ax.scatter(df['Age'], df['Sales'])
plt.show()
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()
x_list = temp['Sales']
label_list = temp.index
plt.axis("equal")
plt.pie(x_list, labels=label_list, autopct="%1.1f%%")
plt.title("性别分布的销售额")
plt.show()
import numpy as np
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()