使用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方法创建散点图,并通过更改样式和在同一张图上绘制多个散点图,来定制和比较散点图的特定方面。这些技术可以帮助你对数据进行可视化,更直观地分析数据变量之间的关系。