- 在线时间
- 514 小时
- 最后登录
- 2023-12-1
- 注册时间
- 2018-7-17
- 听众数
- 15
- 收听数
- 0
- 能力
- 0 分
- 体力
- 40330 点
- 威望
- 0 点
- 阅读权限
- 255
- 积分
- 12810
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 1419
- 主题
- 1178
- 精华
- 0
- 分享
- 0
- 好友
- 15
TA的每日心情 | 开心 2023-7-31 10:17 |
|---|
签到天数: 198 天 [LV.7]常住居民III
- 自我介绍
- 数学中国浅夏
 |
AQI分析与预测AQI全称是Air Quality Index,指空气质量指数,用来衡量空气清洁或者污染的程度,值越小,表示空气质量越好。# U0 E5 h7 W6 l7 L0 v) K
本文的分析目标是:
, Y6 k* {) V6 l6 F% \1 q2 I( x- f一、描述性统计
1 d2 j, o. V& f. p! R$ g那些城市的空气质量较好/较差?空气质量在地理位置分布上,是否具有一定的规律?二、推断统计
+ _2 G- W- \! @) Y1 C Q# R临海城市的空气质量是否优于内陆城市?三、相关系数分析
( x) I, I2 n; Q k6 {空气质量主要受哪些因素的影响?四、区间估计
9 q' f2 u/ ?' t7 {6 z& ~6 f/ u2 y全国城市空气质量普遍处于哪种水平?五、统计建模' q0 T0 w" J u
怎样预测一个城市的空气质量?导包并读取数据:import numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport seaborn as sns
5 M/ \- k! p3 O! ]3 Isns.set(style="darkgrid")plt.rcParams["font.family"] = "SimHei"plt.rcParams["axes.unicode_minus"] = False6 h( o. E; {( F! T1 s0 L1 L+ Q: x5 S
data = pd.read_csv("data/data.csv")print(data.shape)data.head()![]()
+ C/ `5 O, ?; e, q+ S" s" d! Z( k/ N5 N2 q. u
数据集描述:2 q! i* _$ @+ w
7 e2 S+ ^8 N) k& i$ q8 V) YCity:城市名# {/ q$ U! [5 k8 G2 `6 W( E) j0 m
8 [7 o5 z% a. @AQI:空气质量指数
, `: B' N$ }, e/ o3 g. h( o% b' z
8 ^' X6 p) T# h: hPrecipitation:降雨量
0 T ]$ P/ d% _. F" F8 e( ~' Y3 K& o" @: M- K
GDP:人均生产总值
# ^- P) H4 E9 d, ~ K) ~- Q$ S# U$ O c8 N0 b; O% n
Tempearture:温度 A9 f* H }1 i
/ S; M, ], S! s) M$ h _- J G6 z
Longitude/Latitude:经/纬度2 x( M* g2 p2 H& y: V4 y& H
" d+ I" {$ ]) a+ _) E7 ^( J8 uAltitude:海拔高度. \* H% |/ `1 T E( A. X2 L) [
; @1 ~& d3 r! h, l1 }
PopulationDensity:人口密度
" N% v. Z) c& X' H& d6 w; p6 k; f" ]6 \. [4 A2 B
Coastal:是否沿海( @# W4 w0 g, u: [. v1 ]
/ {( O( N) a* D6 |+ K* E
GreenCoverageRate:绿化覆盖率
- K# }0 z V- B/ ~
" t+ D5 C* ]; q$ EIncineration(10,000ton):焚烧量(w吨)6 [: R9 l7 `" R8 g8 S
# E" [+ k! S" b8 E4 K# ~( G
数据清洗& |% C" E# u, r) Q5 p1 Z1 G
检查缺失值:/ u9 ^" {, q8 H- E& D2 @6 y
数据集描述:' I/ h# ~6 U, h5 e
% e' i+ N; p- l8 K+ M4 G: @! Y$ F
City:城市名0 t( N+ Y' j a! a# t
! z* `7 x5 ~0 r1 w$ K: JAQI:空气质量指数5 S; Q7 C) k$ s7 l/ n: Z8 s
' W/ k. r* S! U" I. I/ lPrecipitation:降雨量% z6 \4 N/ Q* D7 G' P" k$ `% }
* J. s* M8 s5 R' E9 E0 V* XGDP:人均生产总值
5 }" J# x) v3 C+ ^+ {( ~) M' [5 e c( T" c+ s. T+ C t2 {% u
Tempearture:温度
# I6 o* c$ c8 A( U
% T7 m$ L1 t( e0 C' j% c7 MLongitude/Latitude:经/纬度
- e J5 x" Z Z. c" Q9 Q- k/ ^$ }3 N+ q. m5 O, G
Altitude:海拔高度
6 B- g1 Y9 L. |7 E# E
; f# ^7 R5 I1 f9 F6 T7 K5 X7 D6 x7 VPopulationDensity:人口密度8 l9 [) B* U# p9 a- W: ^! c
+ I3 C: N+ e3 Y- D$ DCoastal:是否沿海
, ?# e3 q/ G8 Z$ O. d0 a4 j6 q$ d) F7 s* ^5 P- f' z* _: A9 ^0 |: a
GreenCoverageRate:绿化覆盖率; S' D6 x6 W' n3 p
2 S5 w( N0 X Q+ T3 H5 a* @& p
Incineration(10,000ton):焚烧量(w吨)
: y* n8 Q; _0 h4 V: Q4 A$ ]% t& U1 o5 c# K
数据清洗' O. j8 M9 W' d; D u
检查缺失值:* p- K! b" L n! I8 c6 I
data.isnull().sum(axis=0)
* Q! ]$ J' c: ?. i* i$ _( r2 t. E. }4 o# d: K
) _6 i* ?5 B w2 o( r7 y2 o % U. y$ U, K5 T
: A# X, H: T% i0 p* ]
查看含缺失值列数据的分布:9 L$ Y9 U6 u$ y. r
#print(data["Precipitation"].skew())#偏度
1 d8 W" i/ @* y# d: _sns.distplot(data["Precipitation"].dropna())#要删除NA值才能做分布密度图
3 n1 Z' D8 k! |: d% Aplt.title("分布密度图"). |- W% H# m @; N& N. M* c5 E+ y
0.27360760671177387
5 j& W/ U$ u) G1 i1 l' U
1 I+ t7 M! T% s/ }![]()
7 l: H# _7 b/ O5 Q& c* E, p
7 p2 d! B1 G1 u4 y数值型变量,数据呈现右偏分布,所以使用中位数填充。 对缺失值进行中位数填充 data.fillna({"Precipitation":data["Precipitation"].median()},inplace=True)7 f, x0 Z6 h- m3 ^; o, S
检查异常值的三种方法- data.describe() 查看数据的描述:分位数、均值与标准差
- 基于正太分布 ±三个标准差涵盖99.7%的数据
- 箱线图(四分位距IQR=Q3-Q1,上下边界:Q3/Q1 ±1.5IQR)
) ~/ g, R- t" A; ^0 {6 Y
查看数据集的偏度: . j4 ~" p$ F5 x4 @( W
data.skew()
3 d; f0 L0 f: f5 L; w; n1 F
, z* g' v6 ~, i GAQI 1.198754& Z M w4 x: F8 l7 P* W. o8 r
Precipitation 0.273608
* \4 u3 h* W; K+ g! i6 @' z" H- \GDP 3.761428 c7 e3 v4 w6 z6 Q Y; n
Temperature -0.597343. K$ r4 O& w& S! L( L1 Y" i$ y
Longitude -1.407505. D0 E* K/ d Z& o9 ^
Latitude 0.253563
, z. T/ j( U# cAltitude 3.067242' j8 D6 ]3 D! q& ?; r
PopulationDensity 3.125853
, T: ] D) J0 @6 j; dGreenCoverageRate -0.381786) z' x' \3 L5 }" ?4 a2 ~4 M# R
Incineration(10,000ton) 4.342614$ e, {8 k1 E% {% Z& ~3 J6 ]+ _. Q
dtype: float645 t! L& R- D( M% H; s4 X
6 w9 \6 Y( t* S7 y V/ m$ a# f
可以看到GDP和人口密度等都出现了严重的右偏分布,意味着存在很多极大的异常值。 下面我们查看以下GDP的异常值:
; O+ a5 E+ j C+ |. n' z. ^* @; m5 _mean, std = data.GDP.mean(), data.GDP.std()& |+ A+ O g( \% P/ s; s: L
lower, upper = mean - 3 * std, mean + 3 * std
, C, G, T+ }, h& }+ D& G+ }
' X; e& P, i2 T+ m, Cprint("均值:", mean)% H6 m; X: x$ S
print("标准差:", std)
8 ]9 m0 H& z5 Lprint("下限:", lower) S" I. _* H8 S ^
print("上限:", upper)' B( a3 @6 S7 j/ g6 @
data.loc[(data.GDP < lower) | (data.GDP > upper), "GDP"]' Q% `1 R- _9 p
9 D' h, q2 X/ w1 r5 `3 b
均值: 2390.901815384616
3 a$ u$ b; A" w0 \) o( }标准差: 3254.876921271434
( _! u/ {; T* A" K9 v4 C下限: -7373.728948429687
% v* H6 i( j' R+ ~上限: 12155.532579198918
; e+ e8 }/ J0 Y7 [! q16 22968.60* t5 [8 L E( Z# D5 h, @
63 18100.411 F2 [' m2 w4 q& @
202 24964.99! H3 V$ x+ C/ y
207 17502.99
3 {9 q7 B2 k' l) b+ [/ i215 14504.07& C- S0 t/ E# n& f5 u
230 16538.19
7 W+ K* h! s+ g# L; _: l# a+ q- w256 17900.00+ s7 L7 Y) x: a7 d6 ^9 _
314 15719.72
3 I8 R" e5 d# I3 ?* ^$ jName: GDP, dtype: float64
. }1 w1 u, S7 ]6 C4 w( `. d( b
* L' a. A+ u' R9 C l% C
) Y! L% F& n2 y4 q# r
. S& I" v, N9 b7 L4 m9 ?* k+ Y4 z, U
1 L6 P' d0 ]: {, o
|
zan
|