- 在线时间
- 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,指空气质量指数,用来衡量空气清洁或者污染的程度,值越小,表示空气质量越好。
9 W' G3 t/ f( w+ c- A2 \本文的分析目标是:
: y/ q% T' b) h一、描述性统计
6 u4 N) Z+ |6 ^( ?6 m# G2 l- f" w那些城市的空气质量较好/较差?空气质量在地理位置分布上,是否具有一定的规律?二、推断统计) k) ^/ H) g9 C) [. k- N' ^; H, g; @
临海城市的空气质量是否优于内陆城市?三、相关系数分析
/ o- x& |3 W) r: I+ F k空气质量主要受哪些因素的影响?四、区间估计- x4 G. N; C3 x0 P) o7 w. @
全国城市空气质量普遍处于哪种水平?五、统计建模6 a& v9 y7 {% N3 N$ H
怎样预测一个城市的空气质量?导包并读取数据:import numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport seaborn as sns6 y: _+ K( w+ Z! b7 d! D3 Z6 E0 j
sns.set(style="darkgrid")plt.rcParams["font.family"] = "SimHei"plt.rcParams["axes.unicode_minus"] = False1 z: M6 \7 X* r9 X
data = pd.read_csv("data/data.csv")print(data.shape)data.head()![]()
% i+ s! {1 [4 k/ h" ^/ j3 u1 F6 k* o3 o7 S4 _2 J! N* ?- Z
数据集描述:
; i/ a# J5 K) W# c8 d; Q7 _
; s2 P( Q0 b7 J" N7 v: l8 hCity:城市名4 b2 c; L: Z0 Z/ n
2 A; I' i# U2 L: V+ h7 Q5 u1 [
AQI:空气质量指数
a2 }, d' ^" t) V7 w; b# i+ X) N6 P) B" @
Precipitation:降雨量% o+ H( w; Q0 Q
! |) h% e! X4 H$ q3 M/ y( ]
GDP:人均生产总值+ z: t7 C8 v& b- ]
9 z* a3 J" N oTempearture:温度" K2 W7 r2 M4 ]
' i- e i$ ^0 |1 Z2 z- t% i& Q+ S4 h1 mLongitude/Latitude:经/纬度
/ [; b0 j% W: \" x
# j0 ?$ {4 N& r- yAltitude:海拔高度
. l+ |( a. K4 Z+ X' k' D0 H/ s& v6 k( ] m6 G
PopulationDensity:人口密度0 ?2 P3 Q+ p$ X! O) Z5 S
* H' i, b* n# d+ i; N5 d* rCoastal:是否沿海+ F R! c) `- u- F2 G
2 \: P# O: D. @ t; D- o5 S
GreenCoverageRate:绿化覆盖率
0 o% P; X& j! o+ |7 X, a2 f$ h* [7 `, F. ~5 Z3 o
Incineration(10,000ton):焚烧量(w吨)
5 |3 }- k) U0 M( T. z. e6 l
: `$ [8 }" L, s6 Q( m. v4 G5 O数据清洗
8 k' | I$ p* Q. J# j检查缺失值:8 u* p6 w6 x( S2 b4 G- Q
数据集描述:
! k' I, o, k& m, }
8 m7 A* ?: z2 L @& U6 RCity:城市名4 a1 t& h% X$ A0 c$ y; e
) n9 x. q' \0 D) R, p
AQI:空气质量指数0 s. U7 D8 a$ M! }+ ?+ S, i; \
/ p) m0 \) W. B! [1 X0 o' j
Precipitation:降雨量
2 b r2 [4 c# o O4 b) v1 Z* j
1 h! e1 E( I# n: V3 UGDP:人均生产总值
( Y. N+ |4 y) y! _+ \" ?2 e8 z& o1 D% _2 b
Tempearture:温度
5 Y( Q1 o( Q5 i" k6 }; J2 x, L& [/ {
Longitude/Latitude:经/纬度+ ~# S @7 j2 J# q
* \9 ]7 d9 F3 s9 j, G' c
Altitude:海拔高度
7 I7 L: e: X5 l# ~# [+ d& s; o) H9 R
PopulationDensity:人口密度
. ?6 P, \2 S, Y- p
$ P, K6 F' t& g2 T- FCoastal:是否沿海2 w. N. b8 O# F9 n# C: s
/ P8 V5 X' A, ^% @7 I6 j- F' o
GreenCoverageRate:绿化覆盖率
2 F8 S5 l9 O* G4 p( D4 z& f$ Y$ }1 l! M* j# ~" p+ u1 t6 G Q
Incineration(10,000ton):焚烧量(w吨)6 R) i& z% q( P3 [4 G( }- r4 o
7 B0 o) P" }3 b8 R( c/ I数据清洗
3 g, o/ i6 f( t/ M' d, m) m/ b检查缺失值:
, i' D; t5 a7 N; [; W9 P& Hdata.isnull().sum(axis=0)
$ M$ Z4 } O4 c- U' h: A7 m: K. C6 R9 I- f U# O. F
$ ?* O4 x7 ?9 @1 R![]()
3 Q! E: P8 H% L9 N5 k+ {( L5 j9 ?
9 z }; D1 Y6 F6 K v# o5 Z查看含缺失值列数据的分布:* y: X& Q5 Z$ b Y+ H
#print(data["Precipitation"].skew())#偏度
2 J, e) V( b. N% m, ~, o4 Isns.distplot(data["Precipitation"].dropna())#要删除NA值才能做分布密度图2 g& O. h" m6 J# D8 O2 F0 F
plt.title("分布密度图"): e( J2 R0 D3 N9 d
0.27360760671177387
: ~% ]- A# b# B& c1 O
* ]" J2 o! E9 n& O3 r9 ~ 0 ]0 [9 b# T, s9 }; \$ Y! r$ |
, x! J+ C/ _1 G
数值型变量,数据呈现右偏分布,所以使用中位数填充。 对缺失值进行中位数填充 data.fillna({"Precipitation":data["Precipitation"].median()},inplace=True)
^% O5 H9 F' ?3 L" V8 z7 U% y检查异常值的三种方法- data.describe() 查看数据的描述:分位数、均值与标准差
- 基于正太分布 ±三个标准差涵盖99.7%的数据
- 箱线图(四分位距IQR=Q3-Q1,上下边界:Q3/Q1 ±1.5IQR)
h' R& R8 r; G+ ^' B" W
查看数据集的偏度: , l( o& K# V9 u0 ], t I
data.skew()* U" m% p4 h$ Y V
, ~. C0 ?, r) a% h
AQI 1.198754
% d7 o5 o! ?* ^# B; FPrecipitation 0.2736080 L' o% `7 P/ y8 `: Z5 u$ `
GDP 3.761428- a$ D+ \7 j+ q3 r. o4 Z5 i
Temperature -0.5973433 D; E/ c- x) f1 D5 _. J2 n4 E9 P
Longitude -1.407505
: i+ D. B( N" R: f* p% gLatitude 0.253563# A: n3 S- r1 R3 {
Altitude 3.067242% s6 }7 L+ Z" o4 z( Y. H
PopulationDensity 3.125853
5 Q2 ?: z( k+ }/ H9 {1 {! {, [GreenCoverageRate -0.381786( n/ t: b4 N0 ^4 k
Incineration(10,000ton) 4.342614
! o# v% ] D3 S) D W, F/ @, A* K' wdtype: float64
* d- P: w* F2 O" x" c+ V+ B5 n+ r$ h" k' K" G
可以看到GDP和人口密度等都出现了严重的右偏分布,意味着存在很多极大的异常值。 下面我们查看以下GDP的异常值: 6 S1 n& N2 a0 y, f
mean, std = data.GDP.mean(), data.GDP.std(); C. Z/ {+ ^6 J
lower, upper = mean - 3 * std, mean + 3 * std' K. @9 d4 j6 f% B
& E4 H% h% }' B7 p R
print("均值:", mean)
" X, _( Z) y6 h |# `0 Iprint("标准差:", std)
8 u6 L/ s$ @2 x9 Q, L+ b5 Rprint("下限:", lower)
F; {8 v6 j; d0 R p6 N+ Rprint("上限:", upper)
7 N5 E$ J5 F, V/ g, @- h' e, {" ^data.loc[(data.GDP < lower) | (data.GDP > upper), "GDP"] }- x0 H; A, j3 J1 {
4 _( v, l# z# f
均值: 2390.9018153846167 M' ~: ^+ I* O/ N- e; Z8 g1 G
标准差: 3254.876921271434
! C, O9 r9 N8 x" a: D% w3 P- G下限: -7373.728948429687
1 {; W! W0 T5 s9 D& g上限: 12155.532579198918) D9 t+ E" E( n% Q' Q1 v
16 22968.60) l# J1 e0 e: {
63 18100.41/ e& O: g7 X* [. P3 O- T$ q
202 24964.99
% ?. P s: G+ a& t, v5 v) p207 17502.99
$ s j5 A1 `3 D% ]" D; k215 14504.078 U5 _0 }( {( Z0 ` P( o y
230 16538.19 V/ R/ h" Y1 \+ _+ [1 F
256 17900.003 i: u8 O3 L/ X0 m/ E
314 15719.72
" Y0 h( P" |6 i) L2 CName: GDP, dtype: float64
+ b( H( ?6 b; B% T }: i0 v
& x |" E9 q6 d$ {" }0 R- }# U
1 u5 ]: Q {) ^2 ]7 B: I5 Z% X6 h/ S
+ g# S2 k* I# `& L; w
) G8 }* t! n$ n( B5 A4 R9 { |
zan
|