Python数据可视化指南

在艺术领域,达芬奇和毕加索等大师通过他们的作品让人们更接近现实。数据科学家们也不逊色于艺术家,他们以数字可视化的形式“绘制”数据,揭示隐藏在数据中的模式和洞察。当人们接触到可视化的内容或数据时,他们的感知、认知和沟通能力会得到增强。

在数据科学领域,有多种工具可以进行数据可视化。本文将展示如何使用Python进行各种可视化图表的绘制。要进行Python中的可视化,其实并不复杂——Python已经为准备了两个专门的可视化库,即matplotlib和seaborn。

Python可视化基础

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()
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485