Python Pandas – 使用Seaborn绘制一组水平点图
水平点图是一种常用的数据展示方式,可以展示多项数据在某一维度上的排名情况。在Python的数据分析领域中,Pandas是一款强大的数据处理库,而Seaborn则是其衍生的可视化工具库之一。在本文中,我们将介绍如何使用Seaborn绘制一组水平点图。
准备工作
在开始绘制水平点图之前,我们需要先安装Seaborn库。可以通过使用以下命令在命令行中安装:
pip install seaborn
现在,我们来更改Pandas默认的表格展示方式。可以通过以下命令实现:
import pandas as pd
pd.options.display.max_columns = None # 显示所有列
pd.options.display.max_rows = None # 显示所有行
pd.options.display.width = None # 按照容器自动换行
数据导入与预处理
接下来,我们使用Pandas来导入数据,并对数据进行预处理操作,以使其适合绘制水平点图。
现在用语文成绩、数学成绩和英语成绩三项维度来展示学生的分数情况,每个学生有一组数据。
在Excel中,这组数据的样式如下:
学生姓名 | 语文 | 数学 | 英语 |
---|---|---|---|
张三 | 80 | 90 | 85 |
李四 | 75 | 85 | 90 |
王五 | 85 | 80 | 70 |
赵六 | 90 | 95 | 80 |
为了方便演示,我们可以手动创建一份样本数据:
import pandas as pd
data = {'姓名': ['张三', '李四', '王五', '赵六'],
'语文成绩': [80, 75, 85, 90],
'数学成绩': [90, 85, 80, 95],
'英语成绩': [85, 90, 70, 80]}
df = pd.DataFrame(data)
print(df)
这段代码将生成一个数据框,如下所示:
姓名 语文成绩 数学成绩 英语成绩
0 张三 80 90 85
1 李四 75 85 90
2 王五 85 80 70
3 赵六 90 95 80
我们现在将数据进行转置,以便我们使用Seaborn绘制水平点图:
import pandas as pd
data = {'姓名': ['张三', '李四', '王五', '赵六'],
'语文成绩': [80, 75, 85, 90],
'数学成绩': [90, 85, 80, 95],
'英语成绩': [85, 90, 70, 80]}
df = pd.DataFrame(data)
# 将数据框进行转置
df = df.set_index('姓名').T.reset_index()
df = df.rename(columns={'index': '科目'})
print(df)
这段代码将生成以下输出结果:
姓名 科目 张三 李四 王五 赵六
0 语文成绩 80 75 85 90
1 数学成绩 90 85 80 95
2 英语成绩 85 90 70 80
在这里,我们将数据框按行进行转置,然后重新设置行索引和列索引。这样,我们就可以使用Seaborn来绘制我们的水平点图了。
绘制水平点图
下面是我们如何使用Seaborn来绘制水平点图的代码:
import seaborn as sns
sns.set(style="whitegrid")
sns.catplot(data=df, kind="swarm", x="张三", y="科目")
这就是一组基本的水平点图。现在,我们可以通过添加更多的参数来修改水平点图的样式和外观。
修改样式和外观
修改点的大小和形状
我们可以使用size
参数来改变数据点的大小,使用marker
参数改变数据点的形状。
sns.catplot(data=df, kind="swarm", x="张三", y="科目", size=8, marker='D')
修改点的颜色
我们可以使用palette
参数来改变数据点的颜色。
sns.catplot(data=df, kind="swarm", x="张三", y="科目", palette="Set1")
添加图表标题和坐标轴标签
我们可以使用以下代码来添加标题和轴标签:
import matplotlib.pyplot as plt
plt.title('学生成绩')
plt.xlabel('成绩')
plt.ylabel('科目')
sns.catplot(data=df, kind="swarm", x="张三", y="科目", palette="Set1")
结论
在这篇文章中,我们介绍了如何使用Seaborn来绘制一组水平点图。我们使用Pandas导入数据,并使用Seaborn对数据进行可视化。我们展示了如何修改水平点图的样式和外观,以及如何添加图表标题和坐标轴标签。