- 在线时间
- 514 小时
- 最后登录
- 2023-12-1
- 注册时间
- 2018-7-17
- 听众数
- 15
- 收听数
- 0
- 能力
- 0 分
- 体力
- 40304 点
- 威望
- 0 点
- 阅读权限
- 255
- 积分
- 12802
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 1419
- 主题
- 1178
- 精华
- 0
- 分享
- 0
- 好友
- 15
TA的每日心情 | 开心 2023-7-31 10:17 |
|---|
签到天数: 198 天 [LV.7]常住居民III
- 自我介绍
- 数学中国浅夏
 |
AQI分析与预测AQI全称是Air Quality Index,指空气质量指数,用来衡量空气清洁或者污染的程度,值越小,表示空气质量越好。* w/ N" P0 f% H! J" n8 Z! i
本文的分析目标是:4 E$ t8 {% x+ p$ T$ Y: n; a0 o
一、描述性统计
- @! h9 G/ Q+ |3 H4 f V那些城市的空气质量较好/较差?空气质量在地理位置分布上,是否具有一定的规律?二、推断统计* Y& o9 H' r l& g7 \0 c- s
临海城市的空气质量是否优于内陆城市?三、相关系数分析/ R9 B1 a5 _ J
空气质量主要受哪些因素的影响?四、区间估计+ L* a4 o% J3 P" L, g ~
全国城市空气质量普遍处于哪种水平?五、统计建模
' y |5 E# p& A2 _怎样预测一个城市的空气质量?导包并读取数据:import numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport seaborn as sns
9 ~' `( r4 {) Msns.set(style="darkgrid")plt.rcParams["font.family"] = "SimHei"plt.rcParams["axes.unicode_minus"] = False Z& q2 e$ h* q. i
data = pd.read_csv("data/data.csv")print(data.shape)data.head() # g o0 a/ H% `5 H. i( E: _
d& e1 N; s) {( @8 X7 t数据集描述:6 k8 l8 o: u/ A
3 c" y1 a* }" aCity:城市名6 V- X. l8 p/ d( F
7 z+ m" h0 |+ Q7 A$ v- ~ ^, bAQI:空气质量指数
; c5 K1 k& a# H: r+ r- ]8 p: |: W
. d5 A: D- e! }8 oPrecipitation:降雨量
4 q8 F) V. ~0 K0 X* D6 L$ n5 x' A/ p
GDP:人均生产总值: ?- z# o9 J9 a9 |' }
+ D% m3 U9 N4 k6 P8 q6 bTempearture:温度( B. ^6 W a/ Z B. ^& M$ E
6 r4 Y0 }/ d) D/ B8 U1 n: I- bLongitude/Latitude:经/纬度 c" U+ A H. a! d
( }$ d9 p8 ^/ \2 X. r9 S; G1 K5 sAltitude:海拔高度0 {; x3 n! Y8 F- z
3 [! ~4 w+ e- F+ O( }( IPopulationDensity:人口密度
8 j; f5 M& n1 H3 m$ |4 m8 N
+ O( F- _6 M! @4 q3 zCoastal:是否沿海
/ u7 w( D7 [, t o: ]' ^* v3 J3 n& v0 `0 D
GreenCoverageRate:绿化覆盖率6 f( a+ `3 h; H- g t6 {
. i0 E" A! {6 U$ [3 c, A( r
Incineration(10,000ton):焚烧量(w吨)' U2 W/ o6 Y( ^, B8 |
0 M9 \4 j7 y' a' f" q& s数据清洗# f! k1 @& F) Z
检查缺失值:" Q. t4 D5 }9 n [7 m8 Q/ o
数据集描述:9 q) z: R' u1 B, G
( t; l/ M. O) s# m5 Y" v
City:城市名, r$ A* G: Y6 Z# ~8 ?- U
/ h7 a1 S. c% Y1 U% ~+ \& G& O+ `
AQI:空气质量指数
4 R" {# u4 C8 a* {
6 q8 y5 S. R3 O2 ]# s( t" [Precipitation:降雨量
# |7 O+ _& S( `. c+ _* E. F2 Z) C% H' I& s! I7 J
GDP:人均生产总值/ m8 A: l- Y% Y# l5 [
: l' P) `6 Y+ U d
Tempearture:温度! j7 a Y- J; p0 B
' a) W. m3 B- w* gLongitude/Latitude:经/纬度
! k/ i4 }2 g& {( Y# _6 ]- a/ G2 g; | K# A: o' W9 I4 M
Altitude:海拔高度
3 Y0 l& f; T" O. l) p9 |7 b/ [$ }: u/ [, z8 M
PopulationDensity:人口密度2 B1 H" ]- @0 Q6 Y8 @' ]: ^# P% T
% U5 P8 b5 {# }8 U4 t$ }$ ~# l
Coastal:是否沿海
% S/ k/ I! G* x. p1 p( ~ ~0 b
" D& M4 _4 J7 R% \; s1 Z/ \GreenCoverageRate:绿化覆盖率, a' D, j; i! \- G" L* z- D
/ }: s* C& D9 E( G* C1 \8 V
Incineration(10,000ton):焚烧量(w吨)
P5 V2 w( b5 S- x, P+ G$ g2 t ?9 ]4 T; y6 Z
数据清洗+ b6 _ H1 P. O* B
检查缺失值:
. @% }" Y9 V0 L0 m; s) c2 ldata.isnull().sum(axis=0)+ ~' q0 b7 m. a) D4 O3 Q
* f* T" s$ M) b9 p8 O9 O( L" v
7 S! `" D6 t" ], T, K4 j% C* R![]()
: l" }+ P" m6 X7 L8 T- L" [( R' L, M. b' g. e g8 V$ E# D, n" _- m% F
查看含缺失值列数据的分布:7 }) i7 M) z! N0 Z$ _$ U* t3 \7 g
#print(data["Precipitation"].skew())#偏度 + w# W; {6 Y6 i0 B( q4 J- W
sns.distplot(data["Precipitation"].dropna())#要删除NA值才能做分布密度图7 u) _/ t ]/ G0 g
plt.title("分布密度图")" h& m' m5 K0 M6 z& S/ F/ |
0.27360760671177387
7 p% i7 X$ B4 v% b1 \$ C l. `: m0 p% ?3 c$ m
![]()
/ k1 [/ c& G) Q! O
: k. a+ o" `5 T5 \# B数值型变量,数据呈现右偏分布,所以使用中位数填充。 对缺失值进行中位数填充 data.fillna({"Precipitation":data["Precipitation"].median()},inplace=True)
9 f( c/ |6 v) |* R: J检查异常值的三种方法- data.describe() 查看数据的描述:分位数、均值与标准差
- 基于正太分布 ±三个标准差涵盖99.7%的数据
- 箱线图(四分位距IQR=Q3-Q1,上下边界:Q3/Q1 ±1.5IQR)
' Z! B3 ?- ?( v8 ]7 I7 j
查看数据集的偏度: 1 d/ G5 I/ w! a$ r$ D, u
data.skew()2 l' V' V' F {, r5 n: l' u3 w9 _
" r8 k# H! u/ R% eAQI 1.198754
) {7 a! J6 J4 W/ VPrecipitation 0.273608
7 y- r$ y4 ]2 `8 |, y7 X9 k6 UGDP 3.7614286 P- }# z8 d% }* D6 |
Temperature -0.597343
, l) B# x. S0 D0 V: M2 \Longitude -1.407505; \! p4 a2 \0 Y& O1 k: @
Latitude 0.253563
/ u* w( ?- Q, l+ H2 u( M1 }Altitude 3.0672427 h; e, X {! h* O5 e0 G
PopulationDensity 3.1258531 d, {1 D+ G, x* h3 ^( q
GreenCoverageRate -0.3817868 n9 t" @& I/ T6 k* d% K
Incineration(10,000ton) 4.342614
6 f8 \2 _3 H0 B3 j1 ?+ \% `" i \dtype: float649 p1 e4 Q, G! l
- k- P8 b0 ]1 U& }/ V$ W2 {' B
可以看到GDP和人口密度等都出现了严重的右偏分布,意味着存在很多极大的异常值。 下面我们查看以下GDP的异常值:
) K; f; F8 J9 @ k( ]mean, std = data.GDP.mean(), data.GDP.std()- R; R4 G" R) @( z' X3 [/ ?
lower, upper = mean - 3 * std, mean + 3 * std4 }3 D' @- P( R Q1 _0 `
. k; M5 B0 C h. G( q1 h
print("均值:", mean)9 p& U$ Z5 U- h S
print("标准差:", std)
" E) u: @! Z! \* e% W. C" ]+ W( xprint("下限:", lower)0 k7 U4 ~3 F+ u9 u# L. N' I0 E' Q( |1 f. p
print("上限:", upper)! [9 Y- W8 b: ?" E
data.loc[(data.GDP < lower) | (data.GDP > upper), "GDP"]
w4 I( i8 b) u( h* W' s( a2 K8 o# t& K
均值: 2390.901815384616. y* p0 u. D/ q/ p! Z
标准差: 3254.876921271434$ I. _7 G$ m$ E# `8 Q
下限: -7373.728948429687% K) S4 i T5 v% D
上限: 12155.532579198918
/ v2 a0 D1 t7 n H16 22968.601 d! V, T! ]9 D6 k
63 18100.41
/ `- D, i* E: v3 u! K5 f202 24964.99/ L+ j3 ~, Y: M" `
207 17502.99
# p" U7 B4 f- K) p215 14504.073 q( v/ E! [0 I, f
230 16538.197 _; A: t g) a
256 17900.00
z7 v0 I: Z7 L- |1 w5 ^" U314 15719.72
- T% Q* J) d# n8 U5 ?4 FName: GDP, dtype: float649 T1 ~5 w" f8 Q7 z& [$ e0 S/ \
/ }8 A5 @: r9 J
9 Q! |7 X% `, I2 o2 F* C
! u! l% D/ v. e1 y# K
# n' S/ z$ {/ M2 @% V$ o- p# H% T' A" z- I1 v2 U0 r9 x
|
zan
|