记一次课程作业,利用所给数据,以AQI指数(空气质量状况指数)为因变量,其他指标为解释变量,建立线性回归分析模型,并形成分析报告。
Python&SPSS完成空气质量状况的指数(AQI)分析
题目要求
空气质量指数(air quality index,AQI是定量描述空气质量状况的指 数。为了更好地了解和人们身体健康息息相关的天气状况,本书模拟生成500条某地区天气数据,一行样本对应一天的天气。因变量为空气质量指 数:数值型变量。解释变量包括:星期:分类变量,包括星期一、星期二 等;最低气温:文本型变量,比如—5℃;最高气温:文本型变量,比如5℃;天气:分类变量,包括晴天、多云~睛、阴~多云、阴~小雨等,其 中“~”表示转,比如“晴~多云”表示晴转多云;风向:分类变量,包括 东风、西风、南风、北风、东南风、东北风、西南风、西北风等;风力:数 值型变量,1~5级。以AQI为因变量,其他指标为解释变量,建立线性回归分析模型,并形成分析报告。
原始数据
第1章习题1
https://pan.baidu.com/s/1EKJyXBFGrNlsdqSjUE0LCA
提取码:yno6
注:SPSS以及python打开如果中文显示有问题,可以改一下后缀啥的txt,csv互换试试。
星期,最高,最低,天气,风向,风力,AQI
星期六,29℃,20℃,霾~雷阵雨,无持续,1,145
星期二,11℃,6℃,小雨~阴,北,2,15
星期一,12℃,-3℃,晴,北,3,177
星期五,28℃,18℃,阴,南,2,90
星期日,-2℃,-10℃,晴,北,3,36
················
················
················
星期六,16℃,3℃,多云,无持续,1,91
星期一,15℃,4℃,多云,南,2,202
星期一,21℃,8℃,晴~阴,北,3,39
(部分展示)
数据处理
数据总览
直观上来看,除了风力和AQI,其他数据都需要进行处理,用Pandas处理比较方便,首先用python对数据的总体情况进行了解。
import pandas as pd
data = pd.read_csv("第1章习题1.txt", sep=',', encoding='GBK')
print(data.head(10))
print('数据总览\n')
print(data.info())
print('数据类型预览\n')
print(data.describe())
print('数据情况\n')
print(data[data.isnull() == True].count())
print('数据缺失值检验\n')
# 统计总量
print('星期', len(data['星期'].value_counts()))
print('天气', len(data['天气'].value_counts()))
print('风向', len(data['风向'].value_counts()))
输出:
星期 最高 最低 天气 风向 风力 AQI
0 星期六 29℃ 20℃ 霾~雷阵雨 无持续 1 145
1 星期二 11℃ 6℃ 小雨~阴 北 2 15
2 星期一 12℃ -3℃ 晴 北 3 177
3 星期五 28℃ 18℃ 阴 南 2 90
4 星期日 -2℃ -10℃ 晴 北 3 36
5 星期四 30℃ 17℃ 晴~阴 南 2 63
6 星期六 7℃ -2℃ 多云~阴 无持续 1 39
7 星期五 25℃ 13℃ 阵雨~多云 东 2 59
8 星期六 8℃ -4℃ 霾~晴 无持续 1 315
9 星期四 5℃ -5℃ 多云~晴 西北 3 28
数据总览
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 500 entries, 0 to 499
Data columns (total 7 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 星期 500 non-null object
1 最高 500 non-null object
2 最低 500 non-null object
3 天气 500 non-null object
4 风向 500 non-null object
5 风力 500 non-null int64
6 AQI 500 non-null int64
dtypes: int64(2), object(5)
memory usage: 27.5+ KB
None
数据类型预览
风力 AQI
count 500.000000 500.000000
mean 1.946000 96.690000
std 0.944918 63.743112
min 1.000000 15.000000
25% 1.000000 52.000000
50% 2.000000 82.000000
75% 3.000000 120.000000
max 5.000000 429.000000
数据情况
星期 0
最高 0
最低 0
天气 0
风向 0
风力 0
AQI 0
dtype: int64
数据缺失值检验
星期 7
天气 57
风向 9
结果分析:
缺失值:所有数据完整,数据量500
数据类型:只有“风力”、“AQI”为“int64”,其他均为“object”需要进行转换
类型数:天气类型数为57,而数据总量只有500,需要重点进行处理
“最高”&“最低”变量处理
星期 最高 最低 天气 风向 风力 AQI
0 星期六 29℃ 20℃ 霾~雷阵雨 无持续 1 145
原始数据中,变量后带有摄氏度标识,利用代码将他删掉并加入到新的数据集data2
data2 = pd.DataFrame()
data2['max_t'] = data['最高'].replace('℃','',regex=True)
data2['min_t'] = data['最低'].replace('℃','',regex=True)
print(data2)
输出:
max_t min_t
0 29 20
1 11 6
2 12 -3
3 28 18
4 -2 -10
.. ... ...
495 21 12
496 29 18
497 16 3
498 15 4
499 21 8
[500 rows x 2 columns]
“风向”变量处理
print(data['风向'].value_counts())
无持续 194
南 124
北 104
西南 35