- 在线时间
- 514 小时
- 最后登录
- 2023-12-1
- 注册时间
- 2018-7-17
- 听众数
- 15
- 收听数
- 0
- 能力
- 0 分
- 体力
- 40322 点
- 威望
- 0 点
- 阅读权限
- 255
- 积分
- 12808
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 1419
- 主题
- 1178
- 精华
- 0
- 分享
- 0
- 好友
- 15
TA的每日心情 | 开心 2023-7-31 10:17 |
|---|
签到天数: 198 天 [LV.7]常住居民III
- 自我介绍
- 数学中国浅夏
 |
AQI分析与预测AQI全称是Air Quality Index,指空气质量指数,用来衡量空气清洁或者污染的程度,值越小,表示空气质量越好。3 l/ l) K8 b! D4 p+ J7 f) a4 B0 k! w
本文的分析目标是:
' e0 P: @5 N) p* s/ K/ }0 X1 N" d一、描述性统计% {% S, O- i- h1 k8 F9 P5 V
那些城市的空气质量较好/较差?空气质量在地理位置分布上,是否具有一定的规律?二、推断统计
* C2 A2 g1 n+ v8 d! \临海城市的空气质量是否优于内陆城市?三、相关系数分析9 P7 P6 U# x" \& N
空气质量主要受哪些因素的影响?四、区间估计' Q) o' s" ^% }& Y3 n- w
全国城市空气质量普遍处于哪种水平?五、统计建模- r$ C) [. m5 ?1 m0 M
怎样预测一个城市的空气质量?导包并读取数据:import numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport seaborn as sns# i* L" B9 W6 J( [
sns.set(style="darkgrid")plt.rcParams["font.family"] = "SimHei"plt.rcParams["axes.unicode_minus"] = False
3 u6 H0 K6 P4 e5 x& M9 l" y3 F0 fdata = pd.read_csv("data/data.csv")print(data.shape)data.head()![]()
4 T0 }! W3 e. ?- q" P; v1 X# Q7 L# g V& E
数据集描述:( K( H- r M- ^
* G% L+ s" w, S
City:城市名/ i: l! Y8 d% R# G
) M, T! ^" m9 h( y& fAQI:空气质量指数
( R' I' s& [3 a5 S
9 e# `+ s$ e3 D! L \5 l% \0 aPrecipitation:降雨量: } C7 Q1 F7 G. D' ~( f
! X8 a" D1 n: C2 Q" G- _GDP:人均生产总值% @. v h& d8 x* U, G
/ h# n- Z& M N* P/ }
Tempearture:温度
& S- }$ x* q3 O. e# c- H9 m9 F- t* ], V9 Y
Longitude/Latitude:经/纬度
R% Z' N$ d2 H. U$ M, w; {9 D
& m8 j l7 D* _% B6 |Altitude:海拔高度
0 V w. t0 V$ ]( `% }8 [( r+ m) E: X$ u( B [, d
PopulationDensity:人口密度) ]6 B# f' H+ l$ L# P4 h
) B6 L& P* }5 m B% [' gCoastal:是否沿海) k4 y5 O, F( r. j! F$ }
3 m. N2 ]) F" V. s0 tGreenCoverageRate:绿化覆盖率
" I. ^9 N' B) u( \
; L% |: d3 W" i; p* p% x& ?Incineration(10,000ton):焚烧量(w吨)2 b0 I: w& S8 Y" R& _. X# o: o8 L
0 S5 B; A$ k( f( k$ k1 }
数据清洗 t& ]9 d& G1 @% X; j
检查缺失值:
) d" p% |* d) A4 r, C) m. M' D5 Y数据集描述:5 c# ^6 i( s/ H6 ]
9 | h0 x5 c1 u4 A* k
City:城市名 T+ u T7 y; n5 V% G
6 O1 ^; Y/ [4 u# [! e
AQI:空气质量指数
7 z. T( d3 q/ B- ^0 \2 c, _! e6 M2 D- M1 g/ n. ~# H7 K* l
Precipitation:降雨量
: a' _2 O- s/ x) Q5 I0 f v2 p
* x2 X/ s3 b6 X m5 uGDP:人均生产总值. V# m D% }4 u6 j
/ ?5 p3 x/ {/ F0 g/ C) B, e7 c6 `Tempearture:温度( S- I9 o! ?7 s8 h& P
( Q' |1 t/ Y& W0 I1 zLongitude/Latitude:经/纬度7 x% I# a! L% p4 ^+ G0 M$ ]# f' [
! V' M& z5 t5 I$ [1 _ U
Altitude:海拔高度' f1 G8 u/ x5 S& ]' x' q: v. O& N; M
3 l% P9 `8 `3 y6 L/ L9 C" n3 ?
PopulationDensity:人口密度
9 V" F& N# ~* j
9 G/ z( i5 C5 T! w" w" d' [Coastal:是否沿海, q! e1 g) M3 c& W c
* u9 x; h3 i% M+ aGreenCoverageRate:绿化覆盖率9 m1 S% i4 g& @9 M
' N" S: ?: v# Q7 R% M' L SIncineration(10,000ton):焚烧量(w吨)1 g1 R$ v3 `- c- h3 p
# w$ b1 {" T2 ^, b数据清洗
* k" P+ U+ |! x* q. j/ ~! N+ j检查缺失值:
) I* x( Q D# r+ K) Mdata.isnull().sum(axis=0)
# i' l' G( Z$ V/ ^3 f0 @2 q6 r# [2 Q+ G3 ]2 n" G: x, ?
! w* ~: K I9 @4 B) |6 k![]()
5 P! a( X; n* ^/ I s6 X1 A9 t* w/ R' i( |6 i8 I: N
查看含缺失值列数据的分布: q @' |9 f% u
#print(data["Precipitation"].skew())#偏度 8 T+ m' ^# C& N; y7 F+ g; d4 i
sns.distplot(data["Precipitation"].dropna())#要删除NA值才能做分布密度图5 O7 F: h: j9 c! X
plt.title("分布密度图")9 Y( `( |2 c; A/ p
0.27360760671177387
% ?, t; P$ g9 q$ W7 U
9 U; v" I9 w$ m7 ?3 u; y5 } ! L. c+ r$ s4 e6 Z
$ ~5 D' l1 A3 r( L- @5 N4 i数值型变量,数据呈现右偏分布,所以使用中位数填充。 对缺失值进行中位数填充 data.fillna({"Precipitation":data["Precipitation"].median()},inplace=True)$ \/ a: G$ }; g8 a
检查异常值的三种方法- data.describe() 查看数据的描述:分位数、均值与标准差
- 基于正太分布 ±三个标准差涵盖99.7%的数据
- 箱线图(四分位距IQR=Q3-Q1,上下边界:Q3/Q1 ±1.5IQR)9 {' l, g J' @3 f+ `1 }, v
查看数据集的偏度:
6 A9 z- W8 t% o% S' @' V; _4 Hdata.skew()
2 n; K; Y# v. B; h7 ~( |/ n- N: b
0 Z8 M5 ]7 p* O7 v) vAQI 1.198754
# t: G {# A3 n" y2 | GPrecipitation 0.273608
+ i% H7 G2 v% L5 y0 W( K& [GDP 3.7614288 ~/ \" i! w* h! l3 N+ }
Temperature -0.597343
, W0 n7 [% y7 w; t. SLongitude -1.407505
+ N! M3 J7 B$ L2 a3 DLatitude 0.253563
) ^# j, h- ~$ _6 D F8 L; N5 PAltitude 3.067242
2 c) ~. ]% l1 E* gPopulationDensity 3.125853
) B- m, M' z& Z9 aGreenCoverageRate -0.381786* X- Q- n- f* T+ `) E, n
Incineration(10,000ton) 4.342614
# P; P$ ^; j* {2 R) `3 L1 Mdtype: float64
# W' ~' r; l$ |. V& G
; S0 {- a i, |可以看到GDP和人口密度等都出现了严重的右偏分布,意味着存在很多极大的异常值。 下面我们查看以下GDP的异常值: k' z9 p( B$ `! ]
mean, std = data.GDP.mean(), data.GDP.std()4 I$ R8 p: W j5 C: n0 |* K+ C
lower, upper = mean - 3 * std, mean + 3 * std
: F- Y: B2 i& p; u+ |& R3 Z; }
" N& T% _' E4 i- r: d- Q; zprint("均值:", mean)
" l4 v' F% m7 D! D+ R4 r. Q5 Cprint("标准差:", std)
1 Y# X8 M3 @" Uprint("下限:", lower)8 v6 I% s/ o& Q" l$ s
print("上限:", upper)8 z0 e8 S/ E$ n3 A* \
data.loc[(data.GDP < lower) | (data.GDP > upper), "GDP"]8 `% H* {; W5 G! Z1 m8 A" u
6 F) E$ K3 f# }4 d; v+ c
均值: 2390.9018153846164 d& ~ }! ^2 T4 ]) _
标准差: 3254.876921271434
5 @5 k/ ~1 D( A下限: -7373.728948429687
: m" L3 L5 q# ^" U) I上限: 12155.532579198918/ ]9 T# [+ d9 x1 _
16 22968.60
7 y# Y4 R7 l0 @! ?63 18100.41" X1 @- l) `( \7 m
202 24964.99
, ^4 I0 \; P' O; u9 S; I207 17502.99
. e1 q' s) U2 v8 g215 14504.073 x! W3 W4 q; X
230 16538.19
+ Q: v3 o w9 ^* }7 H256 17900.00
; q/ I0 {8 A2 a( J% C' Z314 15719.72
7 ?8 Y' a% J/ ?Name: GDP, dtype: float648 y0 c! O4 c* c: @/ H1 ~) z
( M: \7 X5 r* J
$ P6 t: I8 I4 s+ _$ ~
' A6 c4 [2 G) q4 ^* z# A3 U2 T! E/ s* g% V( ^* s" |0 J
7 P+ O- Y! R( P |
zan
|