Kaggle、Python数据可视化seaborn(三):柱状图和热力图

@高效码农  July 17, 2019

现在您可以创建自己的折线图了,现在让我们学习更多的图表类型了!

顺便说一下,如果这是您第一次使用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等)和每个航空公司代码的一列。

2019-07-12T06:52:02.png

每个记录显示不同航空公司和月份的平均到达延迟(以分钟为单位)(均为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

2019-07-12T06:57:42.png

柱状图

假设我们想创建一个柱状图,显示精灵航空(航空公司代码: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)')

2019-07-12T06:59:18.png

用于自定义文本(标题和垂直轴标签)和图形大小的命令在上一个教程中很常见。 创建条形图的代码是:

# 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')

2019-07-12T07:05:33.png

创建热力图的相关代码如下:

# 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



添加新评论