- 在线时间
- 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,指空气质量指数,用来衡量空气清洁或者污染的程度,值越小,表示空气质量越好。, H* P8 h4 A2 H8 C
本文的分析目标是:
$ a9 Z9 s' P$ p: L8 R# h一、描述性统计
; v" L6 Q- M4 P( w5 O$ X/ |6 z那些城市的空气质量较好/较差?空气质量在地理位置分布上,是否具有一定的规律?二、推断统计6 f/ a7 q6 z# u: k, h* c
临海城市的空气质量是否优于内陆城市?三、相关系数分析9 M; j. j. O. n5 h* J, T# p+ X
空气质量主要受哪些因素的影响?四、区间估计
. Q" l( ]$ D1 m" ^ M- a: a全国城市空气质量普遍处于哪种水平?五、统计建模
7 Q0 O+ t6 a) v% Q怎样预测一个城市的空气质量?导包并读取数据:import numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport seaborn as sns) @$ Y5 V* L2 T; I) a
sns.set(style="darkgrid")plt.rcParams["font.family"] = "SimHei"plt.rcParams["axes.unicode_minus"] = False( \5 ]0 P" f f, \1 y$ s
data = pd.read_csv("data/data.csv")print(data.shape)data.head() " W- A( q1 ?# O, U
' |1 K/ p; y3 n+ |' X数据集描述:
" G* B5 [: _8 Q& ]2 `; l1 N. m& R# Q
City:城市名
3 j2 A" W7 Y1 H
8 T0 Q* D+ x6 l& ^7 yAQI:空气质量指数 N+ D0 ]- n. T& c D
. s% s5 |2 c7 B( ?* lPrecipitation:降雨量! w: G. D8 V' @7 m/ W
) R$ H, E# K8 w6 |" Q* U( u8 V: qGDP:人均生产总值7 ]2 V) z" s' p6 q$ A- O6 T1 Y
; S2 q1 K( z" U: pTempearture:温度2 i3 `& [1 z0 y7 s
8 }8 j" ]" Z) _! Q6 |, f/ O# S1 ^
Longitude/Latitude:经/纬度* p; o5 z9 [* v8 a# ~% H) R6 b
0 t5 `2 \. T+ u: t+ D# u7 Z$ D) eAltitude:海拔高度
* x( r7 b' f* ~3 I- ?7 C/ X4 _& \+ u: {, y* S" X- P+ h
PopulationDensity:人口密度9 N& t% n' J- n6 l) L: {' a
+ ?2 \9 K/ G! Z( S$ }0 V, l6 s
Coastal:是否沿海+ Y y$ P8 k* k6 _, g! r6 z
* g- _3 D4 U! _9 p* G% P7 w
GreenCoverageRate:绿化覆盖率1 t( x) s8 p# @) W
. u) F, C0 F/ t& eIncineration(10,000ton):焚烧量(w吨)
% N, p% N. `3 u& i: F
8 |& U) j2 ?7 z) { W数据清洗
& A' A8 Z) R4 L: I. B8 D检查缺失值:3 J; F, q9 A2 j# ~1 `
数据集描述:; l, x7 ~9 R7 I) N5 s0 B1 Z( P" c
) y( ~6 W0 T$ \& g, F; x7 a
City:城市名+ |2 X2 t" ~- ]* Y9 j% A
- z6 Z$ c8 }) h4 L+ s- L) @1 ]
AQI:空气质量指数+ u6 O! L2 q1 [
T1 k0 F% K& M: j& MPrecipitation:降雨量
1 z% M/ V: ]. p, U2 K* |3 h ?
" F6 t: L+ Z9 M& e$ X" t) h: ?GDP:人均生产总值
- N$ F$ t- s8 ?' |2 i( F& L$ s% O( t0 N
Tempearture:温度
4 I \9 ]4 P4 L! g2 M- u& N- E6 F7 s$ P; a
Longitude/Latitude:经/纬度
: Z8 ~5 J4 P7 M2 c. ^+ \3 ^+ `$ ]" R2 y
Altitude:海拔高度$ Y. l( O; @9 a3 v9 t9 S
. k5 l6 i% s( U; L( z, @* m! @; `; B: x
PopulationDensity:人口密度
1 b! |; V1 b' o' F3 j
$ s; g- }/ ]! K# ?: p& ~Coastal:是否沿海
+ o- x' W3 F0 V" k( T4 `9 A. G: ?/ H6 U3 a
GreenCoverageRate:绿化覆盖率
6 A" g* d9 L* F, g; F
, j) S9 B7 [. H4 ~* {Incineration(10,000ton):焚烧量(w吨)" j, H! @5 c. g, j& O8 f S
# W6 c. V) O, K' I数据清洗
% y- A9 `1 r4 y8 m+ u8 l l检查缺失值:
0 K! u& g9 f1 r! Z8 Z. zdata.isnull().sum(axis=0)9 `3 |: o, W" s% X: T0 I( ^6 k$ L4 p
+ R2 W4 a0 ~% Y0 g# k
0 ?( H, M4 l/ N4 R4 G2 b$ ` : S9 @5 {7 { h
8 O* C6 { ]$ ? T: ~ G7 P' X/ F' `
查看含缺失值列数据的分布:) ^' D4 \1 {- {
#print(data["Precipitation"].skew())#偏度 % |: A {( Y3 p6 N, F; _
sns.distplot(data["Precipitation"].dropna())#要删除NA值才能做分布密度图
+ ?7 h0 N# d/ T7 J- a* U* y6 cplt.title("分布密度图")
[5 _4 U/ l% N) `+ @# s0.27360760671177387
$ Y, m1 l; }5 S0 f* R2 |, ?" D9 C! X U& a. `
$ Q e- J1 `6 F+ H7 h. {: p
& v6 ?3 ~4 Y H0 D$ b# c数值型变量,数据呈现右偏分布,所以使用中位数填充。 对缺失值进行中位数填充 data.fillna({"Precipitation":data["Precipitation"].median()},inplace=True)
3 ]. s3 _/ T4 @: [8 `4 Q2 E [- O检查异常值的三种方法- data.describe() 查看数据的描述:分位数、均值与标准差
- 基于正太分布 ±三个标准差涵盖99.7%的数据
- 箱线图(四分位距IQR=Q3-Q1,上下边界:Q3/Q1 ±1.5IQR); A, w9 r* L! k; A' y7 V
查看数据集的偏度:
T( t3 F: C0 G; Z9 Bdata.skew()
7 {4 i: J6 E0 E0 F. d0 l
0 H$ Z: d T/ U: DAQI 1.198754# x' {/ C$ u7 {7 O% C; }' x+ @
Precipitation 0.273608
0 |/ e, N* Z3 f9 BGDP 3.7614281 u. f! }, D( R$ Y& B: k" l
Temperature -0.597343
( A) T s. ]7 M' t2 \Longitude -1.407505
4 X! E" E3 O2 ]Latitude 0.253563/ @4 R1 K; e0 K* @
Altitude 3.067242
9 M$ A: c6 Z: p3 D1 c% hPopulationDensity 3.125853
) K/ j6 s9 k5 R1 A5 k$ ]. RGreenCoverageRate -0.381786( Y5 k2 v: f! ?8 ]
Incineration(10,000ton) 4.342614$ C- }# {& n% s
dtype: float64, ]/ Z2 X0 A3 J- o
- ]4 m9 e Q9 n0 g& E3 \可以看到GDP和人口密度等都出现了严重的右偏分布,意味着存在很多极大的异常值。 下面我们查看以下GDP的异常值:
9 C- X( U! M: E7 [3 ?* dmean, std = data.GDP.mean(), data.GDP.std()6 l9 D Y/ o$ F+ D, {: y
lower, upper = mean - 3 * std, mean + 3 * std" y" j# S- O3 _1 G* m$ h
( E& j4 r5 x6 k" `
print("均值:", mean)
$ F' A* g1 u I) Hprint("标准差:", std)
9 L% K/ y6 p' R( v8 uprint("下限:", lower)
9 F0 X: H, M) S, m0 nprint("上限:", upper). N5 W, `% S3 y' `- p+ T% k" a7 N ?
data.loc[(data.GDP < lower) | (data.GDP > upper), "GDP"]
" y2 K3 h& c% N) b/ C" z% k! @$ G i& Q% g
均值: 2390.901815384616
% R+ f7 h6 d0 ?" A! T! G标准差: 3254.876921271434
$ _: J8 m; i4 ]: }. b下限: -7373.728948429687
* }5 I" |( F' u# o3 ~$ @4 A) N上限: 12155.532579198918! v% J" h9 {0 o0 A7 m- x* v' ~, Y
16 22968.607 i' s5 ~: X8 C
63 18100.41/ c6 H, |: z: K: V
202 24964.99
7 H! I) k) K. K% v: [5 ^: L! o207 17502.99
, ?- I" S; C( X E215 14504.07& Y/ }7 ~; d/ O) o0 h
230 16538.19- u: c J2 p; a5 o. y' v: I
256 17900.00
, Q5 W& ?0 b; [314 15719.72! {# o" t/ [3 I- I u
Name: GDP, dtype: float64. O, H: j$ k& u9 Z5 s% c& `
# J# W; ]4 {5 X) A! d' ^
! r7 ?7 T2 L. I+ v; K! O, m+ m c. R8 X! X* c
3 ?: I. m. \6 w5 t! T7 J/ f( x* K# _8 V3 \, ?) A3 R+ N
|
zan
|