kaggle实战之数据可视化

本文介绍了使用Python进行鸢尾花数据集的多种可视化方法,包括散点图、箱形图、小提琴图等,并展示了如何利用Pandas、Matplotlib及Seaborn等库进行数据探索。

本篇教程的是参考kaggle的一篇笔记,https://www.kaggle.com/benhamner/python-data-visualizations/notebook代码是基于python3的,需要pandas、matplotlib、seaborn基础,数据是使用鸢尾花的150组数据,鸢尾花数据下载地址http://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data

鸢尾花数据描述:一共有150组鸢尾花数据,一共有三种种类,分别是Iris-virginica、Iris-setosa、Iris-versicolor每种鸢尾花都是50组数据,每一组鸢尾花一共有四个属性分别是萼片长度(SepalLengthCm)、萼片宽度(SepalWidthCm)、花瓣长度(PetalLengthCm)、花瓣宽度(PetalWidthCm),单位都是cm。

1、导入相关库查看前5行数据

#encoding:utf-8
import pandas as pd
#由于seaborn库会输出很多警告,我们将忽视警告的输出
import warnings
warnings.filterwarnings("ignore")
import seaborn as sns
import matplotlib.pyplot as plt
#设置seaborn的风格
sns.set(style="white",color_codes=True)

if __name__ == "__main__":
    #使用pandas读取鸢尾花数据
    data = pd.read_csv("iris.csv")
    #查看前5行数据,默认n=5
    print(data.head())

2、统计数据种类的分布情况

print(data["Species"].value_counts())

通过pandas来统计某一列的数据分布情况,通过上面的数据可以发现,一共有三种不同种类的鸢尾花,每种种类的都是50个。

3、根据鸢尾花的萼片长度和宽度属性绘制散点图

    #设置绘图的种类,scatter表示散点图,x轴使用萼片的长度,y轴使用萼片的宽度
    data.plot(kind="scatter",x="SepalLengthCm",y="SepalWidthCm")
    plt.show()


4、使用seaborn绘制散点图
使用seaborn的jointplot方法在绘制散点图的时候,可以绘制双变量(萼片长度和宽度)的散点图和单变量的直方图。

    sns.jointplot(x="SepalLengthCm",y="SepalWidthCm",data=data,size=6)
    plt.show()


5、对于不同种类的鸢尾花使用不同颜色进行标记

    face = sns.FacetGrid(data,hue="Species",size=5)
    face.map(plt.scatter,"SepalLengthCm","SepalWidthCm")
    face.add_legend()
    plt.show()


6、绘制箱形图

根据鸢尾花的长度绘制箱形图

    sns.boxplot(x="Species",y="SepalLengthCm",data=data)
    plt.show()


7、在箱形图的基础上绘制点

    ax = sns.boxplot(x="Species",y="SepalLengthCm",data=data)
    #在箱形图的基础上进行描点,设置jitter为True保证点不会落在同一条直线上
    ax = sns.stripplot(x="Species",y="SepalLengthCm",data=data,jitter=True,edgecolor="gray")
    plt.show()


8、绘制小提琴图

小提琴图又称核密度图,它是结合了箱形图和核密度图的图,将箱形图和密度图用一个图来显示,因为形状很像小提琴,所以被称作小提琴图。

    sns.violinplot(x="Species",y="SepalLengthCm",data=data,gridsize=6)
    plt.show()


9、绘制核密度估计图

核密度估计(kernel density estimation)是在概率论中用来估计未知的密度函数,属于非参数检验方法之一,用于研究单变量关系。

    face = sns.FacetGrid(data,hue="Species",size=6)
    face.map(sns.kdeplot,"SepalLengthCm")
    face.add_legend()
    plt.show()

10、绘制双变量的散点图

对角线是直方图,其它的部分是两个变量之间的散点图

    #删除id列
    sns.pairplot(data.drop("id",axis=1),hue="Species",size=2)
    plt.show()

    #将对角线的直方图替换成核密度估计曲线图
    sns.pairplot(data.drop("id",axis=1),hue="Species",size=2,diag_kind="kde")
    plt.show()

11、使用pandas绘制每一个变量的箱形图

    data.drop("id",axis=1).boxplot(by="Species",figsize=(12,6))
    plt.show()

12、绘制安德鲁斯曲线

安德鲁斯曲线将每个样本的属性值转化为傅里叶序列的系数来绘制曲线,将不同种类的鸢尾花用不同的颜色标记来可视化聚类数据,属于相同类别的样本曲线通常更加接近并构成了更大的数据结构。

    from pandas.tools.plotting import andrews_curves
    andrews_curves(data.drop("id",axis=1),"Species")
    plt.show()

13、平行坐标
平行坐标是一种多维的可视化技术,平行坐标,每个点用线段连接,每一条垂直的线代表一个特征。一组连接的线段表示一个数据点。

    from pandas.tools.plotting import parallel_coordinates
    parallel_coordinates(data.drop("id",axis=1),"Species")
    plt.show()

14、径向坐标可视化

radviz图也是一种多维的可视化图。它是基于基本的弹簧压力最小化算法,它将数据集的特征映射到二维目标空间单位圆中的一个点,点的位置由系在点上的特征决定。将实例投入到圆的中心,特征会朝园中此实例的位置(实例对应的归一化数值)“拉”实例。

    from pandas.tools.plotting import radviz
    radviz(data.drop("id",axis=1),"Species")
    plt.show()



Kaggle 数据可视化项目实战是指利用 Kaggle 平台提供的各种公开数据集,通过 Python 或 R 等编程语言来进行数据分析并生成可视化的图表展示。以下是关于如何开展此类项目的详细介绍: ### 步骤一:选择合适的数据集 首先你需要登录到 [Kaggle](https://www.kaggle.com/) 官网,并浏览其丰富的公共数据集中寻找一个感兴趣的主题进行分析。例如可以关注医疗、金融、社交网络等领域。 ### 步骤二:下载数据及环境搭建 确定好目标数据之后就可以直接从网站上下载对应的文件了(一般为 CSV 格式)。接着需要准备好工作环境,通常我们会使用 Jupyter Notebook 来编写代码,在这里推荐安装 Anaconda 发行版因为它已经包含了大部分所需的库如 pandas、matplotlib 和 seaborn等。 ### 步骤三:初步探索性数据分析 (EDA) 导入必要的Python 库之后就开始对原始数据做一些基本操作比如查看前几条记录 (`head()`) ,统计描述信息(`describe()`), 检查缺失值情况等等;这些都是为了更好地理解手头的数据结构及其特点做准备。 ```python import pandas as pd # 加载数据 data = pd.read_csv('your_dataset.csv') # 查看基本信息 print(data.info()) ``` ### 步骤四:深入挖掘特征之间的关系 接下来会尝试找出变量间是否存在某种模式或者趋势。这一步可能会涉及到绘制直方图(histogram)、箱形图(boxplot)、散点图(scatter plot),以及计算皮尔逊系数(Pearson correlation coefficient)等相关度量指标帮助我们评估关联强度。 ```python import matplotlib.pyplot as plt import seaborn as sns # 绘制年龄分布的柱状图 plt.hist(data['age'], bins=30) plt.title('Age Distribution') plt.show() # 计算相关矩阵并画热力图 corr_matrix = data.corr() sns.heatmap(corr_matrix, annot=True, cmap='coolwarm', linewidths=.5) plt.show() ``` ### 步骤五:构建预测模型(可选) 如果想要更进一步的话还可以基于已有的知识建立机器学习算法来对未来结果做出预测。不过在此之前务必先将整个过程分为训练集(training set)和测试集(testing set),以便能够准确地衡量模型性能。 最后不要忘了撰写总结报告分享给他人,这也是非常重要的环节之一。你可以把所有发现整理成一篇博客文章发布出去让更多人受益!
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

修炼之路

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值