处理数据有时会有点无聊。将原始数据转换为可理解的格式是整个过程中最重要的部分之一,那么为什么只停留在数字上,当我们可以将数据可视化为令人兴奋的图表时,这些图表可以在python中获取。这篇文章将重点探索耐人寻味的预处理之旅。
Seaborn和Matplotlib为我们提供了许多诱人的图表,通过这些图表,人们可以轻松地分析关键点,更深入地了解数据,并最终获得对数据的深刻见解,并在通过不同算法训练后获得最高的准确性。
让我们浏览一下我们的数据集:数据集(36行)包含6个特征和2个类(Survived = 1, Not Survived = 0),我们将根据这些特征绘制某些图表。
数据集链接 https://github.com/Abduttayyeb/Visual-Data-Analysis/blob/master/Graph_Data.csv
好的,在浏览了数据集之后,我们可以有一个问题。哪个年龄段人口最多?要回答这个问题,我们需要KDE Plot的视觉效果,它只是一个密度图。因此,让我们从导入所需的库开始,并使用它的函数绘制图形。
# importing the modules and dataset
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
dataset = pd.read_csv("Survival.csv")
# KDE plot
sns.kdeplot(dataset["Age"], color = "green",
shade = True)
plt.show()
plt.figure()
所以现在我们有一个清晰的图片,如何计数的人与年龄组的分布,在这里我们可以看到,年龄组20-40有最大的计数,所以让我们检查一下。
# importing the modules and dataset
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
dataset = pd.read_csv("Survival.csv")
# Checking the count of Age Group 20-40
dataset.Age[(dataset["Age"] >= 20) & (dataset["Age"] <= 40)].count()
输出
26
深入挖掘视觉效果,了解Fare VS Age的变化,它们之间的关系是什么,让我们使用不同类型的kdeplot 来看看,现在有二元密度,我们只添加Y变量。
# importing the modules and dataset
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
dataset = pd.read_csv("Survival.csv")
sns.kdeplot(dataset["Age"], dataset["Fare"], shade = True)
plt.show()
plt.figure()
在研究了这个情况后,我们看到,颜色的密度是最大的年龄组之间20-40,而对应的Fare为100-200,让我们检查一下 。
# importing the modules and dataset
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
dataset = pd.read_csv("Survival.csv")
# Checking The Variation Between Fare And Age
dataset.Age[((dataset["Fare"] >= 100) &
(dataset["Fare"]<=200)) &
((dataset["Age"]>=20) &
dataset["Age"]<=40)].count()
输出
16
我们还可以通过使用seaborn的distplot()模块来向kdeplot添加直方图:
# importing the modules and dataset
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
dataset = pd.read_csv("Survival.csv")
# Histogram+Density Plot
sns.distplot(dataset["Age"], color = "green")
plt.show()
plt.figure()
如果你想知道男性与女性的比例,我们可以在KDE中绘制同样的图:
# importing the modules and dataset
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
dataset = pd.read_csv("Survival.csv")
# Adding Two Plots In One
sns.kdeplot(dataset[dataset.Gender == 'Female']['Age'],
color = "blue")
sns.kdeplot(dataset[dataset.Gender == 'Male']['Age'],
color = "orange", shade = True)
plt.show()
plt.figure()
正如我们可以从图中看到的,在12岁到40岁之间,计数会增加,让我们检查一下是否相同。
# importing the modules and dataset
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
dataset = pd.read_csv("Survival.csv")
# showing that there are more Male's Between Age Of 12-40
dataset.Gender[((dataset["Age"] >= 12) &
(dataset["Age"] <= 40)) &
(dataset["Gender"] == "Male")].count()
dataset.Gender[((dataset["Age"] >= 12) &
(dataset["Age"] <= 40)) &
(dataset["Gender"] == "Female")].count()
输出
17
15
我们已经谈了很多关于特征的,现在让我们谈谈依赖于特征的生存率。为此,我们将使用经典的小提琴图,顾名思义,它描绘了与小提琴音乐波相同的视觉效果。基本上,小提琴图用于可视化数据的分布及其概率密度。
生存率与年龄有什么关系?让我们直观地分析一下:
# importing the modules and dataset
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
dataset = pd.read_csv("Survival.csv")
sns.violinplot(x = 'Survived', y = 'Age', data = dataset,
palette = {0 : "yellow", 1 : "orange"});
plt.show()
plt.figure()
说明:我们在图中看到的白色点是中位数,中间的粗黑条代表四分位数 。
从其延伸的细黑线表示数据中的上(最大)和下(最小)相邻值。
快速浏览显示我们之间的年龄[10-20]的生存率要高(Survived==1)。
让我们再画一张存活率与性别和年龄的关系图。
# importing the modules and dataset
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
dataset = pd.read_csv("Survival.csv")
sns.violinplot(x = "Gender", y = "Age", hue = "Survived",
data = dataset,
palette = {0 : "yellow", 1 : "orange"})
plt.show()
plt.figure()
这里还有一个属性是hue,它指的是Survived的二进制值。
简单地说,catplot显示了一个,两个或三个分类变量的类别的频率(或可选的分数)。
# importing the modules and dataset
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
dataset = pd.read_csv("Survival.csv")
# Plot a nested barplot to show survival for Siblings and Gender
g = sns.catplot(x = "Siblings", y = "Survived", hue = "Gender", data = dataset,
height = 6, kind = "bar", palette = "muted")
g.despine(lef t= True)
g.set_ylabels("Survival Probability")
plt.show()
现在,在数据集中,我们看到有三个类别的门票,这是基于票价,让我们找到它(参考此图,我添加了一个类别列门票)
# importing the modules and dataset
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
dataset = pd.read_csv("Survival.csv")
# Based On Fare There Are 3 Types Of Tickets
sns.catplot(x = "PassType", y = "Fare", data = dataset)
plt.show()
plt.figure()
# importing the modules and dataset
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
dataset = pd.read_csv("Survival.csv")
sns.catplot(x="PassType", y="Fare", hue="Survived",kind="swarm",data=dataset)
plt.show()
plt.figure()