R5:天气预测-探索式数据分析

一、实验目的:

根据数据对 RainTomorrow 进行预测,熟悉探索式数据分析(EDA)

二、实验环境:

  • 语言环境:python 3.8
  • 编译器:Jupyter notebook
  • 深度学习环境:TensorFlow

三、背景知识

“这是数据分析中我最喜欢的部分:获取枯燥的平面数据,并通过可视化将其变为现实。” — 约翰·图基

在这里插入图片描述

1. 定义

探索式数据分析(Exploratory Data Analysis,简称EDA)是数据分析过程中的一个关键步骤。它是指在正式进行复杂的数据分析和建模之前,对数据进行初步的、开放式的调查,以了解数据的基本特征、分布情况、变量之间的关系等诸多方面的内容。通过探索式数据分析,医学研究人员可以快速熟悉医疗数据,发现数据中的异常值、模式、趋势,为后续更深入的医学研究(如疾病预测模型构建、治疗效果评估等)提供基础和思路。

2. 主要内容

(一)数据的基本特征

  1. 包括数据的类型(如数值型、分类型等)、数据的规模(病例的数量、变量的数量)。例如,对于一个医疗记录数据集,需要了解其中有多少个病例记录,有多少个不同的变量(如患者年龄、性别、疾病诊断、治疗方式等)来描述患者情况。
  2. 数据的取值范围,如对于一个患者血压测量数据集,要知道血压值的最小值和最大值,这有助于理解患者血压的整体情况。

(二)数据分布

  1. 对于数值型数据,了解其分布形态很重要。常用的分布包括正态分布、偏态分布等。例如,分析患者的血糖水平分布,看是否近似正态分布,这可以通过绘制直方图来观察。
  2. 分类型数据的分布则关注各个类别出现的频率。比如,在一个疾病类型数据集里,查看不同疾病的患者人数占比,了解各种疾病的相对发病率。

(三)变量间的关系

  1. 探索变量之间的相关性,是EDA的一个重要部分。对于两个数值变量,如患者的年龄和血压值,可以计算相关系数(如皮尔逊相关系数)来衡量它们之间线性关系的强弱。
  2. 对于分类变量和数值变量之间的关系,可以通过分组统计等方式来探索。比如,分析不同疾病类型患者的住院天数(数值变量)与疾病严重程度(分类变量,可分为轻度、中度、重度等)之间的关系,按疾病严重程度分组统计平均住院天数。
  3. 还可以使用散点图、箱线图等可视化工具来展示变量间的关系。例如,用散点图展示患者体重和体脂率之间的关系,用箱线图展示不同疾病患者的白细胞计数分布情况。

3. 常用方法和工具

(一)可视化方法

  1. 直方图:用于展示数值型数据的分布。例如,在分析患者的药物剂量分布时,直方图可以直观地显示不同剂量区间的患者人数分布情况。
  2. 箱线图:可以展示数据的四分位数、异常值等信息。比如,在比较不同治疗组患者的康复时间时,箱线图能够清晰地呈现各治疗组康复时间的分布差异,包括中位数、上下四分位数以及是否存在异常长或短的康复时间。
  3. 散点图:主要用于展示两个数值变量之间的关系。例如,在研究患者的身高和体重之间的关系时,散点图可以帮助我们观察它们是否存在线性或其他类型的关系。
  4. 柱状图:适合展示分类数据的频率或数量。比如,在统计不同年龄段患者患某种疾病的人数时,柱状图可以清晰地显示各年龄段的患病情况。

(二)统计量计算

  1. 计算均值、中位数、众数等中心趋势统计量,来了解数据的集中位置。例如,在分析一组患者的体温数据时,均值可以反映整体的平均体温水平,中位数则更能抵抗极端值的影响,众数可以告诉我们出现次数最多的体温值是多少。
  2. 计算标准差、方差等离散程度统计量,用于衡量数据的分散情况。例如,在比较两种治疗方法对患者症状改善程度的稳定性时,方差较小的治疗方法说明其效果更稳定。
  3. 对于分类数据,可以计算类别频率、比例等统计量。例如,在分析医院不同科室的患者就诊人数分布时,计算每个科室的患者比例,以了解各科室的业务繁忙程度。

四、导入数据

import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
import warnings
warnings.filterwarnings('ignore')
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import MinMaxScaler
import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Activation, Dropout
from tensorflow.keras.callbacks import EarlyStopping
from tensorflow.keras.layers import Dropout
from sklearn.metrics import classification_report, confusion_matrix
from sklearn.metrics import r2_score
from sklearn.metrics import mean_absolute_error , mean_absolute_percentage_error , mean_squared_error

data = pd.read_csv("weatherAUS.csv")
df   = data.copy()
data.head()

在这里插入图片描述

data.describe()

data.describe() 是Pandas库中DataFrame对象的一个方法,它用于生成数据的快速统计摘要。这个方法会返回一个新的DataFrame,其中包含以下统计信息:

count:非空值的数量
mean:平均值
std:标准差
min:最小值
25%:第一四分位数(Q1),即数据中所有数值由小到大排列后,位于25%位置的数值
50%:中位数(Q2),即数据中所有数值由小到大排列后,位于中间位置的数值
75%:第三四分位数(Q3),即数据中所有数值由小到大排列后,位于75%位置的数值
max:最大值
在这里插入图片描述

data.dtypes

在这里插入图片描述
以上输出显示了data DataFrame中每一列的数据类型。以下是每个部分的含义:

  • 列名:每一行左侧的名称代表DataFrame中的一列。例如,Date、Location、MinTemp等。
  • 数据类型:每一行右侧的值表示相应列的数据类型。以下是常见的数据类型及其含义:
    • object:通常用于存储字符串(文本)数据,也可以用于存储混合数据类型(如包含不同类型的数据的列表)。
    • float64:表示浮点数,通常用于存储小数和实数。
    • int64:表示整数,但在这个输出中没有显示。如果有整数类型的列,它们会显示为int64。

具体到这个输出:

  • Date 和 Location 列的数据类型是 object,这意味着这两列包含文本数据。通常,Date 列可能需要转换为日期时间格式(datetime)以进行更有效的处理。
  • MinTemp、MaxTemp、Rainfall、Evaporation、Sunshine、WindGustSpeed、WindSpeed9am、WindSpeed3pm、Humidity9am、Humidity3pm、Pressure9am、Pressure3pm、Cloud9am、Cloud3pm、Temp9am 和 Temp3pm 列的数据类型是 float64,这表明这些列包含浮点数,可能是与天气相关的测量值。
  • WindGustDir、WindDir9am、WindDir3pm 和 RainToday、RainTomorrow 列的数据类型是 object,这些列可能包含分类数据,例如风向或是否下雨的指示。

**这个信息对于数据预处理非常重要,因为不同类型的数据可能需要不同的处理方法。**例如,数值型数据可以进行数学运算,而文本数据可能需要转换为数值编码或进行其他形式的预处理。

#将数据转换为日期时间格式
data['Date'] = pd.to_datetime(data['Date'])

data['year']  = data['Date'].dt.year
data['Month'] = data['Date'].dt.month
data['day']   = data['Date'].dt.day

data.head()

这里将 DataFrame data 中 ‘Date’ 列的数据类型从 object(通常是字符串)转换为 datetime64 类型。

这样做的好处是,转换后的日期时间数据可以进行更复杂的时间序列操作,例如日期的加减、日期范围的选择、时间序列的重采样等。

此外,datetime对象在数据分析和可视化中通常更容易处理,因为它们可以自动按照时间顺序排序,并且可以方便地提取日期的各个组成部分(如年、月、日等)。

在这里插入图片描述

data.drop(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值