- 在线时间
- 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,指空气质量指数,用来衡量空气清洁或者污染的程度,值越小,表示空气质量越好。9 V- V! J1 T" A9 C u- t6 |
本文的分析目标是:# ?# P+ }9 ]6 @. {3 I* C' B
一、描述性统计: I( w5 ~9 O) S. N3 J! ?
那些城市的空气质量较好/较差?空气质量在地理位置分布上,是否具有一定的规律?二、推断统计- t! K! c' z7 U7 l
临海城市的空气质量是否优于内陆城市?三、相关系数分析
' E0 m; m0 n7 M* y* d6 r: r空气质量主要受哪些因素的影响?四、区间估计
& D( h) o/ R/ {全国城市空气质量普遍处于哪种水平?五、统计建模6 |# V) T0 n+ e% z
怎样预测一个城市的空气质量?导包并读取数据:import numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport seaborn as sns
" K' \- b( j5 I. S0 [/ y7 E! wsns.set(style="darkgrid")plt.rcParams["font.family"] = "SimHei"plt.rcParams["axes.unicode_minus"] = False
1 |2 l2 V: Z9 r/ S3 Bdata = pd.read_csv("data/data.csv")print(data.shape)data.head()![]()
% k" f- E7 j f v8 S% Y+ A# C# p
8 o9 |) U9 `+ g7 ?$ k/ \数据集描述:8 B9 K5 v. T: g* z% @2 t1 V
4 a# h: k+ E+ g5 f6 j. [" yCity:城市名. h5 O" S6 J3 A0 H
+ q8 ?7 S0 S7 V& K5 W/ G
AQI:空气质量指数/ y# J& ~' ?4 R
, h/ j. h2 w& N" i" P
Precipitation:降雨量
; j) Z2 \/ s4 s8 u9 @; n1 e) }3 E) ~2 {0 O* W |
GDP:人均生产总值5 U3 G$ J1 n: u% H8 T
3 C: P" N$ K6 ETempearture:温度, }( t$ z, ~! [; ?1 D- K' R Q
# _% s2 j+ K% t% r4 z
Longitude/Latitude:经/纬度' Q9 |* {/ v+ I' L0 V& y' o
# r4 \$ ~" c3 z- e2 u
Altitude:海拔高度
: @4 L K* _6 N7 Z7 A0 I3 K V" h# e7 T+ x8 C% |) L+ t
PopulationDensity:人口密度' T) x; F* i0 M: G
) B& s# ]+ i- ]7 O! KCoastal:是否沿海
9 F \, n, A- L& D7 N4 R
% j9 h$ V+ ^+ d/ @( c0 t% ^3 NGreenCoverageRate:绿化覆盖率
* A% O( E# V, x: i3 ~
1 W* g% t# B6 W# Z2 `7 c7 A7 y: MIncineration(10,000ton):焚烧量(w吨); `$ j* A# _0 k* C' L3 H7 I! v
5 T5 [' o+ j( W7 Z. W* O: d; T
数据清洗
4 o9 S4 T0 H8 p- E: R' ?6 V: H检查缺失值:% V0 c/ T2 h$ N! ~
数据集描述:
6 i% H( Y: x' b) J% q! R6 a& L& ?/ z/ \5 ?' N9 `- w
City:城市名' B" N3 E( C, w1 T3 T% H
+ ]& {3 \5 x. k: U$ kAQI:空气质量指数
( `- U; \9 W7 S" f
9 T( F9 F$ _8 [; z1 W; ~Precipitation:降雨量. ?2 k8 l" ^ X
3 W! I( q% l/ Z, T+ fGDP:人均生产总值
+ _4 |+ N3 P3 x3 v( f+ C
% e- |5 r) l. A0 lTempearture:温度& U0 P" ?4 f" G7 f' H0 k3 v' Y J+ x. y
" k. u, X- B. h) d' NLongitude/Latitude:经/纬度& _# X: ^+ B. |- d) R1 L
! W1 ]/ W7 F2 q4 wAltitude:海拔高度0 E. H6 D& y+ i1 b
, n0 X# {! z5 h }2 s* Z9 p5 lPopulationDensity:人口密度. p: u' {+ ?# x9 U7 A
, R' g1 O1 ?: FCoastal:是否沿海+ D) F! a1 k2 Q. B1 c
1 j' _( p' p3 s3 ?4 I3 m% `
GreenCoverageRate:绿化覆盖率) R7 [# Z! `6 E8 n. G& }
. l( Y) h, `, D6 @. ^
Incineration(10,000ton):焚烧量(w吨)! v0 }3 E2 R& R/ U2 ^( ]
/ o9 ^; V* k5 s/ z; |. b
数据清洗/ n/ D8 A1 p* {0 |/ N, \
检查缺失值:
% ~' d8 ?) q: F ddata.isnull().sum(axis=0)
* G* r$ e7 E$ k; p
3 @$ \, t1 }, {3 n& I. F+ m7 N. C6 v% r5 \
T+ q/ G4 N" o R& I
6 ^) x% B, F5 |6 c+ d查看含缺失值列数据的分布:
" P$ y ~2 x' |% X! G" A8 ]#print(data["Precipitation"].skew())#偏度
2 R' z, `) k) m2 u, ]: e/ P) Q. Vsns.distplot(data["Precipitation"].dropna())#要删除NA值才能做分布密度图
7 S8 m: j4 ?2 \* Z1 e- }plt.title("分布密度图"), @. A3 B6 q- ~
0.273607606711773872 S' m9 g8 w6 z& h
. N$ g f7 W1 g* n: L, u9 i2 [3 ~
![]()
0 N% ?3 t7 b# s, g0 X3 `( ~" K2 g. b. C7 V' w8 \( p% d
数值型变量,数据呈现右偏分布,所以使用中位数填充。 对缺失值进行中位数填充 data.fillna({"Precipitation":data["Precipitation"].median()},inplace=True)
& u% k6 e- `* a& J2 s# t检查异常值的三种方法- data.describe() 查看数据的描述:分位数、均值与标准差
- 基于正太分布 ±三个标准差涵盖99.7%的数据
- 箱线图(四分位距IQR=Q3-Q1,上下边界:Q3/Q1 ±1.5IQR)+ O) `5 v0 z- B6 A$ S; J
查看数据集的偏度:
8 i* v& v* a! x! _0 O3 pdata.skew()
, E* j2 a+ a, @: i, g% O& e7 w
# G: c- v/ N0 @* A Z, K9 w; CAQI 1.198754
/ b4 G/ U! r0 H3 e: uPrecipitation 0.273608& M) [% B9 k, E, r9 A5 d+ Z
GDP 3.7614282 h O' Q$ C9 I( d" x* z7 |9 L! K% ?7 R
Temperature -0.597343( e1 W N" s: A! ~& t
Longitude -1.407505
: ]+ J$ t1 i' {# F& ]7 ]: KLatitude 0.2535634 p9 y% y7 f8 @5 }9 f, l
Altitude 3.067242
+ H6 [& M6 K; c1 x g+ XPopulationDensity 3.125853
& Y# h/ e+ e4 ], DGreenCoverageRate -0.381786
1 `4 F# U$ B* |- S1 @$ ^1 |9 FIncineration(10,000ton) 4.342614
" s M P! Q" B5 j# {+ k- odtype: float64
; w" Z! Y q7 n5 P" G( S0 O/ C
8 ?- u& _8 Y0 Z! U& M! |! F" Y可以看到GDP和人口密度等都出现了严重的右偏分布,意味着存在很多极大的异常值。 下面我们查看以下GDP的异常值:
- ^) Q# s+ i1 ~mean, std = data.GDP.mean(), data.GDP.std(), y& v' U0 N* N5 q. }% ^, ]/ R7 d/ g! F
lower, upper = mean - 3 * std, mean + 3 * std. s9 t# M4 s; A' X/ n. W: i
6 O6 i; `. I% T+ c
print("均值:", mean)) N3 J; Q" U2 y. m
print("标准差:", std)
, F# Z+ V2 j6 u* w3 lprint("下限:", lower)
4 ?; n0 f" c6 _ J2 gprint("上限:", upper)+ }- }+ j- V' w
data.loc[(data.GDP < lower) | (data.GDP > upper), "GDP"]9 ?1 @. M3 ]6 e0 E) F' e) Q% u
; ^8 ?- ~7 b8 C均值: 2390.901815384616
9 i" r% L( V E5 r6 @& F标准差: 3254.876921271434+ X4 f5 ^7 Q- j6 P
下限: -7373.728948429687$ ~: b7 w# e- K2 k
上限: 12155.532579198918
" F* J9 Y+ s7 v3 V16 22968.60, ] E+ g# b0 D
63 18100.41
+ q7 ^( l( a. ^. F* p. p8 M202 24964.99
; x$ P( v: k0 |# c5 a, v207 17502.99
' W" u: [6 L+ j9 h! m3 o2 P215 14504.07
' }" }- x6 n7 d5 n: L230 16538.19
5 O( c7 T( F M! I) G256 17900.001 l" ?1 m0 d3 I) C1 h
314 15719.72
+ |* M3 i& {) I4 p/ qName: GDP, dtype: float64: x$ i+ h6 M" m$ N- q
4 f( g4 T! K9 `/ z- R t8 n* C! I
. ]/ T7 ~ N" ]' p& S; m2 Y
+ N9 h; |: J6 {# R" I& D
! K& {& R! Q& `- x( ]( Q; _/ ^) O; v8 F9 r" O
|
zan
|