Advertisement

【SCAU_educoder数据挖掘】1-2直方图与柱状图

阅读量:

任务描述

本关任务:通过所学的知识内容利用直方图和柱状图进行特征选择。

相关知识

为了完成本关任务,你需要掌握:1.如何绘制直方图和柱状图,2.直方图与柱状图的区别。

案例背景

泰坦尼克号遭遇的灾难震惊世界,如何避免灾难甚至预测灾难呢? 要实现首先要做好泰坦尼克号的损失数据统计,才能为数据分析打下基础。

观察数据特点

观察图表我们可以知道,共有891行、12列。这代表本训练集共有891条数据,每条数据有12类信息。区别于前述鸢尾花数据集,该数据集涉及到的属性字段更多。

目标 :预测泰坦尼克号上的乘客是幸存还是遇难,每个乘客对应一个乘客Id,用0表示遇难,用1表示幸存。

编程要求

根据学习上面知识内容,利用直方图和柱状图进行特征选择

测试说明

平台会对你编写的代码进行测试: 预期输出:

代码分析:

  1. 导入必要的库 :

python 复制代码

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.image as mpimg

这些库提供了数据处理、数值计算和绘图的功能。

  1. 定义函数 :

python 复制代码

def test():

这里定义了一个名为test的函数。

  1. 读取CSV文件 :

python 复制代码

data_url = "/data/workspace/myshixun/step1/train.csv"
df = pd.read_csv(data_url)

通过pd.read_csv方法读取指定路径的CSV文件,并将其内容存储在DataFrame对象df中。

  1. 根据生存情况筛选数据 :

python 复制代码

S=df[df.Survived==1]
D=df[df.Survived==0]

这两行代码分别筛选出数据中生存情况为1(即存活)和0(即死亡)的乘客。

  1. 绘制直方图 :

python 复制代码

plt.hist(S.iloc[:, 9])
plt.hist(D.iloc[:, 9])

这里尝试绘制直方图,但是存在一些问题:

  • S.iloc[:, 9]和D.iloc[:, 9]尝试访问第10列的数据(因为索引从0开始)。但是,这可能会导致错误,因为我们必须确保df至少有10列。
  • 绘制两个直方图时,它们会重叠在一起,可能不容易区分。
  1. 保存直方图 :

python 复制代码

plt.savefig('/data/workspace/myshixun/step1/picture2/直方图.png')

将当前的图表保存为PNG文件。

  1. 绘制柱状图 :

python 复制代码

sexNew = df.groupby(['Sex','Survived'])['Survived'].count().unstack()
sexNew.plot(kind='bar')

这里首先根据性别和生存情况对数据进行分组,并计算每组的数量。然后使用unstack方法将数据从长格式转换为宽格式,最后绘制柱状图。

  1. 保存柱状图 :

python 复制代码

plt.savefig('/data/workspace/myshixun/step1/picture2/柱状图.png')

将当前的柱状图保存为PNG文件。

  1. 展示两个图像 :

python 复制代码

img1=mpimg.imread('/data/workspace/myshixun/step1/picture2/直方图.png')
img2=mpimg.imread('/data/workspace/myshixun/step1/picture2/柱状图.png')
plt.subplot(121),plt.imshow(img1)
plt.subplot(122),plt.imshow(img2)
plt.savefig("/data/workspace/myshixun/step1/picture2/特征选择.png")

首先,使用mpimg.imread读取之前保存的直方图和柱状图。然后使用subplot方法在一个画布上绘制这两个图像,并将整个画布保存为“特征选择.png”。

  1. 展示图表 :

python 复制代码

plt.show()

完整代码:

复制代码
 import pandas as pd

    
 import numpy as np
    
 import matplotlib.pyplot as plt
    
 import matplotlib.image as mpimg
    
  
    
 def test():
    
  
    
     data_url = "/data/workspace/myshixun/step1/train.csv"
    
     df = pd.read_csv(data_url)
    
     S=df[df.Survived==1]
    
     D=df[df.Survived==0]
    
     #绘制根据S、D的前9列数据绘制直方图
    
     ########## Begin ##########
    
     plt.hist(S.iloc[:, 9])
    
     plt.hist(D.iloc[:, 9])
    
     ########## Begin ##########
    
     plt.savefig('/data/workspace/myshixun/step1/picture2/直方图.png')
    
  
    
     #sex = df.groupby('Sex')['Survived'].sum()
    
     #绘制柱状图
    
     sexNew =  df.groupby(['Sex','Survived'])['Survived'].count().unstack()
    
     ########## Begin ##########
    
     sexNew.plot(kind='bar')
    
  
    
     ########## End ##########
    
  
    
     plt.savefig('/data/workspace/myshixun/step1/picture2/柱状图.png')
    
     plt.show()
    
  
    
     img1=mpimg.imread('/data/workspace/myshixun/step1/picture2/直方图.png')
    
     img2=mpimg.imread('/data/workspace/myshixun/step1/picture2/柱状图.png')
    
  
    
     plt.subplot(121),plt.imshow(img1)
    
     plt.subplot(122),plt.imshow(img2)
    
     plt.savefig("/data/workspace/myshixun/step1/picture2/特征选择.png")

全部评论 (0)

还没有任何评论哟~