- 在线时间
- 514 小时
- 最后登录
- 2023-12-1
- 注册时间
- 2018-7-17
- 听众数
- 15
- 收听数
- 0
- 能力
- 0 分
- 体力
- 40301 点
- 威望
- 0 点
- 阅读权限
- 255
- 积分
- 12801
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 1419
- 主题
- 1178
- 精华
- 0
- 分享
- 0
- 好友
- 15
TA的每日心情 | 开心 2023-7-31 10:17 |
|---|
签到天数: 198 天 [LV.7]常住居民III
- 自我介绍
- 数学中国浅夏
 |
AQI分析与预测AQI全称是Air Quality Index,指空气质量指数,用来衡量空气清洁或者污染的程度,值越小,表示空气质量越好。
3 i/ [5 w# Z4 w. G7 Y本文的分析目标是:
( n) B, l- x% z9 n' y" w一、描述性统计- V# U; }4 i7 }5 k; ~# h( M$ d9 G
那些城市的空气质量较好/较差?空气质量在地理位置分布上,是否具有一定的规律?二、推断统计6 _1 `. f) f7 r! R; k
临海城市的空气质量是否优于内陆城市?三、相关系数分析
; l0 \/ l: F9 q( Q空气质量主要受哪些因素的影响?四、区间估计. W2 g8 V3 b" }# x8 r- L
全国城市空气质量普遍处于哪种水平?五、统计建模3 a! q& U/ ]) t+ @) y7 ~% ^$ Q
怎样预测一个城市的空气质量?导包并读取数据:import numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport seaborn as sns. o; _( p3 W4 C0 G% ]5 j# }
sns.set(style="darkgrid")plt.rcParams["font.family"] = "SimHei"plt.rcParams["axes.unicode_minus"] = False
5 V. a- {. a4 }" s9 D3 J9 kdata = pd.read_csv("data/data.csv")print(data.shape)data.head()![]()
% |. g |# J7 E, S# ^( l
" T) G2 r3 M o8 q, H, |数据集描述:6 b& u9 w3 u' z- P, t. _
" u! f4 p" ^1 gCity:城市名- Z" `! C/ }8 G8 E" |
; E+ j4 ^7 q4 y# D' o5 v; d# K5 j
AQI:空气质量指数
% X2 G0 u# j9 k5 d5 m! f& t4 C5 C( P7 ?
! |& Y- Y) K% ]0 Y- k$ k: M P, SPrecipitation:降雨量
7 }9 O- P8 E/ K% |8 |5 }4 O
* A1 _# q Q3 L& e% oGDP:人均生产总值
/ x! P& F$ C: R# W6 u8 Y! q: C
8 ^" d9 F8 x" F7 v# ETempearture:温度
$ K, y4 Q J. {. v% I& t' F; a
" j8 y$ p- o2 z6 BLongitude/Latitude:经/纬度6 f& w X, p* q7 d
6 I: O2 M( g: m0 l
Altitude:海拔高度. n) I; K/ b/ D# [& P; j- t+ m8 N$ s
2 d' \9 v" z! i+ bPopulationDensity:人口密度
; [9 C, O; E7 y9 n. a1 u; y- T+ s3 u j T0 q
Coastal:是否沿海
, B) s8 G0 r) d3 V/ o
) i% E3 O1 e7 x; H, Q) K* BGreenCoverageRate:绿化覆盖率% _5 N, T0 j" U' d. z1 j7 ?
8 B4 I0 E9 ?7 ^5 K* z/ UIncineration(10,000ton):焚烧量(w吨)4 C$ K# h; E- K4 W' W0 e) U6 |
' v7 ]* Z" Y2 H0 ]! T( N
数据清洗3 C. X8 n' B" _# \3 c
检查缺失值:
; g4 F) m& X R" Z1 f8 r3 M* E3 M& S数据集描述:7 g5 |# D1 X/ k
( q6 p: `4 k' t2 c$ e% h g5 B
City:城市名
& l* H) E1 N9 }5 Y' t/ i v
- Z5 n0 X! j3 l0 |0 P ^3 ~# VAQI:空气质量指数
. y4 K# h; j8 @
, v& w" R* j) _! u4 IPrecipitation:降雨量
8 [) \/ Y0 V% D$ q! D9 \
3 \! [ ]. r5 t4 ?9 m6 oGDP:人均生产总值2 a$ T9 r" X' D; I/ S
/ m7 y8 ~% g7 \; e
Tempearture:温度
4 ~- C9 t! h9 d
+ J" J) [3 f. C" |Longitude/Latitude:经/纬度
# K" Q' f$ m% o2 x3 ~5 K8 s6 ~6 n o; R
Altitude:海拔高度* Q" i7 K9 M8 q' M7 c- A
( c$ d3 {! |8 N' e
PopulationDensity:人口密度+ t7 L! S. e8 {% |, S
6 @/ c, f) m0 h, TCoastal:是否沿海* z/ N, x s8 w x: ^0 P
/ z- F- B/ u: x0 j6 M$ J- [: P
GreenCoverageRate:绿化覆盖率. C% X. j( B O! b- p$ ]* J
$ h: i, {7 l0 k5 ~" _Incineration(10,000ton):焚烧量(w吨)
3 u* k* @* C1 F& r& U; r- Z( f) `& U
数据清洗
" Q7 `% H7 @. x% ~8 S+ I# y1 S9 W检查缺失值:: o' @$ q6 }" |" B+ n! f5 T5 A8 }
data.isnull().sum(axis=0)4 l, ~) D0 M3 g# G% Y
' E; R% I; F/ q
/ A% W7 J/ e4 p, D![]()
0 _2 y! C" z7 F2 Z
' q* X# h @+ q" o/ L9 |2 N1 c查看含缺失值列数据的分布:
4 L8 T7 L0 f! s" e! m# E! g- ^#print(data["Precipitation"].skew())#偏度 `: r1 L5 l3 Z# w- E: j
sns.distplot(data["Precipitation"].dropna())#要删除NA值才能做分布密度图( r3 p0 O0 n# d5 n
plt.title("分布密度图")/ w! {- N2 U' N" q& h
0.273607606711773872 K! _4 h+ G1 j7 |0 W6 c w
! E! x; M+ t# \![]()
/ t& b4 y5 ]( {
2 h) O5 T1 W( ?% y# O' y2 _) k, G数值型变量,数据呈现右偏分布,所以使用中位数填充。 对缺失值进行中位数填充 data.fillna({"Precipitation":data["Precipitation"].median()},inplace=True)
+ i1 A0 U' R& t3 t; K% f/ p检查异常值的三种方法- data.describe() 查看数据的描述:分位数、均值与标准差
- 基于正太分布 ±三个标准差涵盖99.7%的数据
- 箱线图(四分位距IQR=Q3-Q1,上下边界:Q3/Q1 ±1.5IQR)
$ f& g" z5 o7 ]+ F! h
查看数据集的偏度:
# [6 @; V7 B0 w8 @9 \% G( \data.skew()
7 g" d& l0 }% e
\* t( b; Q1 ?0 oAQI 1.198754
* Q( J/ e% P: y' }' fPrecipitation 0.2736083 t7 K5 Z A8 n+ X' f" o
GDP 3.761428' w7 d" F6 z1 M' k" ?8 f
Temperature -0.597343
+ U7 i6 d( O. n+ ^9 u% [8 i. d3 _Longitude -1.407505
* e: S5 J" \$ o! P: y8 F/ m0 n6 KLatitude 0.253563
5 U# ]3 G( e n( d( }Altitude 3.067242" B/ F3 {% F( _
PopulationDensity 3.125853
$ F9 {( p; I, [$ |& S8 d: |# |GreenCoverageRate -0.381786
4 W$ M( x+ y. }6 C0 W- |2 H* p8 ~Incineration(10,000ton) 4.342614 k* r# I& B$ h' ^ x& g
dtype: float64
n1 N* x) @3 E
: F$ i8 A+ j+ ^可以看到GDP和人口密度等都出现了严重的右偏分布,意味着存在很多极大的异常值。 下面我们查看以下GDP的异常值: 8 Q9 ^7 \2 Q2 @+ L! l6 r _" }
mean, std = data.GDP.mean(), data.GDP.std()0 x: s+ C \3 q9 h; @& Z
lower, upper = mean - 3 * std, mean + 3 * std" V$ A$ a: S9 ^1 K5 ^
0 N' |$ p$ S9 `4 x2 ~print("均值:", mean)1 L! Y6 Z$ H5 f. { U
print("标准差:", std)# E8 I( s& a; M3 V5 C/ J& o
print("下限:", lower)
) J0 Z! \& |. `6 r3 z0 Qprint("上限:", upper)
) T, p' L2 k, {+ Odata.loc[(data.GDP < lower) | (data.GDP > upper), "GDP"]2 e1 a5 v- i* p+ h6 ?! Q1 V# V7 Q
3 x3 K: G K3 c( E
均值: 2390.9018153846165 c- x4 J1 h8 T! U& z S Z
标准差: 3254.876921271434+ O* ~3 p$ q; P
下限: -7373.728948429687
6 G0 ?& G) |( R: _- N上限: 12155.532579198918
+ B% L6 F' F, f& ?& Y16 22968.60- F J/ B: {. j# v& N
63 18100.410 ?( d& ^+ B1 @" C
202 24964.99
5 G, ]( D2 S, u$ d& Y9 D9 m' Q207 17502.996 s9 u: W8 }+ K8 Z% o
215 14504.07, j* X$ i4 C) M3 `
230 16538.19
6 G' e# T1 Y7 D( `' Q256 17900.00
, O: j' p$ _, P2 S# o/ e314 15719.72; p0 L) m) Q3 y! j
Name: GDP, dtype: float64* v" Q* Y8 V# r l
) [) B4 n# P5 u+ u( ^
7 I: ^' n7 N0 s+ r L( e. ]: Z3 P0 {' {3 `
, z3 Q1 `6 n$ Z* A x( U
" Y! t5 k5 J8 k( F- o
|
zan
|