- 在线时间
- 514 小时
- 最后登录
- 2023-12-1
- 注册时间
- 2018-7-17
- 听众数
- 15
- 收听数
- 0
- 能力
- 0 分
- 体力
- 40255 点
- 威望
- 0 点
- 阅读权限
- 255
- 积分
- 12788
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 1419
- 主题
- 1178
- 精华
- 0
- 分享
- 0
- 好友
- 15
TA的每日心情 | 开心 2023-7-31 10:17 |
|---|
签到天数: 198 天 [LV.7]常住居民III
- 自我介绍
- 数学中国浅夏
 |
AQI分析与预测AQI全称是Air Quality Index,指空气质量指数,用来衡量空气清洁或者污染的程度,值越小,表示空气质量越好。
5 O' F/ E; Q, b) v( h5 n2 L$ ^4 l4 u! O本文的分析目标是:/ F( C9 g$ F; Q" N) n
一、描述性统计
1 ~$ F6 Z5 r7 f% B i5 T* L C/ T那些城市的空气质量较好/较差?空气质量在地理位置分布上,是否具有一定的规律?二、推断统计! u1 _1 ] v9 N9 H0 Q- L
临海城市的空气质量是否优于内陆城市?三、相关系数分析
1 w: k u; A8 o7 t空气质量主要受哪些因素的影响?四、区间估计) e6 m* G6 b# [( z9 p. {3 ]
全国城市空气质量普遍处于哪种水平?五、统计建模
5 R4 C8 R6 n N& f+ }* I# L" J怎样预测一个城市的空气质量?导包并读取数据:import numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport seaborn as sns! x1 w9 j2 u/ q& Q. E1 S
sns.set(style="darkgrid")plt.rcParams["font.family"] = "SimHei"plt.rcParams["axes.unicode_minus"] = False
' q! x: [+ W% X8 ^) Sdata = pd.read_csv("data/data.csv")print(data.shape)data.head() # a P$ i% t: W- `7 j- M& C1 n
! b6 p) ^5 ~3 j3 t: b- j; U数据集描述:
% c) {; q' t6 h3 d' E# s I) W U& q$ Z) i# G- n# A" l- b
City:城市名
' c) u! n) A9 K, S
8 P+ S6 I' X4 K9 OAQI:空气质量指数
2 S! @" t$ W! R- d6 o( Y$ j% ~, f. U
Precipitation:降雨量
/ d4 g- [3 ^, f6 ^6 f. `7 t; ~2 r8 e
GDP:人均生产总值
- P6 ~# U: S; \
# _+ K) Z/ F4 I$ @; @! N* STempearture:温度 }3 u3 r. T. E
$ T% u, X. A6 ?5 u4 x9 P! Y- n: L
Longitude/Latitude:经/纬度
( ^% ]( M+ w& O' t* z* q/ J; p p/ T8 P2 G
Altitude:海拔高度4 L9 e. g0 E/ A, ^+ X
5 T' R3 @# ?* Z( q; c0 lPopulationDensity:人口密度3 h9 x4 V) y, h3 ~* ]0 {% Q
~ N" X+ o8 v, I7 o
Coastal:是否沿海
8 L6 Q& U$ Q0 @( l$ z4 J9 i9 G1 V
3 W8 Q0 p7 q2 w% X6 BGreenCoverageRate:绿化覆盖率
; ^% a* z9 `, A8 j1 Y8 [: F- N, B
7 C+ s6 Y* B) ?2 E1 VIncineration(10,000ton):焚烧量(w吨)8 x& N' ]1 m8 I9 A# J6 K! d5 t
. i [" u0 F i* H* ~" ~/ t
数据清洗
2 M$ |: |: q4 F% _# B2 X2 d检查缺失值:' x9 s" ]1 t W9 V
数据集描述:
. i. ]0 _5 D5 \( R
/ e9 ~0 ~6 q. _1 KCity:城市名0 m8 W- @ l- i% j
! S# D+ a8 M% I$ b
AQI:空气质量指数/ T! ~" K3 Y& L8 m6 z+ l( v0 p6 D
, v0 ?- Q7 Z- t/ t* VPrecipitation:降雨量
3 y% x A r4 d
9 e. _0 R- g8 W3 s9 gGDP:人均生产总值6 H x$ Y- U0 `/ P4 S
: W" g+ @( c7 A: B8 G h
Tempearture:温度
& T- I+ `0 [$ B; L) L8 g7 D3 t* z3 K$ T* w( z1 ]
Longitude/Latitude:经/纬度6 P" y# Y& b0 U9 b) H
# U8 A& _1 F& G% s) t- R) k/ M
Altitude:海拔高度+ R6 M; Q7 @; F8 P) u
5 y5 r; {' c8 A1 a: x, bPopulationDensity:人口密度
) l- X% x* o" Y6 n3 x- U
2 g, l5 x& Q. [0 J. z% ]- fCoastal:是否沿海, s# H6 L: M+ U- t. y
" \8 \( I0 `9 ]+ ], ~, N% Z( u6 x8 P
GreenCoverageRate:绿化覆盖率
" I/ {, n$ f3 J7 T
5 L5 n* r2 R0 _1 E6 q- g4 P4 O# @Incineration(10,000ton):焚烧量(w吨)9 w$ B/ ~* Z: [) }
4 Y* K' n6 D% O& ]9 h9 C! G4 C
数据清洗
* \0 b2 P2 i U1 b4 Y检查缺失值:
" G! v, P! e. j0 ldata.isnull().sum(axis=0). M$ a1 B# ? B7 e4 h. p1 Z1 k
) g) I$ y, z# v- f" Y6 K
" Q2 T4 p: v6 }! ]/ y6 m4 E# B% |0 L
![]()
# r1 s* X) `. O! `' V- ^
U( J, H1 e6 b+ ^% l s7 m8 k查看含缺失值列数据的分布:; }: s; b/ J# R( i, w4 Y# ?8 d
#print(data["Precipitation"].skew())#偏度 2 I0 Y2 Y* y+ a) K, X
sns.distplot(data["Precipitation"].dropna())#要删除NA值才能做分布密度图0 ^8 }8 T' d. R' C {
plt.title("分布密度图")
+ ~% ]9 i9 j5 G; `! n6 t( G( Q0.27360760671177387% G: O) o2 j5 y8 E
: ^$ s$ t2 @' b5 F1 G. B5 y& X+ p( B
! C) P9 ^/ N, Z6 \1 e
4 n o; I8 h1 G! s7 t
数值型变量,数据呈现右偏分布,所以使用中位数填充。 对缺失值进行中位数填充 data.fillna({"Precipitation":data["Precipitation"].median()},inplace=True)
) ]5 ?6 H. [" i G# w% H) D+ v检查异常值的三种方法- data.describe() 查看数据的描述:分位数、均值与标准差
- 基于正太分布 ±三个标准差涵盖99.7%的数据
- 箱线图(四分位距IQR=Q3-Q1,上下边界:Q3/Q1 ±1.5IQR)
# M" F( Q4 c( ]! n
查看数据集的偏度:
" W3 c( g/ T, f0 d ^8 B7 H: _data.skew()
9 W- `" T g7 v2 f1 q
" L) H' }3 T* Z- C6 K! GAQI 1.198754
" v, Q1 y! z2 l" `- F3 B6 WPrecipitation 0.273608- M! B( i' v" g5 A2 u" m- p
GDP 3.761428
2 w k! m/ j% L1 y' @1 \ CTemperature -0.5973435 l. e& N7 [: c) g
Longitude -1.407505
% d- g h: a/ W0 Y! WLatitude 0.253563! s! P# e8 y" P5 L) Q7 f' B
Altitude 3.067242" v* U0 x! @* J% L' n) w
PopulationDensity 3.125853$ @% T$ B9 D5 x; g0 n
GreenCoverageRate -0.381786
- e" t( x& z; h3 F7 u% zIncineration(10,000ton) 4.342614
' E* j, w' T2 Fdtype: float64
# ]) V3 `3 |$ c) k1 p+ {- y% Z( q9 o5 p- [
可以看到GDP和人口密度等都出现了严重的右偏分布,意味着存在很多极大的异常值。 下面我们查看以下GDP的异常值: / j1 r( P8 R8 j" ?9 I
mean, std = data.GDP.mean(), data.GDP.std()0 [0 g6 J- d$ D) l7 H4 t
lower, upper = mean - 3 * std, mean + 3 * std
6 [) T t8 ]7 a# r9 A/ @ |* z3 t' X" K9 d/ t
print("均值:", mean)
$ S+ y# @1 U/ t0 N; |. U& _9 S" _print("标准差:", std)9 b; `2 x# X1 ]% ?% h
print("下限:", lower)
& ?( s2 c- L3 _ A) t0 Iprint("上限:", upper)
( ^) ~$ W" O# k3 M$ P! w4 qdata.loc[(data.GDP < lower) | (data.GDP > upper), "GDP"]! N$ j0 \& k# R1 D6 u+ i) Z
0 w, {2 ~! `2 p G8 q9 K, U均值: 2390.901815384616' ]) ?% ]9 W, ~- x/ U* D: [( p0 F) P
标准差: 3254.876921271434
; r8 n5 F4 b2 t j! b7 ]. A下限: -7373.7289484296879 d# g- V: r7 ^$ z1 D e5 M
上限: 12155.532579198918
$ {% i. J3 M/ J' n" d16 22968.601 i+ H, B7 r8 M
63 18100.41
7 @: o4 @# G3 R9 K8 P" [* k7 l202 24964.99
w' B. J/ k X1 z& K207 17502.99
& z' Y) |8 ~9 `2 L f) p) b. t( l215 14504.07
) u% Y; Z* d3 z, F# `, I5 T230 16538.19
8 `0 u+ _* z3 O- w( d3 y256 17900.00
1 F. ?! w+ ~* x& k) g* f" w314 15719.72
% Y0 X, {3 k2 z5 N% a) N3 ?Name: GDP, dtype: float64
( y4 `: S" Q0 L! h( n" D1 S' D B& m8 |7 U. y h7 i
9 u4 U( n5 e- c/ V/ N, O- |8 m5 B) q
- D' p) C/ q$ O6 d# L ?4 ]5 ?+ V1 A
" g" y/ T/ l5 V( V1 C
, f: y+ R! n6 D' H/ P! s$ x) W# b
|
zan
|