处理数据有时会有点无聊。将原始数据转换为可理解的格式是整个过程中最重要的部分之一,那么为什么只停留在数字上,当我们可以将数据可视化为令人兴奋的图表时,这些图表可以在python中获取。这篇文章将重点探索耐人寻味的预处理之旅。
Seaborn和Matplotlib为我们提供了许多诱人的图表,通过这些图表,人们可以轻松地分析关键点,更深入地了解数据,并最终获得对数据的深刻见解,并在通过不同算法训练后获得最高的准确性。
让我们浏览一下我们的数据集:数据集(36行)包含6个特征和2个类(Survived = 1, Not Survived = 0),我们将根据这些特征绘制某些图表。
数据集链接 https://github.com/Abduttayyeb/Visual-Data-Analysis/blob/master/Graph_Data.csv
1. 年龄段密度分布
好的,在浏览了数据集之后,我们可以有一个问题。哪个年龄段人口最多?要回答这个问题,我们需要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()
2. 年龄组[20, 40]计数
所以现在我们有一个清晰的图片,如何计数的人与年龄组的分布,在这里我们可以看到,年龄组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
3. Fare 和 Age的关系
深入挖掘视觉效果,了解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()
4.年龄组[20,40]且Fare在[100,200]之间计数
在研究了这个情况后,我们看到,颜色的密度是最大的年龄组之间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
5. 添加直方图
我们还可以通过使用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()
6. 男性与女性的比例
如果你想知道男性与女性的比例,我们可以在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()
7.统计年龄在12-40之间数据
正如我们可以从图中看到的,在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
8. 小提琴图
我们已经谈了很多关于特征的,现在让我们谈谈依赖于特征的生存率。为此,我们将使用经典的小提琴图,顾名思义,它描绘了与小提琴音乐波相同的视觉效果。基本上,小提琴图用于可视化数据的分布及其概率密度。
生存率与年龄有什么关系?让我们直观地分析一下:
# 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)。
9. 存活率和性别与年龄的关系
让我们再画一张存活率与性别和年龄的关系图。
# 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的二进制值。
10. CATPLOT
简单地说,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()
11. 门票类型与票价
现在,在数据集中,我们看到有三个类别的门票,这是基于票价,让我们找到它(参考此图,我添加了一个类别列门票)
# 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()
12. 票价与存活率的关系
# 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()