数据科学入门教程:使用Matplotlib可视化数量数据
引言
在数据科学领域,数据可视化是探索和理解数据的关键步骤。本文将基于数据科学入门教程中的"可视化数量"章节,深入讲解如何使用Python的Matplotlib库创建有效的数量可视化图表。
准备工作
首先,我们需要导入必要的库并加载鸟类数据集:
import pandas as pd
import matplotlib.pyplot as plt
# 加载数据集
birds = pd.read_csv('data/birds.csv')
birds.head()
这个数据集包含了明尼苏达州各种鸟类的多项特征,包括名称、科学分类、保护状态以及各种尺寸测量值。
选择合适的图表类型
在可视化数量数据时,选择正确的图表类型至关重要:
- 折线图:展示数据随时间或有序类别的变化趋势
- 条形图:比较不同类别的数值
- 散点图:展示两个变量之间的关系和分布
- 饼图:显示各部分占总体的比例
翅膀跨度可视化实战
基础折线图
我们首先尝试用折线图展示鸟类的最大翅膀跨度:
wingspan = birds['MaxWingspan']
wingspan.plot()
这个简单的图表立即揭示了一个问题:存在明显的异常值,某些鸟类的翅膀跨度达到了2300厘米(23米),这显然不合理。
改进可视化
为了更清晰地展示数据,我们添加标签并调整x轴刻度:
plt.title('最大翅膀跨度(厘米)')
plt.ylabel('翅膀跨度(CM)')
plt.xlabel('鸟类')
plt.xticks(rotation=45)
x = birds['Name']
y = birds['MaxWingspan']
plt.plot(x, y)
plt.show()
由于鸟类名称太多,x轴标签变得难以阅读。我们可以改用散点图并仅标记异常值:
plt.title('最大翅膀跨度(厘米)')
plt.ylabel('翅膀跨度(CM)')
plt.tick_params(axis='both',which='both',labelbottom=False,bottom=False)
for i in range(len(birds)):
x = birds['Name'][i]
y = birds['MaxWingspan'][i]
plt.plot(x, y, 'bo')
if birds['MaxWingspan'][i] > 500:
plt.text(x, y * (1 - 0.05), birds['Name'][i], fontsize=12)
plt.show()
数据清洗
通过可视化,我们发现"鹰(Bald eagle)"和"草原隼(Prairie falcon)"的数据可能存在录入错误(多了一个0)。我们可以过滤掉这些异常值:
plt.title('最大翅膀跨度(厘米)')
plt.ylabel('翅膀跨度(CM)')
plt.xlabel('鸟类')
plt.tick_params(axis='both',which='both',labelbottom=False,bottom=False)
for i in range(len(birds)):
x = birds['Name'][i]
y = birds['MaxWingspan'][i]
if birds['Name'][i] not in ['Bald eagle', 'Prairie falcon']:
plt.plot(x, y, 'bo')
plt.show()
使用条形图分析类别分布
条形图非常适合展示分类数据的数量分布。让我们分析不同类别鸟类的数量:
category_count = birds.value_counts(birds['Category'].values, sort=True)
plt.rcParams['figure.figsize'] = [6, 12]
category_count.plot.barh()
这个水平条形图清晰地展示了"鸭子/鹅/水禽"类别的鸟类数量最多,这与明尼苏达州"万湖之州"的称号相符。
数据比较:叠加条形图
我们可以使用叠加条形图比较鸟类的最小和最大长度:
minLength = birds['MinLength']
maxLength = birds['MaxLength']
category = birds['Category']
plt.barh(category, maxLength)
plt.barh(category, minLength)
plt.show()
这个图表展示了每个类别中鸟类长度的范围,揭示了一个有趣的现象:体型越大的鸟类,其长度范围通常也越大。
最佳实践与技巧
- 数据清洗:可视化前检查并处理异常值
- 标签清晰:确保图表标题、轴标签清晰易懂
- 图表选择:根据分析目的选择最合适的图表类型
- 交互探索:利用Jupyter Notebook的交互性尝试不同可视化方式
- 逐步完善:从简单图表开始,逐步添加细节和改进
总结
通过本教程,我们学习了如何使用Matplotlib创建各种数量可视化图表,包括:
- 识别和处理数据异常值
- 创建折线图和散点图分析数值分布
- 使用条形图比较分类数据
- 通过叠加条形图展示数据范围
数据可视化不仅是展示数据的工具,更是发现数据问题和洞察数据规律的重要手段。掌握这些基础可视化技术将为你的数据科学之旅打下坚实基础。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考