- 在线时间
- 514 小时
- 最后登录
- 2023-12-1
- 注册时间
- 2018-7-17
- 听众数
- 15
- 收听数
- 0
- 能力
- 0 分
- 体力
- 40255 点
- 威望
- 0 点
- 阅读权限
- 255
- 积分
- 12788
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 1419
- 主题
- 1178
- 精华
- 0
- 分享
- 0
- 好友
- 15
TA的每日心情 | 开心 2023-7-31 10:17 |
|---|
签到天数: 198 天 [LV.7]常住居民III
- 自我介绍
- 数学中国浅夏
 |
AQI分析与预测AQI全称是Air Quality Index,指空气质量指数,用来衡量空气清洁或者污染的程度,值越小,表示空气质量越好。
0 @1 A6 T9 s3 L* B7 A' ]7 F本文的分析目标是:
1 d# ~3 z8 `; }0 a一、描述性统计
" r/ y% R0 A; g那些城市的空气质量较好/较差?空气质量在地理位置分布上,是否具有一定的规律?二、推断统计8 Z' | }+ D6 {: D9 Z/ M
临海城市的空气质量是否优于内陆城市?三、相关系数分析
& K% k) O, G! ~) s& ?' a1 c5 O空气质量主要受哪些因素的影响?四、区间估计/ I% `% O* ^7 s" s* D1 x4 v
全国城市空气质量普遍处于哪种水平?五、统计建模
) B h" K' l, @( F- X7 G怎样预测一个城市的空气质量?导包并读取数据:import numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport seaborn as sns! y- w5 H1 \1 P$ M9 a
sns.set(style="darkgrid")plt.rcParams["font.family"] = "SimHei"plt.rcParams["axes.unicode_minus"] = False. ?+ D$ g: Q) I2 f7 p$ P
data = pd.read_csv("data/data.csv")print(data.shape)data.head()![]()
' A& [- C I4 V7 f3 }5 R f5 [
) P$ [3 H/ ]4 O5 n+ W" u数据集描述:/ K8 l% F+ v& j: E" R- k t7 e5 ^
6 B" @9 ]: t! z7 | ?City:城市名
. N8 \& b5 n* ~) w; Q9 s0 @
1 u4 H! F# |: R, r: d& HAQI:空气质量指数: W- i+ M3 h0 F: _
: ?: ~0 G( |1 `! nPrecipitation:降雨量4 o* Y+ k# s1 ~! l; I% ?
. r( C5 M) B+ b; B: f4 wGDP:人均生产总值
. ]8 {; W* S k/ W% }5 K: M
/ U2 c0 C- C4 u" W5 k# [' A. nTempearture:温度
: m+ T U9 x! {; @! t
. `9 |1 r+ U+ ^( \) NLongitude/Latitude:经/纬度
8 E! U9 j' b1 N/ }/ F; g @7 E9 `2 z
Altitude:海拔高度
( p9 R! r) J& Y9 o' {$ Q1 Q# b2 R7 y6 z5 c
PopulationDensity:人口密度
5 B. }, _) d( O/ {' ~" X* J: x0 c# \: y8 r
Coastal:是否沿海0 }% n4 ]' R W, @9 Y2 @
+ G- J: M, L& z0 P( M4 T1 ?6 W, A
GreenCoverageRate:绿化覆盖率* T- Z2 J) k0 Y- D& c. s
7 C4 F! x3 Q% f( c' D
Incineration(10,000ton):焚烧量(w吨)
# Q) V1 g( S6 i# P* w
% C' S% f m3 t7 u数据清洗; j. b6 m1 J" j8 k" U7 t: B) i
检查缺失值:* C5 L1 L1 t, a/ f
数据集描述:
; h- R# W! U- ? h" L
; O# `- c% y5 R: L' k" |# |& w9 zCity:城市名) [% }& j9 O( `3 d
# Z6 ^! B1 j1 j( n) W8 Y" w, @
AQI:空气质量指数+ z- Z- r( Z% N" F3 P e: U
5 Q) q' i: T" Q' u l0 f: V
Precipitation:降雨量
# N8 b3 |9 r/ W/ H4 i8 c5 w& z- o6 d) q3 |. L
GDP:人均生产总值( z# z! \. v+ I+ |
9 B4 V3 `+ d- V' ?
Tempearture:温度$ P, Q8 O7 {' J: ]! ~, E% _
) U- F1 \, X2 `Longitude/Latitude:经/纬度
+ @6 n) ]% R: E- A
+ L9 j! o7 |8 q6 {* U$ q y- pAltitude:海拔高度
4 t6 I/ y1 M5 e( Q$ e
' I! _* j+ x6 b4 n8 dPopulationDensity:人口密度
. n; e, D5 E' t) s& L* B% J7 l. x; |* H9 {
Coastal:是否沿海
1 C# i% u' j8 n0 s6 C
' f. [/ D' `$ wGreenCoverageRate:绿化覆盖率. E9 y* w' ]+ z& @* ]% |$ L
+ r% e1 Y" k/ x/ \ F
Incineration(10,000ton):焚烧量(w吨)8 R9 P( h6 m8 @
3 o L7 d1 K! B5 f% I4 i0 U数据清洗+ ^! l" L% K+ Q J( y7 T: w' k
检查缺失值:
4 f" z9 r# r2 u% |7 P/ g7 t3 V& |) Qdata.isnull().sum(axis=0)9 X2 ~5 |7 E' |# z1 A
( E3 [% {! C$ |1 r
. J7 r3 c9 @$ K L* E7 r![]()
9 ?& R4 \" B- ?4 E8 N. p. {
( j2 _/ w" J# }查看含缺失值列数据的分布:
2 _. W2 y/ P% B4 v6 h#print(data["Precipitation"].skew())#偏度 K. K. g D! f& ?( M/ A1 m$ v
sns.distplot(data["Precipitation"].dropna())#要删除NA值才能做分布密度图- y% y) s1 {+ f6 w
plt.title("分布密度图")9 w) E H( ]0 X. U1 p' }
0.273607606711773872 P' H* p, k) |, {- \
+ |3 {; m* w5 _
![]()
6 s! M4 \ z4 C3 I, y" f+ ^$ m& {0 G5 C/ n% u8 G. o' B) O" ~
数值型变量,数据呈现右偏分布,所以使用中位数填充。 对缺失值进行中位数填充 data.fillna({"Precipitation":data["Precipitation"].median()},inplace=True)7 a6 x8 o+ f- Y
检查异常值的三种方法- data.describe() 查看数据的描述:分位数、均值与标准差
- 基于正太分布 ±三个标准差涵盖99.7%的数据
- 箱线图(四分位距IQR=Q3-Q1,上下边界:Q3/Q1 ±1.5IQR)
8 w% c7 P( k4 V. A. o
查看数据集的偏度: ! v+ A; t( N7 M* s6 S: t z
data.skew()5 ]' O9 f' O! u
1 c5 y( N5 Q! [6 E+ UAQI 1.1987543 K, d1 T- R" V# G2 w
Precipitation 0.273608
1 c# D) X4 t9 cGDP 3.761428
1 f$ T' r, w0 y1 j& ~Temperature -0.597343
1 }0 C- t+ n. e9 I7 B0 hLongitude -1.4075059 Z- C% z8 \6 L) p
Latitude 0.253563
- ]- f1 i9 C# }- B' N; f- aAltitude 3.067242
8 ?. f5 ?- l2 I- G3 APopulationDensity 3.125853
* m4 F. K! u7 O: zGreenCoverageRate -0.381786$ s! z, n, [+ l2 S; n
Incineration(10,000ton) 4.342614
* A8 Z3 U: j7 ?1 M9 ^dtype: float64% Y4 v* O9 T& p$ g! v7 b( k
* V, O; a2 _( v1 q/ S5 B& X) }; n, N
可以看到GDP和人口密度等都出现了严重的右偏分布,意味着存在很多极大的异常值。 下面我们查看以下GDP的异常值: 2 x! S6 n }5 \$ o
mean, std = data.GDP.mean(), data.GDP.std()
5 s" C n, ~( h' m' ~2 I+ Jlower, upper = mean - 3 * std, mean + 3 * std8 p! Q7 y, g! V$ v& w; Z
5 M9 A! G, e' T$ q# e% cprint("均值:", mean)
9 a) J8 S7 t& j9 pprint("标准差:", std)6 W6 Q0 p& P" H7 x3 T. _) N
print("下限:", lower)# E1 O# D7 N# m+ C
print("上限:", upper)% [1 E/ I0 F( @$ L: |% ?9 t
data.loc[(data.GDP < lower) | (data.GDP > upper), "GDP"]3 m$ e2 O# C9 q7 c) V% ?
4 Q; E1 f% M& [. j+ d3 g
均值: 2390.901815384616
4 R& a# X7 D. U9 Y* ?' @) L标准差: 3254.876921271434/ ?( H/ Q9 f W0 ]- v- f8 ?
下限: -7373.728948429687
& T" U, e( |7 q0 ]; X) b T上限: 12155.5325791989187 A+ V8 {7 u8 I+ q5 P5 O
16 22968.60* O/ q7 u) `8 E- q' t" L% B6 F9 a
63 18100.41
( A+ n. {8 t M& U, s8 ~202 24964.99
% V# w- w5 L: {# e0 Q207 17502.99) o- O9 w1 w4 i! X0 Y) D
215 14504.070 J1 Q, X$ M' g: q! H7 q
230 16538.19
6 {# ^6 v. S6 o7 ]0 ?! x1 g256 17900.00
, d; X0 ]- } t4 y314 15719.72
' q1 u" u) f& [# DName: GDP, dtype: float64
: n2 V/ x) `! M* Q" @8 e
. v2 V- W& J3 `5 }, t$ e- }% `
7 d% f9 E/ k. P# J6 V* g# w
! a. I8 V# d- ^2 u1 w/ X1 N
# g3 w& @: `# y9 U5 s |
zan
|