- 在线时间
- 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,指空气质量指数,用来衡量空气清洁或者污染的程度,值越小,表示空气质量越好。
+ C* U9 a$ a) F$ ?本文的分析目标是:6 O6 Z7 }2 V4 |
一、描述性统计- D$ z, ]. ]- T G& j
那些城市的空气质量较好/较差?空气质量在地理位置分布上,是否具有一定的规律?二、推断统计
0 [7 `, J2 b2 w3 m6 k2 q6 ?临海城市的空气质量是否优于内陆城市?三、相关系数分析
$ Q/ a7 Y4 a6 D. z' x空气质量主要受哪些因素的影响?四、区间估计
& w1 r8 }0 u5 i& y. q* r全国城市空气质量普遍处于哪种水平?五、统计建模1 F' I+ { q) |6 c2 p1 s
怎样预测一个城市的空气质量?导包并读取数据:import numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport seaborn as sns! W5 b8 | _+ e1 q0 d" x
sns.set(style="darkgrid")plt.rcParams["font.family"] = "SimHei"plt.rcParams["axes.unicode_minus"] = False
/ v- Z5 S+ n2 A0 l* Edata = pd.read_csv("data/data.csv")print(data.shape)data.head() ( {; r1 Z0 s- { F# I8 v9 o7 c
$ I# c* @4 s: F& S+ V
数据集描述:
; @) N: A d7 q# K6 }9 B. ^$ K" {, ]: U$ C- \
City:城市名8 u2 l9 x" M f: W1 u
) t5 S! X. w' ~9 S" D4 ~' LAQI:空气质量指数
! [8 w: q5 S3 R- |
4 ~! T( @5 Z8 K( ^1 SPrecipitation:降雨量& E4 Z! l! @2 a
5 T- }0 w( D' E q3 ]GDP:人均生产总值
) M$ l% p3 ?6 Y* y/ d/ v/ c2 S# n7 B3 v# n
Tempearture:温度! L! X* v" i6 Q0 W8 W0 I- ^
8 N& } P/ w! B
Longitude/Latitude:经/纬度# |3 w/ t0 w- ]* p7 j6 f/ P7 R
) |. w3 W5 z' n/ e% d" k2 m; LAltitude:海拔高度5 b* \: O2 o ^2 q$ ~, X3 h
" S$ |4 C% d# ^& ^- K- rPopulationDensity:人口密度
& k0 P8 W; c0 `. l% K" {! V& }, U X
& ] ]+ i" ^9 T: i4 |3 g4 r. hCoastal:是否沿海
L0 W0 O4 _! O3 ^) g+ i0 H+ S2 ~+ L" y2 B5 y4 m
GreenCoverageRate:绿化覆盖率
+ D1 l$ L, G7 s! j3 o" T
; b* O2 F% N4 l, J: C. u; K/ N/ RIncineration(10,000ton):焚烧量(w吨)
" _1 q; F: ^/ r+ _
7 s3 }' Z2 O$ f! ]! a( b$ X数据清洗: |/ a! M, `/ c. _- X
检查缺失值:! L- C1 n! d( I4 \! n
数据集描述:
/ o$ ?- m' ?! U
/ \# o; u8 C ]6 g9 m N" c3 BCity:城市名
* g( J+ V3 d- w4 L: j9 f
. b3 K! c+ j& c# yAQI:空气质量指数
& Z6 u$ r1 u0 B% w/ r J4 e- m$ ^6 [: D6 P. `) N4 a, Q% S
Precipitation:降雨量
; [$ C. f. R8 P% _# z8 ]# G; O! z
" z/ Y' n$ [9 O7 F) h" J- i3 n3 zGDP:人均生产总值
7 g; O& O; H* t9 U
: s$ i$ L: p2 k# W( ?Tempearture:温度. L8 n% V* u2 {' I2 m
( m7 G [; d9 D) ^! f& N( @7 y
Longitude/Latitude:经/纬度% [6 v# A2 X0 L
4 u2 o. s' u( l9 b
Altitude:海拔高度' X8 L2 o. K) O3 W6 l
) \ n4 H& e1 e1 e% W9 D" O
PopulationDensity:人口密度* J) } {3 l8 i! V/ ~5 f U! R& Z
9 H* `; \/ y) @# ~" Q# e
Coastal:是否沿海
, m" x, X7 Z% ?" N6 X
( U$ Q+ p/ y7 z# V0 wGreenCoverageRate:绿化覆盖率 s$ ]- N0 I8 u$ o) ]
/ G) _( `% j# t. iIncineration(10,000ton):焚烧量(w吨)/ W. U& m `: I5 [4 p$ x
: E8 o4 V4 [. f% F
数据清洗
+ t% u+ Q; J% \* C! R/ }检查缺失值:, b( H" v# r' n; k1 t7 H7 K
data.isnull().sum(axis=0)1 r" A: R- F H& ?9 S
0 v# I2 z# t: Q* |
' \/ t ^. i- Y: k; ^3 F " }, k" ^; C; N& ^1 Z
9 p. |, R: ^6 w0 P: ?
查看含缺失值列数据的分布:
& s1 T. o8 g+ b; r& l) w8 R#print(data["Precipitation"].skew())#偏度 N, v' b( Q4 H2 Y, o1 k$ Q% Z( c
sns.distplot(data["Precipitation"].dropna())#要删除NA值才能做分布密度图
3 c7 a0 q8 f4 X4 A6 Zplt.title("分布密度图")# `5 f' y, D7 P, C
0.273607606711773877 O* p& V$ C; c- m' K6 ]3 l
& W ^! U1 n7 c9 d: X v& g n( F7 C) M4 c( k( i
3 H$ w: P$ q' U; Z/ e y
数值型变量,数据呈现右偏分布,所以使用中位数填充。 对缺失值进行中位数填充 data.fillna({"Precipitation":data["Precipitation"].median()},inplace=True); C, N( Y- _3 b# j8 {" [0 y
检查异常值的三种方法- data.describe() 查看数据的描述:分位数、均值与标准差
- 基于正太分布 ±三个标准差涵盖99.7%的数据
- 箱线图(四分位距IQR=Q3-Q1,上下边界:Q3/Q1 ±1.5IQR)
& o5 P" A7 ^5 W+ k. E" ~- f
查看数据集的偏度:
8 }$ t" k$ _& G- u! _' Zdata.skew()# o# x( h9 C# `( B% P& ~
" x" }9 q+ j5 G! i1 B
AQI 1.198754% E$ j$ y5 g2 y" f2 I* B
Precipitation 0.273608, Y% C" n2 p' k/ E, @. X4 a, s
GDP 3.761428
! u$ S9 b/ t# u% k: w( O- aTemperature -0.5973433 C- }- x1 \- S& S9 ~5 b5 g8 L
Longitude -1.407505. }1 s7 l% w2 M' h0 O. `
Latitude 0.253563
8 T: V6 x# s( C3 @6 I. H6 L% JAltitude 3.067242
( a7 ?7 A1 @* N/ SPopulationDensity 3.125853
& ~9 g% T" H' mGreenCoverageRate -0.381786# B( v' u* T4 `; }, P
Incineration(10,000ton) 4.342614
$ q6 [6 L4 B$ udtype: float64- Z+ \5 o' N* z1 u7 y
* n5 P8 @1 c% v$ X2 y/ g
可以看到GDP和人口密度等都出现了严重的右偏分布,意味着存在很多极大的异常值。 下面我们查看以下GDP的异常值:
$ Q: Z2 b% J+ @% vmean, std = data.GDP.mean(), data.GDP.std()* R l# ]3 i0 T3 x0 s
lower, upper = mean - 3 * std, mean + 3 * std3 T9 H5 u& e6 n. D! V
: u- a5 m- _- @, k6 S! C
print("均值:", mean)
' V9 r, ]7 j. {9 fprint("标准差:", std)! x S# ^% B. J- F: A0 q: ]( x1 E9 h
print("下限:", lower)
9 t4 h) f3 e2 y' ^$ G+ R8 fprint("上限:", upper)% R6 C! @5 j: F4 G4 k
data.loc[(data.GDP < lower) | (data.GDP > upper), "GDP"]
; K6 @" w( K: v6 W" ^$ N9 G' V* _5 n- P8 U- K
均值: 2390.901815384616
. R( l6 {2 R( ?# ?标准差: 3254.876921271434
6 D* u8 [. B6 c下限: -7373.7289484296872 S( ~; U# }9 s2 H% ]
上限: 12155.532579198918" n! x& t& Z. k5 x- Y
16 22968.607 _ k+ L; O0 E( E
63 18100.41/ b- c$ {$ K/ E7 g, u3 s4 p# D
202 24964.992 C5 z# r4 Y) u: ]. X; Q
207 17502.99
& p8 ~( ]" A* r9 g/ ~1 F7 j$ [% z T: G215 14504.07# h7 s8 Z k @4 F% L7 ~0 V
230 16538.19/ A! u! b5 E! {/ V
256 17900.00
, [% l- p5 E& {3 V, E- y% y314 15719.72# n' U' h) `" k. d# Q- k9 Z, q
Name: GDP, dtype: float64! ]( Q1 w+ X$ H+ s8 c3 `! K! n1 \
; _- K. B% X( m$ H
! y; t" v! Z& H) ?# }+ `, |
0 p" i9 x9 D1 C* I4 E" P# Q) B) C7 `; I! V, t6 r1 i
7 F3 v; L& ?# |, U# s9 Z. N% U' R |
zan
|