- 在线时间
- 514 小时
- 最后登录
- 2023-12-1
- 注册时间
- 2018-7-17
- 听众数
- 15
- 收听数
- 0
- 能力
- 0 分
- 体力
- 40222 点
- 威望
- 0 点
- 阅读权限
- 255
- 积分
- 12778
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 1419
- 主题
- 1178
- 精华
- 0
- 分享
- 0
- 好友
- 15
TA的每日心情 | 开心 2023-7-31 10:17 |
|---|
签到天数: 198 天 [LV.7]常住居民III
- 自我介绍
- 数学中国浅夏
 |
AQI分析与预测AQI全称是Air Quality Index,指空气质量指数,用来衡量空气清洁或者污染的程度,值越小,表示空气质量越好。
8 ^8 M2 E S: J) _本文的分析目标是:
9 H0 D7 }: s2 w I一、描述性统计( T: i, a1 R/ G* J! M
那些城市的空气质量较好/较差?空气质量在地理位置分布上,是否具有一定的规律?二、推断统计' {$ {! k7 }5 V9 Z6 W
临海城市的空气质量是否优于内陆城市?三、相关系数分析; l# s; g- e, u7 k; {0 L# W) H
空气质量主要受哪些因素的影响?四、区间估计6 ]/ Q$ ?$ S; f# i9 N
全国城市空气质量普遍处于哪种水平?五、统计建模5 I. j2 N+ T7 O" o( K5 ^" B
怎样预测一个城市的空气质量?导包并读取数据:import numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport seaborn as sns
" X& w! S( m [, @. fsns.set(style="darkgrid")plt.rcParams["font.family"] = "SimHei"plt.rcParams["axes.unicode_minus"] = False5 N2 ~! J( w" j! b0 y3 o, Q# T
data = pd.read_csv("data/data.csv")print(data.shape)data.head() % W7 u: m2 _7 F c
# l* o1 K% M0 d0 m; x/ {+ O数据集描述:6 s$ m1 Y3 I; @% d
1 v4 ~6 u: G8 R6 C% C. x3 q$ JCity:城市名
1 _8 _; k# d3 g& R! V6 a, S1 [
6 @- U; b$ C9 p0 Q0 GAQI:空气质量指数
8 ]! x2 ~* I, L! C9 k, ]- C+ D8 x$ `! ]! Z' Z6 Q" i
Precipitation:降雨量
. r! o: I! a9 b
6 ]! \ ?# k8 Y& J8 aGDP:人均生产总值! P! @, u! L: b- K; C; L
- Y. Q2 B' \/ K' |4 B+ ^% U! |5 CTempearture:温度/ p. a9 B; u* N+ D$ W% T
* u4 h/ l' b: X0 {! CLongitude/Latitude:经/纬度; \3 l1 ~5 c' ], c# K r" M
( c' o, s8 i1 V& Y8 J* x
Altitude:海拔高度
$ {* s: ~" b9 T* P& ^; F' n- |! `. |
PopulationDensity:人口密度5 c4 r6 d4 F7 L
$ F$ T6 F8 i6 _- sCoastal:是否沿海
+ M+ L. \0 `% Z6 H7 v6 d0 l) W) U# W' w1 g
GreenCoverageRate:绿化覆盖率
/ w5 i. j4 [7 e- |
# F. u0 h7 H( J" MIncineration(10,000ton):焚烧量(w吨)" w# C {) s6 Q& O( N8 ^
& E8 f0 A: q R8 {2 \0 N0 R; h
数据清洗
- a) S$ Z( Z0 h' f检查缺失值:
7 ~7 D+ a6 D* `- D- j: e1 [1 t数据集描述:4 N8 r R) E- I# g8 Z
& w0 g' j; [7 L3 y8 `! I H
City:城市名
8 h) {$ I5 ~* L' O" u6 Y( r6 r2 u1 V& d
AQI:空气质量指数# n% H; C; d' m1 ~
; a0 v7 v. @; G* ~$ w6 uPrecipitation:降雨量
% i2 ?# l8 B8 d! |' j
( W% x& o- K2 K5 v6 i. HGDP:人均生产总值
! G4 ]& d* [& D0 B" e3 r. r [7 ?5 [0 ^* ?6 \
Tempearture:温度1 K& t7 Y9 v; ^2 R+ A8 Z$ w5 B
& Z; U2 ?' s, ILongitude/Latitude:经/纬度9 Y5 d1 V& b9 L( y& r0 h
* ~' F" G5 h# U$ ], lAltitude:海拔高度. ?* M+ Z6 q7 y) @6 z
# Y- @8 }& W* c- y8 i% f3 ZPopulationDensity:人口密度
6 `) P$ W4 U, L% }
- X! a3 [* [3 tCoastal:是否沿海
1 K4 O I- b" S8 Q1 h; J1 G0 u+ h- @
GreenCoverageRate:绿化覆盖率5 K8 H7 P; s0 T2 O! T
) o. w4 V9 ~& g& qIncineration(10,000ton):焚烧量(w吨)) e2 H8 r7 W* w6 N5 h
% x9 f x, Y- D数据清洗$ `4 ~' o. A6 c( b& s) I4 C# `, H
检查缺失值:: U! d) v1 \6 W
data.isnull().sum(axis=0)
# W) [5 B; X5 C- e7 H3 A
, W* r1 k3 W6 L6 ?( a% \
+ ]9 o4 j" K# u8 Y![]()
. N& }2 w3 d6 Z5 g* k: f4 X5 F# j
( s+ y: `2 S4 N* S查看含缺失值列数据的分布:& a* b( K' `" U
#print(data["Precipitation"].skew())#偏度
. M% e X! I1 m! M3 T* vsns.distplot(data["Precipitation"].dropna())#要删除NA值才能做分布密度图
8 c I- A* _9 T/ i# @: ]9 Jplt.title("分布密度图")3 z: Z3 d) W1 w
0.27360760671177387) o8 j* c3 S# I4 V
/ Z- J/ d' \% K' R
![]()
' c7 X, K9 t, R
/ A6 Q* L7 Z$ a$ x数值型变量,数据呈现右偏分布,所以使用中位数填充。 对缺失值进行中位数填充 data.fillna({"Precipitation":data["Precipitation"].median()},inplace=True)
; Z" b- _8 w6 U检查异常值的三种方法- data.describe() 查看数据的描述:分位数、均值与标准差
- 基于正太分布 ±三个标准差涵盖99.7%的数据
- 箱线图(四分位距IQR=Q3-Q1,上下边界:Q3/Q1 ±1.5IQR)
% C% U$ u! d' c3 z8 g
查看数据集的偏度:
6 j; K8 P( R' w1 U1 [data.skew()$ I" t0 m, R; l
# O5 d* v8 P2 z4 L% _" RAQI 1.198754
d7 f* V& n# d; xPrecipitation 0.273608
, W/ v" u g1 y: r2 ~; UGDP 3.761428
! I, C% h+ m4 Q% b! t9 iTemperature -0.597343( N: g- w7 z+ W; o: z+ t
Longitude -1.407505( }! Q; j. m+ C
Latitude 0.253563& J) P/ a+ Q B$ f
Altitude 3.067242/ w# g# s6 B2 _- f# P' V
PopulationDensity 3.125853# A) q! a/ E7 x/ `. }
GreenCoverageRate -0.381786! R! r/ f' Z. D$ m
Incineration(10,000ton) 4.342614- _- A" `* y$ W6 V$ w6 j. o; y9 t
dtype: float64
4 z0 Y. m. V! k0 r2 ~0 c; Z+ V
0 s& f/ T7 T2 i, X. ^, e可以看到GDP和人口密度等都出现了严重的右偏分布,意味着存在很多极大的异常值。 下面我们查看以下GDP的异常值: . V, a+ ]- D3 Z) [7 p4 v
mean, std = data.GDP.mean(), data.GDP.std()
+ [3 ]- [( a+ zlower, upper = mean - 3 * std, mean + 3 * std0 B& e+ g3 k f1 N* L* O
: X7 k0 A" k8 W! F( L
print("均值:", mean)3 J$ R7 O; k2 |
print("标准差:", std)
4 g( X7 m: N( f, @6 p: |print("下限:", lower)" |" `) j+ f; z( z
print("上限:", upper)
& C" d3 Q7 P. T$ `" {4 ddata.loc[(data.GDP < lower) | (data.GDP > upper), "GDP"]7 u! I; m7 _- F+ L
. I6 M6 K0 g; R2 D2 g6 W
均值: 2390.901815384616
# i6 S1 Q- L7 \% y3 J4 H标准差: 3254.876921271434
) E. K7 O9 p: {/ K' }9 k下限: -7373.728948429687; ]9 v8 B& G L8 H+ R$ h
上限: 12155.532579198918$ ^# `/ O* l6 M
16 22968.60
* w6 H$ G: p' e4 s" a( b4 I6 t63 18100.41' r2 O; r. ~" c$ ?& { H M
202 24964.99( V! \, P) L e# ?& C; ~( L
207 17502.99
$ Y: j$ @* l5 o' Z+ L' O' p215 14504.07* V0 d7 N' V6 o' R* P+ N0 @
230 16538.197 ~- x* x% }2 b$ b2 V; p1 {$ `
256 17900.006 L& w: F; n! M6 U. C$ |- l
314 15719.72
! L) m& b, q. }2 P5 XName: GDP, dtype: float64
' \6 F, Z4 f+ D% Q% W# H4 L3 G
1 p$ p7 s1 A9 J1 |$ w2 o3 b( i5 ~4 x3 K2 Z! P& R
# M( C" f7 D- y6 R+ A' {4 e
1 f: }- S+ a7 l! g& b1 b# x
, N7 l/ B, z J! b5 E0 r
|
zan
|