使用Python的pandas从数据框创建matplotlib散点图

使用Python的pandas从数据框创建matplotlib散点图

在Python中,使用pandas和matplotlib可以轻松创建散点图,展示数据变量之间的关系。而pandas中的数据框(DataFrame)是一个理想的数据结构,可以用于存储和操作数据,因此,我们可以利用pandas的数据框来创建散点图。

环境设置

在开始创建散点图之前,需要在本地安装好必要的Python包。具体来说,除了Python本身,还需要安装以下三个包:

  • pandas:处理和操作数据的常用包
  • matplotlib:常用的数据可视化包
  • numpy:包含用于数值计算的Python包

在命令行中使用以下命令安装这三个包:

pip install pandas
pip install matplotlib
pip install numpy

导入数据

假设我们有一个数据集,包含了每位客人在一家餐厅用餐的时长和花费金额。我们可以将这个数据集保存为一个CSV文件,在Python中使用pandas导入数据。

在导入数据之前,我们需要先导入pandas包,并将数据集读取为一个数据框对象:

import pandas as pd

# 读取CSV文件为数据框格式
df = pd.read_csv('restaurant_data.csv')

其中,’restaurant_data.csv’是包含我们数据集的CSV文件名。可以使用绝对路径或相对路径指定文件位置。

读取数据后,您可以查看数据框的前几行,以确保正确导入了数据:

print(df.head())

这将显示数据框中的前五行:

duration total_bill
0 34 22.01
1 31 35.26
2 27 17.44
3 45 29.96
4 24 28.44

我们的数据集有两列:’duration’表示客人用餐的时间(单位:分钟),’total_bill’表示客人花费的总金额。

创建散点图

我们可以使用matplotlib中的scatter方法来创建散点图。以下是如何从pandas数据框创建一个散点图的示例代码:

import matplotlib.pyplot as plt

# 绘制散点图
plt.scatter(df['duration'], df['total_bill'], s=10)

# 添加标题和坐标轴标签
plt.title('Duration vs. Total Bill')
plt.xlabel('Duration (min)')
plt.ylabel('Total Bill ($)')

# 显示图形
plt.show()

在这个代码示例中,我们使用scatter方法创建了一个散点图,其中x轴表示客人用餐的时间,y轴表示客人花费的总金额。s参数控制每个点的大小。我们还添加了标题,以及x轴和y轴标签。

最后一行代码plt.show()将显示散点图。

更改图形样式

散点图的样式可根据需要进行更改。在以下示例代码中,我们使用不同的标记样式和颜色来自定义散点图:

import matplotlib.pyplot as plt

# 设置样式选项
marker_style = 'o'
marker_edge_width = 1.5
marker_edge_color = 'black'
marker_face_color = 'red'

# 绘制散点图
plt.scatter(df['duration'], df['total_bill'], s=20, marker=marker_style, linewidth=marker_edge_width, edgecolors=marker_edge_color, facecolors=marker_face_color)

# 添加标题和坐标轴标签
plt.title('Duration vs. Total Bill')
plt.xlabel('Duration (min)')
plt.ylabel('Total Bill ($)')

# 显示图形
plt.show()

这个代码示例中,我们修改了的样式选项如下:

  • marker:用于指定标记类型,可以选择如下等价的字符 ‘o’ 、’.’ 、’x’、 ‘+’、 ‘d’ 等等。
  • linewidth:设置标记轮廓线的宽度
  • edgecolors:设置标记边缘的颜色
  • facecolors:设置标记填充颜色

通过设置这些选项,我们可以有效地自定义散点图的样式。

在同一张图上创建多个散点图

有时候,为了比较数据的不同方面,我们需要将多个散点图放在同一张图上进行比较。下面是如何在同一张图上绘制两个散点图的示例代码:

import matplotlib.pyplot as plt

# 拆分数据集为用餐时间小于30分钟和大于30分钟的两个数据集
df_short = df[df['duration'] <= 30]
df_long = df[df['duration'] > 30]

# 绘制两个散点图,放在同一张图上
plt.scatter(df_short['duration'], df_short['total_bill'], s=10, label='Short Duration (<30 min)')
plt.scatter(df_long['duration'], df_long['total_bill'], s=10, label='Long Duration (>30 min)')

# 添加标签和图例
plt.title('Duration vs. Total Bill')
plt.xlabel('Duration (min)')
plt.ylabel('Total Bill ($)')
plt.legend()

# 显示图形
plt.show()

在这个示例代码中,我们首先将数据集拆分为用餐时间小于30分钟和大于30分钟的两个子数据集。然后,我们分别使用不同的颜色和标签绘制了两个散点图,并使用legend方法添加了图例,使得每个散点图都有其对应的标记。

结论

在本文中,我们介绍了如何使用Python中的pandas和matplotlib库,从一个数据框创建散点图。我们首先导入数据,然后使用matplotlib中的scatter方法创建散点图,并通过更改样式和在同一张图上绘制多个散点图,来定制和比较散点图的特定方面。这些技术可以帮助你对数据进行可视化,更直观地分析数据变量之间的关系。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程