pandas探索你的数据(七)-可视化
探索泰坦尼克灾难数据
在数据分析的旅程中,可视化数据是一个不可或缺的步骤,它可以帮助我们更好地理解数据、发现趋势和关联。在本篇博客中,我们将使用 Python 中的 pandas、matplotlib 和 seaborn 库,来探索泰坦尼克灾难的数据集,以图表形式呈现数据的各种方面。
步骤1 导入必要的库
首先,我们导入了一些必要的库,包括 pandas 用于数据操作,matplotlib 和 seaborn 用于数据可视化,以及 numpy 用于数值计算。这些库将在整个分析过程中发挥关键作用。
# 运行以下代码
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np
%matplotlib inline
步骤2 从以下地址导入数据
在这一步,我们准备导入泰坦尼克灾难的数据,这些数据存储在名为 "train.csv" 的文件中。数据导入是数据分析的第一步,让我们能够开始探索和分析数据。
# 运行以下代码
path7 = 'exercise_data/train.csv' # train.csv
步骤3 将数据框命名为titanic
我们成功导入数据后,将数据框命名为 "titanic" 并显示前几行数据,以便查看数据的结构和内容。
# 运行以下代码
titanic = pd.read_csv(path7)
titanic.head()
步骤4 将PassengerId设置为索引
在这一步,我们将 "PassengerId" 列设置为数据的索引。这可以帮助我们更容易地访问和操作数据。
# 运行以下代码
titanic.set_index('PassengerId').head()
步骤5 绘制一个展示男女乘客比例的扇形图
通过创建扇形图,我们展示了乘客中男性和女性的比例。这是一个简单而有效的方式来可视化性别分布,并了解男女乘客的比例。
# 运行以下代码
# sum the instances of males and females
males = (titanic['Sex'] == 'male').sum()
females = (titanic['Sex'] == 'female').sum()
# put them into a list called proportions
proportions = [males, females]
# Create a pie chart
plt.pie(
# using proportions
proportions,
# with the labels being officer names
labels = ['Males', 'Females'],
# with no shadows
shadow = False,
# with colors
colors = ['blue','red'],
# with one slide exploded out
explode = (0.15 , 0),
# with the start angle at 90%
startangle = 90,
# with the percent listed as a fraction
autopct = '%1.1f%%'
)
# View the plot drop above
plt.axis('equal')
# Set labels
plt.title("Sex Proportion")
# View the plot
plt.tight_layout()
plt.show()
步骤6 绘制一个展示船票Fare
, 与乘客年龄和性别的散点图
在这一步,我们创建了一个散点图,将船票价格 (Fare
) 与乘客的年龄和性别进行了比较。这种图表可以帮助我们观察票价与年龄和性别之间的关系。
# 运行以下代码
# creates the plot using
lm = sns.lmplot(x = 'Age', y = 'Fare', data = titanic, hue = 'Sex', fit_reg=False)
# set title
lm.set(title = 'Fare x Age')
# get the axes object and tweak it
axes = lm.axes
axes[0,0].set_ylim(-5,)
axes[0,0].set_xlim(-5,85)
(-5.0, 85.0)
步骤7 有多少人生还?
我们统计了生还乘客的数量,这是泰坦尼克灾难中一个重要的统计指标。在这个数据集中,有342人幸存下来。
# 运行以下代码
titanic.Survived.sum()
342
步骤8 绘制一个展示船票价格的直方图
最后,我们创建了一个直方图,显示了不同船票价格的频率分布。这种图表可以帮助我们了解船票价格的分布情况。
# 运行以下代码
# sort the values from the top to the least value and slice the first 5 items
df = titanic.Fare.sort_values(ascending = False)
df
# create bins interval using numpy
binsVal = np.arange(0,600,10)
binsVal
# create the plot
plt.hist(df, bins = binsVal)
# Set the title and labels
plt.xlabel('Fare')
plt.ylabel('Frequency')
plt.title('Fare Payed Histrogram')
# show the plot
plt.show()
总结
我们介绍了数据可视化的基本步骤,并使用了 matplotlib 和 seaborn 库来创建不同类型的图表。具体来说,我们使用了扇形图展示比例、散点图展示关系、直方图展示分布情况等。这些图表有助于我们更好地理解泰坦尼克灾难数据,探索性别比例、票价分布以及生还人数等方面的信息。
1、Seaborn简介和基本绘图函数
Seaborn 是一个用于数据可视化的 Python 库,它建立在 Matplotlib 的基础之上,提供了更高级、更美观和更方便的绘图功能。以下是 Seaborn 中常用的一些创建图表的函数:
-
sns.scatterplot(): 用于创建散点图,展示两个变量之间的关系。
-
sns.lineplot(): 绘制线图,通常用于显示时间序列数据的趋势。
-
sns.barplot(): 创建条形图,用于比较不同类别之间的数值关系。
-
sns.countplot(): 绘制计数图,用于显示每个类别的频数或计数。
-
sns.boxplot(): 绘制箱线图,展示数据的分布和异常值。
-
sns.violinplot(): 创建小提琴图,结合了箱线图和核密度估计,用于展示数据分布。
-
sns.heatmap(): 生成热力图,通常用于显示相关性矩阵或二维数据的值分布。
-
sns.pairplot(): 创建成对关系图,展示数据集中多个变量之间的散点图和直方图。
-
sns.distplot(): 绘制单变量的分布图,包括直方图和核密度估计。
-
sns.jointplot(): 创建联合图,同时显示两个变量的单变量分布和二维关系。
-
sns.lmplot(): 绘制线性回归模型的散点图和回归线。
-
sns.catplot(): 用于创建分类图,可以包括多个子图,通常用于比较不同组或类别之间的关系。
-
sns.relplot(): 绘制关系图,用于可视化两个或多个变量之间的关系。
2、前文中所用的Seaborn
以前文所使用的lmplot为例:sns.lmplot()
是 Seaborn 库中用于创建线性回归模型图的函数。它通常用于可视化两个变量之间的线性关系,同时可以添加回归线和置信区间。
sns.lmplot(x, y, data, hue=None, col=None, row=None, palette=None, height=5, aspect=1, markers='o', scatter_kws=None, line_kws=None)
参数说明:
-
x
和y
:分别是数据框中的列名,用于表示 x 轴和 y 轴上的变量。 -
data
:要使用的数据框,包含 x 和 y 列。 -
hue
:可选参数,用于根据某一列的不同取值给数据点着色,通常用于表示分类变量。 -
col
和row
:可选参数,用于在多个子图中绘制不同的图表,通常用于表示分类变量。 -
palette
:可选参数,用于指定颜色调色板,用于着色数据点或线条。 -
height
:图的高度。 -
aspect
:图的纵横比。 -
markers
:可选参数,用于指定数据点的标记样式。 -
scatter_kws
和line_kws
:可选参数,用于传递给散点图和回归线的其他参数。
sns.lmplot()
函数的作用是绘制散点图,并根据数据拟合一个线性回归模型。它通常用于研究两个连续变量之间的关系,以及回归模型的拟合情况。
import seaborn as sns
import matplotlib.pyplot as plt
# 创建一个示例数据框
data = sns.load_dataset("tips")
# 使用lmplot绘制散点图和回归线
sns.lmplot(x="total_bill", y="tip", data=data)
# 添加回归线的置信区间
sns.lmplot(x="total_bill", y="tip", data=data, ci=None)
# 使用hue参数根据分类变量着色
sns.lmplot(x="total_bill", y="tip", data=data, hue="sex")
# 使用col和row参数创建多个子图
sns.lmplot(x="total_bill", y="tip", data=data, col="time", row="sex")
# 自定义标记样式和颜色
sns.lmplot(x="total_bill", y="tip", data=data, markers=["o", "x"], palette="Set1")
plt.show()
3、Seaborn的样式控制
Seaborn 允许你控制图形的样式和外观,以使你的数据可视化更加美观和易于理解。你可以使用 Seaborn 提供的各种样式设置和主题来自定义图形的外观。
-
样式设置(Style Set): Seaborn 提供了不同的样式设置,通过
sns.set_style()
函数可以进行切换。常用的样式设置包括"whitegrid"
、"darkgrid"
、"white"
、"dark"
和"ticks"
。每种样式设置具有不同的背景和网格线样式,你可以根据需要选择合适的样式。import seaborn as sns # 使用不同的样式设置 sns.set_style("whitegrid") sns.set_style("darkgrid") sns.set_style("white") sns.set_style("dark") sns.set_style("ticks")
-
图形主题(Themes): 通过
sns.set_theme()
函数,你可以选择不同的图形主题,包括"darkgrid"
、"whitegrid"
、"dark"
、"white"
和"ticks"
,这与样式设置类似。不同的主题将影响整个图形的外观。import seaborn as sns # 使用不同的图形主题 sns.set_theme(style="darkgrid") sns.set_theme(style="whitegrid") sns.set_theme(style="dark") sns.set_theme(style="white") sns.set_theme(style="ticks")
-
颜色调色板(Color Palettes): Seaborn 提供了各种颜色调色板,用于指定图形中的颜色。你可以使用
sns.color_palette()
函数来自定义颜色调色板,也可以使用已经定义好的颜色调色板,如"deep"
、"pastel"
、"dark"
等。import seaborn as sns # 使用不同的颜色调色板 sns.color_palette("deep") sns.color_palette("pastel") sns.color_palette("dark")
-
坐标轴刻度(Axis Ticks): 你可以通过
sns.set_context()
函数来控制坐标轴刻度的大小和字体。可选的上下文包括"paper"
、"notebook"
、"talk"
和"poster"
。import seaborn as sns # 设置坐标轴刻度的上下文 sns.set_context("paper") sns.set_context("notebook") sns.set_context("talk") sns.set_context("poster")
这些控制样式的方法可以根据你的需求来自定义 Seaborn 图形的外观,使其更符合你的数据可视化目标和审美标准。你可以根据具体情况组合使用这些设置来创建最适合你的图形样式。
本文由mdnice多平台发布