- 在线时间
- 514 小时
- 最后登录
- 2023-12-1
- 注册时间
- 2018-7-17
- 听众数
- 15
- 收听数
- 0
- 能力
- 0 分
- 体力
- 40344 点
- 威望
- 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,指空气质量指数,用来衡量空气清洁或者污染的程度,值越小,表示空气质量越好。
& @. ~ [! M# S0 s* u0 v! J本文的分析目标是:# u: Y5 s/ O7 n# d, f- R$ U
一、描述性统计( H' G0 N' h/ T; s0 }
那些城市的空气质量较好/较差?空气质量在地理位置分布上,是否具有一定的规律?二、推断统计& I+ ?+ X- L6 j9 [' K/ T/ F
临海城市的空气质量是否优于内陆城市?三、相关系数分析
, k1 X* z h% B& R* \空气质量主要受哪些因素的影响?四、区间估计
* z9 S. U" ~' L& y全国城市空气质量普遍处于哪种水平?五、统计建模
* p z' x7 t' V# h& y7 S怎样预测一个城市的空气质量?导包并读取数据:import numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport seaborn as sns
# ^- ^; V* W' g2 \9 g- Isns.set(style="darkgrid")plt.rcParams["font.family"] = "SimHei"plt.rcParams["axes.unicode_minus"] = False
) G8 l9 R, e! n [. v' vdata = pd.read_csv("data/data.csv")print(data.shape)data.head() ( r. Y0 B# v5 k" t7 j( H# y
' [0 z$ d! t6 f) p3 v1 h
数据集描述:' @8 ^; k5 B( x+ A) i2 b+ J$ F+ k: j
; S6 ~8 w, S+ D1 N S! J. b& I2 x1 YCity:城市名
4 b( P/ {* C) Z W9 W5 x0 X9 I# e0 V# O
AQI:空气质量指数
. g2 k& A8 t$ F1 u( P
6 l. ?& K9 R) E' t/ k& FPrecipitation:降雨量4 y) U1 l6 e' \$ X0 ?
; a* R1 t% U% ?$ g$ z" @
GDP:人均生产总值9 r. [: g5 y8 D& D
) t! }; m$ y4 k4 V6 |& j" ^4 `& z
Tempearture:温度" T$ B3 b& m9 g) V# S7 {4 u
1 f8 `% s2 R- q$ r k5 \6 K
Longitude/Latitude:经/纬度
1 m$ s s! t; }4 J. Z. U
/ f4 u/ B3 g; G- y$ ~& W3 sAltitude:海拔高度" ^# m% l8 V# u( w# m
9 y" O, M. \4 N' n1 |PopulationDensity:人口密度
- F# H j% T7 M; V
) J" |6 x; C/ e) J4 V" lCoastal:是否沿海0 X. m4 K3 x. F- {- d5 N
, n$ ^8 b5 }' I) ]: _" ~GreenCoverageRate:绿化覆盖率
& ~4 a1 g6 r5 {8 r8 e# h5 }9 V$ ~7 L) P* `' v. g& e
Incineration(10,000ton):焚烧量(w吨)3 C' F9 W2 N7 s1 { b" K# S
- U! M" s8 a) m1 B" m0 L3 c, J4 t: B数据清洗/ o- X0 J: e9 L( @
检查缺失值:2 T; U6 u* o" j, L" x
数据集描述:
6 D, o. V/ H! U. u' ]% |0 D+ E; B7 S) H. a& y5 t; t+ h6 o
City:城市名2 h" P& P: m _7 r
0 M, @% q5 Q* k4 R9 c7 v0 K$ OAQI:空气质量指数0 U, D+ J4 O% Y
6 V0 G# j4 [( a6 A0 L% L
Precipitation:降雨量
. z8 {( e$ s5 `8 N# J( X- Z- h4 r$ v4 g% a! ^. I. E) q) m
GDP:人均生产总值8 k& k0 O0 X( F& S! y' N4 `% c; F1 l
% p1 l/ m9 F8 P! ~
Tempearture:温度1 z) u0 `- c8 \ l( p
2 l8 [, i" ~$ k; t5 \
Longitude/Latitude:经/纬度# A, D+ I+ }# \8 u+ |8 ]# p
- ^; O4 X. `4 d3 N: t: L
Altitude:海拔高度- ]. B5 ]# I' @. C8 A* q
# J4 ~; H$ ?! K1 m5 J+ A) P' EPopulationDensity:人口密度
$ P% [& P. n0 N( G, W" B
& |. K" d8 o: mCoastal:是否沿海' o U0 I6 f2 F8 F& Z/ T8 c& S
' _0 \/ v( C! g; G$ z d- @% c
GreenCoverageRate:绿化覆盖率
' d$ V1 l3 v0 W4 k3 x
' D/ k: a! t3 K. ^/ _) {: Y' _0 lIncineration(10,000ton):焚烧量(w吨)
/ X0 _3 N* H; Y6 W1 i; r7 A9 E9 e
数据清洗+ o6 t" l/ S2 C& |- ]% b6 M
检查缺失值:
+ w9 e& Z a$ X3 v$ adata.isnull().sum(axis=0)3 v, h' u3 ]* q( c- E ^2 S2 m
- U4 P; ?. J8 A9 e. P) m* L" J
7 |8 s6 B% O% V6 ?: ^9 j 4 u9 L: p: J6 I4 O' S( ?* a
; N2 b+ P/ L6 ]3 `3 ?1 [
查看含缺失值列数据的分布: w0 _. t2 G( t. S
#print(data["Precipitation"].skew())#偏度 2 |- {! K4 R# s' P+ y
sns.distplot(data["Precipitation"].dropna())#要删除NA值才能做分布密度图
+ C- }6 j% b! Q- F9 Bplt.title("分布密度图")
8 b' A0 e" ~8 m/ x$ T0.27360760671177387
6 ~8 X) Y( i- R7 j) l8 H" _) `( y$ Y8 t( p
![]()
9 _6 o7 z0 a% ?5 c' V) D5 P0 w3 i
) J& k5 E% E6 I3 v数值型变量,数据呈现右偏分布,所以使用中位数填充。 对缺失值进行中位数填充 data.fillna({"Precipitation":data["Precipitation"].median()},inplace=True)
R8 x/ a/ }- S$ K检查异常值的三种方法- data.describe() 查看数据的描述:分位数、均值与标准差
- 基于正太分布 ±三个标准差涵盖99.7%的数据
- 箱线图(四分位距IQR=Q3-Q1,上下边界:Q3/Q1 ±1.5IQR)/ m; {1 F6 z# m/ Q* f" ?( T; r
查看数据集的偏度: ! X0 r: T- \) |
data.skew()
1 a4 N8 U/ E8 ?, f5 G% x! x1 v' e" I0 m: K8 B1 B q8 h$ y
AQI 1.198754
8 k; p; s0 v& ^0 U: l3 KPrecipitation 0.273608
7 P; Q# L1 L8 z2 \& j/ }5 @' eGDP 3.761428# N+ p& w8 S% l/ Z4 D: C
Temperature -0.597343# n" ]7 a" n1 M8 O, P
Longitude -1.407505
4 G9 B: Z9 q9 Q7 _. T6 u6 I" v# mLatitude 0.253563
( R- `9 {* M+ r/ q' E, t HAltitude 3.067242
% `) _0 O/ L3 W$ h2 vPopulationDensity 3.125853
# j+ K) Y) _. FGreenCoverageRate -0.381786" c' _& F8 l. T( `: {1 X
Incineration(10,000ton) 4.342614
: U3 L, n# Q3 |! Xdtype: float646 G$ `5 B( ^' W" O* Q5 j
n5 O- S2 w% x6 M
可以看到GDP和人口密度等都出现了严重的右偏分布,意味着存在很多极大的异常值。 下面我们查看以下GDP的异常值:
( m0 ^$ e" U, F, ?3 k/ E: Pmean, std = data.GDP.mean(), data.GDP.std()' e* O' S1 d# K5 B4 H2 _$ v+ H
lower, upper = mean - 3 * std, mean + 3 * std
0 e1 I3 {1 l7 A4 r9 w: D! c y6 u$ r7 |/ i/ H8 o M
print("均值:", mean)
! p5 b. N c6 Y) n- }0 @& [# tprint("标准差:", std)
8 D. B4 _/ q& a5 w0 [/ q( [7 Pprint("下限:", lower)
9 P$ N; E7 Q7 X- u. Aprint("上限:", upper)
~& G4 ~8 I, V* K) Cdata.loc[(data.GDP < lower) | (data.GDP > upper), "GDP"]
* ?4 ~, |& d% ^3 K `9 o9 _' I6 T7 Z4 ]& n' f# L, z& i- v$ j
均值: 2390.901815384616
@# Y6 f9 n" o! a3 {" U标准差: 3254.876921271434* E5 t* _+ m7 A7 o
下限: -7373.728948429687
& t, P6 C+ P# Q- e上限: 12155.532579198918" |: U$ q3 q) t# @
16 22968.60
1 p9 T5 K% d6 A- J) x6 i& x8 `63 18100.41) y% h) X0 `/ A+ J4 h# ?
202 24964.99
; C+ B5 m$ m/ X3 w+ ]7 [* T" I, A207 17502.993 p& w* w. v$ Y+ Q
215 14504.07/ w! C4 q+ I2 E0 o" [
230 16538.19
: `0 W7 n9 p" y0 I/ z- B' L256 17900.00
$ ^0 J2 o/ j- T3 i314 15719.720 A: ^- g8 C) O0 @( V
Name: GDP, dtype: float64; _3 N9 G% d# F
7 K0 _/ ]+ _, W7 C
- i$ q3 o0 Y- {
9 i! v/ M+ _% z3 E! v, V+ K6 ]- }3 M# c$ k
" T5 F; L' T: p# M |
zan
|