- 在线时间
- 514 小时
- 最后登录
- 2023-12-1
- 注册时间
- 2018-7-17
- 听众数
- 15
- 收听数
- 0
- 能力
- 0 分
- 体力
- 40343 点
- 威望
- 0 点
- 阅读权限
- 255
- 积分
- 12814
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 1419
- 主题
- 1178
- 精华
- 0
- 分享
- 0
- 好友
- 15
TA的每日心情 | 开心 2023-7-31 10:17 |
|---|
签到天数: 198 天 [LV.7]常住居民III
- 自我介绍
- 数学中国浅夏
 |
AQI分析与预测AQI全称是Air Quality Index,指空气质量指数,用来衡量空气清洁或者污染的程度,值越小,表示空气质量越好。
% ?5 P5 M& q* l8 \9 w本文的分析目标是:
5 d- o. S4 Z' s2 |8 i& d4 @' O- |5 P, X) M一、描述性统计; V/ }( x4 S1 w' e5 {+ H& D" L# B
那些城市的空气质量较好/较差?空气质量在地理位置分布上,是否具有一定的规律?二、推断统计
/ K% b6 }. a; F |临海城市的空气质量是否优于内陆城市?三、相关系数分析5 M. l% s7 K$ k& U* \9 o+ W @
空气质量主要受哪些因素的影响?四、区间估计
5 m+ b8 s* a: K, [* `全国城市空气质量普遍处于哪种水平?五、统计建模
3 J0 X( Z* O8 h) Z. p2 j怎样预测一个城市的空气质量?导包并读取数据:import numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport seaborn as sns6 h5 L& K. S& }0 y
sns.set(style="darkgrid")plt.rcParams["font.family"] = "SimHei"plt.rcParams["axes.unicode_minus"] = False+ ^% b }+ A+ I1 N- r. b/ R& m
data = pd.read_csv("data/data.csv")print(data.shape)data.head() d+ D7 w9 B+ B: @
4 C" Q" ?4 k( \- t数据集描述:
$ Z$ g7 a7 x% v8 A+ a
. c2 i1 z+ {7 }/ U$ sCity:城市名/ V- Y5 K) J, |( @; c
5 a0 I0 H2 X1 j" i hAQI:空气质量指数- r* P4 W; {, x: d& R1 o
& L! b' Q+ S% f4 c& l
Precipitation:降雨量
& T: Z* d4 e( ?4 x# i9 W9 b
/ Z$ C+ s0 \8 JGDP:人均生产总值 e' K* m% {+ D, A7 o: H6 ~
, b/ m' P! H) G7 Z" M8 i6 {
Tempearture:温度
+ N1 Y! y) i) t: y: K- o9 b3 a& ~: A
Longitude/Latitude:经/纬度. h3 ]$ L+ F5 X+ ? ~, j
* s9 d: x" C$ H" VAltitude:海拔高度5 m( ]0 K1 _" [; a: S
2 Z2 `: C2 `3 @+ |& N
PopulationDensity:人口密度
* T! v4 h) `! d1 r, u. ^. G
! ` O1 k% Z$ ?9 yCoastal:是否沿海8 i( q' [1 V4 {# f3 K
9 {2 }; Y, I1 S2 }7 _( |
GreenCoverageRate:绿化覆盖率
* ~/ z7 R3 z1 i1 B: P
+ e. K% U6 d5 P$ M1 n) m9 BIncineration(10,000ton):焚烧量(w吨)' ^& D/ \+ B8 O. j: E
, k6 V3 a; [# L# d4 Y+ e4 i3 H数据清洗
# Q6 A1 A2 P0 }: X& W# ?: s! j7 h检查缺失值:6 k1 L$ P, w8 M
数据集描述:% b( r" V z$ Z5 Q7 U( ] r" a
) ]' F, F6 D. W2 w1 a
City:城市名: q% J5 _( E1 J2 e+ B, B* K0 p
# x. G4 T& Z9 d, Z! @$ G2 @0 SAQI:空气质量指数
6 s. n4 g3 ^: L& Z3 g
! U( ]; J8 e/ z, \# S2 D4 W( _Precipitation:降雨量, _' v: Y. i( w1 H
0 U* D8 I @" h7 @: jGDP:人均生产总值% x9 r/ F n; M( m% e
" L; R' o1 E. c R* e8 uTempearture:温度, [4 y! s6 S8 N# ^
9 [ T& T; _' I/ G c
Longitude/Latitude:经/纬度8 H) y) |: H$ R
% i9 A: l# b) _0 Z
Altitude:海拔高度 }; Y) _( U6 S: S+ h$ g3 u) n
% o9 ~9 v0 q1 j, B5 d# g& x
PopulationDensity:人口密度
6 e& ]; X* l7 h, t# b
3 O1 `: P, V6 t0 a, ^0 T1 y$ p! ~Coastal:是否沿海
1 j9 V. z& k$ O$ T! W+ k! L+ `7 q" n" ~3 y5 b. k4 D
GreenCoverageRate:绿化覆盖率
' |. ?4 u; x6 R' U# R" J! l/ r$ K* ^9 Z: I' e/ p4 A. p+ c
Incineration(10,000ton):焚烧量(w吨)
( }. I! H" V) _( Z1 q( u% @; w6 \
数据清洗
4 L( T2 s# g1 {* `& u5 }检查缺失值:
$ _) C! \) u0 r' i1 ~data.isnull().sum(axis=0)
8 y" R7 u7 U, i- }4 Q1 b5 w
; q" Q! E* x; k& `* z. }
* A1 H" h) U' T1 ?. i3 a+ ]![]()
% K( T D& o9 Q' j
" a6 _1 C% t) v) \/ G* O查看含缺失值列数据的分布:
! n3 C6 {* J- W( c3 p/ Q#print(data["Precipitation"].skew())#偏度
1 G: N9 W T2 I1 F6 asns.distplot(data["Precipitation"].dropna())#要删除NA值才能做分布密度图: z. c. v- w& V/ r
plt.title("分布密度图")" Z8 U t# E# H3 {1 l& X8 q
0.27360760671177387
0 R; d; Z% A. i3 I. F% f$ V; e5 Q0 R( ~1 B8 }4 @
![]()
7 M3 O f# Q: D7 O5 o) ~
) ]% z2 @( w+ x/ w8 E数值型变量,数据呈现右偏分布,所以使用中位数填充。 对缺失值进行中位数填充 data.fillna({"Precipitation":data["Precipitation"].median()},inplace=True)8 Z6 P5 ?3 J2 y; }- K* d$ C- ?
检查异常值的三种方法- data.describe() 查看数据的描述:分位数、均值与标准差
- 基于正太分布 ±三个标准差涵盖99.7%的数据
- 箱线图(四分位距IQR=Q3-Q1,上下边界:Q3/Q1 ±1.5IQR)% Q7 B( I! N5 r
查看数据集的偏度: 9 h! V7 i; M/ e; g
data.skew()
# ^1 Y9 p: v6 Q m& x2 Y7 j9 o6 e
& w1 t) p- e7 y- V1 E2 G9 _AQI 1.198754
2 D* E* c$ W9 @# c' M% @/ WPrecipitation 0.273608
# z- o0 G( y9 }8 j1 l) @/ M9 |, rGDP 3.761428
9 }- R( ?" b( t- [Temperature -0.597343. O- V) ~- e/ q2 t' ]/ c
Longitude -1.407505
/ c3 d' ?! X; U1 Y$ e$ V) Z# P! fLatitude 0.253563
. U3 j9 p& w- R" }3 B6 HAltitude 3.067242
6 G' a8 H) ^8 n4 ]/ H9 J% ]PopulationDensity 3.125853) y0 Q) _! w; S9 v+ b
GreenCoverageRate -0.381786
5 q2 D5 N$ G/ f' U: HIncineration(10,000ton) 4.3426143 |' r5 \9 l: I `7 q
dtype: float64$ S2 ^) K1 t8 S
! ~( S# ]9 j2 Q可以看到GDP和人口密度等都出现了严重的右偏分布,意味着存在很多极大的异常值。 下面我们查看以下GDP的异常值:
+ b2 V5 V$ o' E. W, i2 Ymean, std = data.GDP.mean(), data.GDP.std()
8 F9 A5 _* p, ~6 T& b+ k3 qlower, upper = mean - 3 * std, mean + 3 * std
7 n. t4 q% F) `% ?% P
. C7 n7 d4 d1 |7 }5 \! bprint("均值:", mean)& ~ ~7 P) _) r" P+ e
print("标准差:", std); J- [8 Q3 @% ~3 G9 m
print("下限:", lower)
1 Z4 c. ]+ K {5 Qprint("上限:", upper)
/ r5 @ v0 l3 |& Ndata.loc[(data.GDP < lower) | (data.GDP > upper), "GDP"]
- ]. B. B0 d7 b' n: u
/ w) v' M0 ?2 M! ]* N; X均值: 2390.9018153846164 b: B+ [* b$ z4 R. f) Q3 a
标准差: 3254.876921271434/ J7 T0 j* d6 K9 {- i/ s% u
下限: -7373.728948429687
2 P( m N( ]. N* K上限: 12155.532579198918
# G7 j2 d& t- {# u# |) k16 22968.60
% w, O" U% g) s' D w( O5 k63 18100.413 P) x( s& K! h2 x4 [. j/ F
202 24964.996 E6 J) T2 _7 W2 U4 E9 l
207 17502.99
. V! |4 D$ R! d$ {215 14504.07: g3 T. A/ R5 A* }, W2 f& m9 u4 U
230 16538.19* U: G9 t9 |1 Y/ i$ q/ f; C
256 17900.00
* [$ \% \0 Q J% H0 ^3 q2 _314 15719.72, e, t. p; ~" L2 j1 x5 z v
Name: GDP, dtype: float64
' S) n/ l) f! F2 M. s
( H* [7 D& c" Q
& X# h5 F2 V" H$ D
4 ?6 ]9 m7 L/ H( D: p9 y/ N; ?
6 x* S3 p% @4 e$ ?6 V. ]3 X5 \( I N: h
|
zan
|