Kaggle、Python数据可视化seaborn(三):柱状图和热力图
现在您可以创建自己的折线图了,现在让我们学习更多的图表类型了!
顺便说一下,如果这是您第一次使用Python编写代码,那么您应该为到目前为止所完成的一切感到非常自豪,因为学习一项全新的技能从来都不是一件容易的事!如果您坚持使用微课程,您会注意到所有事情只会变得更简单(而您将构建的图表将会更令人印象深刻!),因为所有图表的代码都非常相似。像任何技能一样,随着时间的推移和重复,编码变得很自然。
在本教程中,您将了解柱状图和热力图。
准备好笔记本
和往常一样,我们从设置编码环境开始。
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
import seaborn as sns
print("Setup Complete")
选择一个数据集
在本教程中,我们将使用来自美国交通部的数据集来跟踪航班延误。
在Excel中打开这个CSV文件,会显示每个月的一行(其中1 = January, 2 = February等)和每个航空公司代码的一列。
每个记录显示不同航空公司和月份的平均到达延迟(以分钟为单位)(均为2015年)。 负数记录表示(平均)倾向于提前到达的航班。 例如,1月份美国航空公司的平均航班(航空公司代码:AA)迟到了大约7分钟,4月阿拉斯加航空公司的平均航班(航空公司代码:AS)提前大约3分钟到达。
加载数据
和前面一样,我们使用pd.read_csv
命令加载数据集。
# Path of the file to read
flight_filepath = "../input/flight_delays.csv"
# Read the file into a variable flight_data
flight_data = pd.read_csv(flight_filepath, index_col="Month")
您可能会注意到代码略短于我们在上一个教程中使用的代码。 在这种情况下,由于行标签(来自'Month'
列)与日期不对应,因此我们不在括号中添加parse_dates = True
。 但是,我们像以前一样保留前两个文本,以提供两者:
- 数据集的文件路径(在本例中为
flight_filepath
)和 - 将用于索引行的列的名称(在本例中,
index_col ='Month'
)。
检查数据
由于数据集很小,我们可以轻松地打印它的所有内容。这是通过编写只有数据集名称的一行代码来实现的
# Print the data
flight_data
柱状图
假设我们想创建一个柱状图,显示精灵航空(航空公司代码:NK)航班的平均到达延迟,按月显示。
# Set the width and height of the figure
plt.figure(figsize=(10,6))
# Add title
plt.title("Average Arrival Delay for Spirit Airlines Flights, by Month")
# Bar chart showing average arrival delay for Spirit Airlines flights by month
sns.barplot(x=flight_data.index, y=flight_data['NK'])
# Add label for vertical axis
plt.ylabel("Arrival delay (in minutes)")
输出:
Text(0, 0.5, 'Arrival delay (in minutes)')
用于自定义文本(标题和垂直轴标签)和图形大小的命令在上一个教程中很常见。 创建条形图的代码是:
# Bar chart showing average arrival delay for Spirit Airlines flights by month
sns.barplot(x=flight_data.index, y=flight_data['NK'])
它有三个主要组成部分:
sns.barplot
- 这告诉笔记本我们要创建一个条形图。- 请记住,sns是指seaborn包,您在本课程中用于创建图表的所有命令都将以此前缀开头。
x = flight_data.index
—这决定在水平轴上使用什么。在本例中,我们选择了索引行的列(在本例中,是包含月份的列)。y = flight_data ['NK']
- 设置每个条形高度的数据中的列。 在这种情况下,我们选择'NK'列。
注意:必须选择索引列flight_data。索引,并且不可能使用flight_data'Month'。这是因为当我们加载数据集时,'Month'列用于索引行。我们必须使用这种特殊的符号来选择索引列。
热力图
我们还有一个类型可供学习:热力图!
在下面的代码单元格中,我们创建了一个热力图,以快速可视化flight_data中的模式。 每个单元格根据其对应的值进行颜色编码。
# Set the width and height of the figure
plt.figure(figsize=(14,7))
# Add title
plt.title("Average Arrival Delay for Each Airline, by Month")
# Heatmap showing average arrival delay for each airline by month
sns.heatmap(data=flight_data, annot=True)
# Add label for horizontal axis
plt.xlabel("Airline")
输出:
Text(0.5, 42.0, 'Airline')
创建热力图的相关代码如下:
# Heatmap showing average arrival delay for each airline by month
sns.heatmap(data=flight_data, annot=True)
代码有三个主要组件:
sns.heatmap
-这告诉笔记本,我们想创建一个热力图。data=flight_data
——这告诉笔记本使用flight_data
中的所有条目来创建热图。annot=True
——这确保每个单元格的值都出现在图表上。(省略这一项将删除每个单元格中的数字!)
您可以在表中检测到哪些模式?例如,如果你仔细观察,接近年底的几个月(尤其是9-11月)对所有航空公司来说都显得相对黑暗。这表明航空公司在这几个月里(平均而言)更能保持航班的正常运行!
本地可运行代码:
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
# Path of the file to read
flight_filepath = "data-for-datavis/flight_delays.csv"
# Read the file into a variable flight_data
flight_data = pd.read_csv(flight_filepath, index_col="Month")
# Print the data
print(flight_data)
# =================================== 柱状图 =============================
# Set the width and height of the figure
plt.figure(figsize=(10,6))
# Add title
plt.title("Average Arrival Delay for Spirit Airlines Flights, by Month")
# Bar chart showing average arrival delay for Spirit Airlines flights by month
sns.barplot(x=flight_data.index, y=flight_data['NK'])
# Add label for vertical axis
plt.ylabel("Arrival delay (in minutes)")
plt.show()
# =================================== 热力图 =============================
# Set the width and height of the figure
plt.figure(figsize=(14,7))
# Add title
plt.title("Average Arrival Delay for Each Airline, by Month")
# Heatmap showing average arrival delay for each airline by month
sns.heatmap(data=flight_data, annot=True)
# Add label for horizontal axis
plt.xlabel("Airline")
plt.show()
在线练习地址:https://www.kaggle.com/xugj520/exercise-bar-charts-and-heatmaps/edit