- 在线时间
- 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,指空气质量指数,用来衡量空气清洁或者污染的程度,值越小,表示空气质量越好。9 S+ j/ f5 f& {/ Z0 @: o9 N
本文的分析目标是:, x- l4 D2 r! Y( g( U; T. ^! C
一、描述性统计/ A5 \% ~4 x* M; d8 k; p: O
那些城市的空气质量较好/较差?空气质量在地理位置分布上,是否具有一定的规律?二、推断统计8 x& r' f% y5 I3 I8 |$ k
临海城市的空气质量是否优于内陆城市?三、相关系数分析 S$ b/ ]% `5 f* ]- C' d. ]7 o$ u; U
空气质量主要受哪些因素的影响?四、区间估计
' T" S2 j4 E2 x& ~, j0 g, i; [全国城市空气质量普遍处于哪种水平?五、统计建模
+ ]% |8 m' D u- F怎样预测一个城市的空气质量?导包并读取数据:import numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport seaborn as sns O3 |1 Y0 a1 K
sns.set(style="darkgrid")plt.rcParams["font.family"] = "SimHei"plt.rcParams["axes.unicode_minus"] = False# ^6 L& t1 B4 b9 G( l: X
data = pd.read_csv("data/data.csv")print(data.shape)data.head()![]()
{- l2 Y+ m' p8 p# k2 O5 |
9 ~3 U4 X8 [/ l+ }6 x数据集描述:
3 k' s9 e8 o* q, V
. l6 e$ g" [& B3 CCity:城市名
0 ]$ y+ O$ @. q* F/ l
5 U* i# N& N, O: H! W7 G( \. yAQI:空气质量指数2 |- k8 z3 E8 r3 a1 ]6 ? A8 p
5 [) @$ w1 g/ @8 c+ N3 W6 p/ LPrecipitation:降雨量1 d4 W, Y, G4 S# r
+ a0 \8 L4 N! d7 x4 u
GDP:人均生产总值3 e" E! o& s* V) ]
7 t- f! Y5 ^4 K7 g9 O; ETempearture:温度
' ]. n8 ^$ o/ i0 m: _8 q y) \# i- {$ o- M$ }7 s$ f7 B
Longitude/Latitude:经/纬度1 I* ?% S4 n0 b
6 e7 c# Z* W; r6 t% ?Altitude:海拔高度
" V( |! o3 `2 f7 w) Y) ^2 M8 k: l+ k8 j
PopulationDensity:人口密度
( y0 v+ g/ r/ ~6 Y e( ]! F% V! j2 x1 H2 u% ?. A" R
Coastal:是否沿海7 Q) Q$ Q3 [5 I' l0 Q' w; X
+ b; Y! Q) L% d; vGreenCoverageRate:绿化覆盖率$ u1 q6 K/ S; M$ m7 O8 S
4 f% L! k7 J/ e, |Incineration(10,000ton):焚烧量(w吨)% x; z; a0 j- w* o( r
) X' o; I" E& E. t! X
数据清洗
+ e+ p: `4 x7 v: Z/ e检查缺失值:
) [6 Z2 i7 a' q6 w数据集描述:$ e; I$ A+ W8 J6 C( @# I; Z/ j7 \
" w2 U2 ?8 X* W7 V. b1 U
City:城市名- b& K& S* `& N5 v3 y: l; v
7 G0 J7 t- t4 o! U, M4 _# N. R6 B" q
AQI:空气质量指数 ]) S3 x( e% }7 E$ j5 e
3 ?. h' I$ X6 J U1 b$ u
Precipitation:降雨量
: G. K6 G% O7 u- C+ p1 T( z) n1 U
9 m2 F6 v2 u7 ~. w3 B1 BGDP:人均生产总值; M, J& d3 G9 H9 P4 J+ D
. N' z8 ^. t& v; [2 t9 Q
Tempearture:温度" k& {. V2 D7 M
1 _# i; i' Q1 {. M8 O9 h
Longitude/Latitude:经/纬度
X' {9 P2 f; O% D* J# v
# ^' a# _, U% [" J Z- u0 ~( c! b* `Altitude:海拔高度
, T- H9 f. m [2 T: Y% M
8 ~1 D' d2 w. Q; y% G/ MPopulationDensity:人口密度6 k1 V4 u: h0 v) Z
7 e; p3 u; C- U) FCoastal:是否沿海
; n4 j4 i. m: ]4 Q( K
3 j( |- P' i1 c3 a+ F \/ h$ \: Y4 g; }$ uGreenCoverageRate:绿化覆盖率
% u$ i2 G9 v6 _( \5 O* b$ y. N* L0 I% d1 n* ^+ `% B8 G
Incineration(10,000ton):焚烧量(w吨)# H k1 A) ?! m* E& W
" k! l! w0 b' B; h数据清洗
5 H. u5 p7 i! c检查缺失值:
+ O) h2 l3 v& P$ ], L% idata.isnull().sum(axis=0)
, i. V4 Y6 k& n: d/ g
. J7 O+ Z# `* a. G" R" m: o, u6 {4 g0 Z8 y" U/ C, u) N
0 x( [( F: B! U$ }# B
: W2 x! K4 r/ a* ^7 c8 t" b0 d% H5 j查看含缺失值列数据的分布: ?# a X8 [" V" Z
#print(data["Precipitation"].skew())#偏度
+ |7 o4 P/ s( l$ a- F! R# J0 Vsns.distplot(data["Precipitation"].dropna())#要删除NA值才能做分布密度图
$ K/ `& s, p/ \6 E' o3 X! {plt.title("分布密度图")
( ?' O! z* p3 U2 j& _0.27360760671177387
; y1 ~5 E7 ~4 j. U3 h+ _# S; B
+ C u0 P: u# p% N: h![]()
4 v1 h1 ~8 D N L0 `1 r9 o3 N/ G- V% \
5 H! O5 Z9 f h+ K3 Y1 t数值型变量,数据呈现右偏分布,所以使用中位数填充。 对缺失值进行中位数填充 data.fillna({"Precipitation":data["Precipitation"].median()},inplace=True)
! v: Y) t2 M+ b- D/ G u5 b检查异常值的三种方法- data.describe() 查看数据的描述:分位数、均值与标准差
- 基于正太分布 ±三个标准差涵盖99.7%的数据
- 箱线图(四分位距IQR=Q3-Q1,上下边界:Q3/Q1 ±1.5IQR)
% v: }3 d, J$ T0 z) D4 V# ]0 j
查看数据集的偏度: + s) n4 J: i' {. ]
data.skew() S+ z1 f N) _
: @8 _# W" R. V* xAQI 1.1987545 ~' {4 U# V+ N
Precipitation 0.2736089 o7 u5 M2 ^: h% O+ Z* t
GDP 3.7614281 M7 M3 ?: W9 c( k
Temperature -0.5973435 K7 Q9 Q3 S$ M, p& J6 G
Longitude -1.407505
2 V+ ` P' v# o7 P, V* G$ uLatitude 0.253563
6 |% e& x1 J6 ~8 ~Altitude 3.067242
$ I& b- n3 M5 wPopulationDensity 3.1258533 a, J& [( `9 }6 u
GreenCoverageRate -0.381786
( o" s4 m' {6 y: e$ r# I2 qIncineration(10,000ton) 4.342614& V* \; n0 Y! {4 A' R
dtype: float64
* O5 `. | C& B, c) m
3 e" M/ O' P4 [% _6 W可以看到GDP和人口密度等都出现了严重的右偏分布,意味着存在很多极大的异常值。 下面我们查看以下GDP的异常值:
' Y3 ^: `9 U# K2 ^mean, std = data.GDP.mean(), data.GDP.std()0 C+ E' ?, _ D# Q! Q3 b
lower, upper = mean - 3 * std, mean + 3 * std
! Q; w) o' x% x. [$ |% I+ T9 q0 l
& {: t* I' }( Z3 jprint("均值:", mean)7 S6 X4 l7 {/ T$ b) ^
print("标准差:", std)
9 ^/ w7 [9 D" _/ D4 Y# X6 v R% Aprint("下限:", lower)& V- |& e$ g: M
print("上限:", upper)8 H, S8 A) `! Y% A; q6 A
data.loc[(data.GDP < lower) | (data.GDP > upper), "GDP"]! g/ D# N5 K! P
^7 R1 Y* E- g; X0 u均值: 2390.901815384616; P! i, v* e- l7 ]
标准差: 3254.876921271434
" o: z: v5 M: m2 d9 F+ k( @8 q8 P下限: -7373.728948429687
7 M' x8 F* ]. L8 J* B- n上限: 12155.532579198918
0 F* w/ k8 N2 s16 22968.60 _# l7 m* v; x: x& c+ B; N) k
63 18100.41! N9 e" g+ ]" G! t5 j
202 24964.99
7 W$ A# W( T& D4 Y! y207 17502.99
& u/ ~9 w4 m2 X8 h O215 14504.07
# Y3 E, g' O9 y4 f230 16538.19) J O$ a: m0 {" H6 z3 z
256 17900.00
& v3 S S( X: W" ?0 k4 \/ D314 15719.72 F8 D% n( m+ @9 `
Name: GDP, dtype: float649 n# ` X: h, e9 H0 s; N4 w# i% i
8 a! q) j0 o7 ^8 j7 B, [2 X, P( r% A+ k3 j7 C c/ \
1 o9 i6 w2 J4 G7 v0 x9 M6 Q
/ y# m, |1 L. g0 g1 |
; D- f5 E$ s2 x" O I; v) V; s |
zan
|