- 在线时间
- 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,指空气质量指数,用来衡量空气清洁或者污染的程度,值越小,表示空气质量越好。
# r/ L2 E5 W. }! u0 h) j5 I本文的分析目标是:- A( |5 n. D) Y0 N8 G+ {9 R0 A
一、描述性统计9 T; t, R0 G: s1 ~
那些城市的空气质量较好/较差?空气质量在地理位置分布上,是否具有一定的规律?二、推断统计
p9 Y# h8 ]- o$ g1 @8 Z临海城市的空气质量是否优于内陆城市?三、相关系数分析
6 J5 h( B' y% O7 F/ s: j1 E空气质量主要受哪些因素的影响?四、区间估计
. e( S8 L1 H+ m/ o全国城市空气质量普遍处于哪种水平?五、统计建模
. l6 U& u+ F& c怎样预测一个城市的空气质量?导包并读取数据:import numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport seaborn as sns
- J/ l, L$ w8 }1 G5 V% Y% vsns.set(style="darkgrid")plt.rcParams["font.family"] = "SimHei"plt.rcParams["axes.unicode_minus"] = False- e* L5 |0 |/ c* E m$ Z/ J5 n
data = pd.read_csv("data/data.csv")print(data.shape)data.head() % _) ~- _5 `3 _% V% S, J9 N/ ~2 e
& a- x2 g! c: g9 C( D# _; \5 D数据集描述:
& P8 I7 l. G0 P2 z z9 s1 x
* a7 ?* R, \) ^+ QCity:城市名1 A" g. i$ Y1 X5 D3 j! L
; f) u- n- @5 i' IAQI:空气质量指数
8 i7 l9 y4 j3 H# R. n6 l2 ?9 C) u; |4 o
Precipitation:降雨量- e/ ?3 [; ~2 |: D' }7 N& R8 u% z$ J3 I
3 p, F- _0 o/ D5 o$ t$ NGDP:人均生产总值
- i4 i; \- {# @
3 s! L( q) F5 l$ X2 ^! y/ sTempearture:温度
G, m. f# i; M% W8 H5 l
0 t( q2 j/ p: `1 [0 I2 d( P* FLongitude/Latitude:经/纬度7 S* D0 T' u+ U4 F- `, q
& f [& O+ K9 @1 z" w# H5 eAltitude:海拔高度
/ E M/ M r! l3 u/ E/ D8 D8 ^2 U$ S* v, k
PopulationDensity:人口密度
n% z. t. P n4 l6 g8 F% f$ q" y( t% K) D' J+ g& G+ Z
Coastal:是否沿海$ d( @5 O4 g+ W0 E* J) m
3 Y! W/ M8 O9 m f, n$ OGreenCoverageRate:绿化覆盖率8 x3 s8 g( Z% f$ O- g% n
" s1 u/ N) J& n% u' {% q% F$ o
Incineration(10,000ton):焚烧量(w吨)
) T' y' O$ X5 B; H h+ r
% C. X- r- [ t! l' ~0 O数据清洗
8 [# T- Y- X+ i3 v' D检查缺失值:
7 J% U# T; o ^) ]数据集描述:# T; ?8 [. e8 h
! {+ B% Z2 E& N `; v
City:城市名5 p/ q' @6 q5 I* T
" F8 \2 Q$ u- k# ]
AQI:空气质量指数 u! A" q1 ~) a3 m
% t4 t& x+ V) P9 I/ nPrecipitation:降雨量2 ~; [4 _; X) @+ O$ x
- P. x. r* U, k4 w3 B
GDP:人均生产总值
! q$ A$ V9 V+ {
1 D7 q, E& i9 x, Z- I/ yTempearture:温度
) z: }, |- Z; w6 h8 e t% q& r3 w
; m/ r; I* B5 b+ O0 rLongitude/Latitude:经/纬度
; p+ o/ P, B1 G! a: J. a
- n/ V. E% u: O$ [4 Q& _Altitude:海拔高度, ^' u3 @) H0 l' X3 H0 o
l$ y/ H3 T1 J4 S, jPopulationDensity:人口密度8 B0 S: e; C0 ^0 W9 A' O* |/ I
7 \7 P& ^2 t, ^6 \
Coastal:是否沿海
$ i2 b! V6 E* T, S7 F- Q0 D0 F1 @ H
/ P! B; h" b! W/ H7 qGreenCoverageRate:绿化覆盖率8 I8 L: _4 P8 P3 _* C- k3 k
" W, W9 y6 X* [' o4 _Incineration(10,000ton):焚烧量(w吨)
; |+ k. R' v" X. `/ i: ~9 c, m% O& @$ a% @- U! l
数据清洗9 J* O5 [) Q6 F8 w V
检查缺失值:
# y% R& J$ {* q0 U# P" u: H& [data.isnull().sum(axis=0)
8 Q+ I8 L6 \* C% h# l, @+ j" G m1 H# f7 E9 t) ~8 `" T
: q. J- F8 ^- G& `![]()
) }# _, j) w f; N4 S' b& T- \( T$ {/ ~
查看含缺失值列数据的分布:2 } y/ @3 y, d7 }2 x
#print(data["Precipitation"].skew())#偏度
$ m7 V$ W8 G y) Q) q& _8 Psns.distplot(data["Precipitation"].dropna())#要删除NA值才能做分布密度图* O# S& [ Q& d% V$ A( V& Y
plt.title("分布密度图")
( I S. w& ~4 H7 C0.27360760671177387; n: G+ _# L& `2 ~
" E2 E$ Z. z; U/ j* N i
![]()
2 K( y+ f8 K+ \* r8 w2 e' e3 z4 a0 N' |" O' \; ?
数值型变量,数据呈现右偏分布,所以使用中位数填充。 对缺失值进行中位数填充 data.fillna({"Precipitation":data["Precipitation"].median()},inplace=True)
$ o: ? ?: l8 e检查异常值的三种方法- data.describe() 查看数据的描述:分位数、均值与标准差
- 基于正太分布 ±三个标准差涵盖99.7%的数据
- 箱线图(四分位距IQR=Q3-Q1,上下边界:Q3/Q1 ±1.5IQR)
3 O$ J+ U# A( Y3 ^# o) f
查看数据集的偏度:
5 I. h) N, @5 m6 vdata.skew()
3 q' d0 ~2 Y1 B4 H. A
p' H' }9 M9 O! s) k VAQI 1.198754
: y7 n" {2 A6 E) N; UPrecipitation 0.273608( L. I4 U" Q' y+ p0 T; m
GDP 3.761428& `8 J* ` A! _/ V
Temperature -0.597343
" y7 r6 K U/ Y$ vLongitude -1.407505* Y( ~# B$ g2 v
Latitude 0.253563- {7 s a, L3 q( h& \
Altitude 3.067242; f6 a G7 w0 p6 c- m
PopulationDensity 3.125853
+ q8 m' m8 R& l2 q4 `: a/ M/ ^& @GreenCoverageRate -0.381786
% P v- W: l3 w/ W7 f9 f h xIncineration(10,000ton) 4.342614
& y! Z6 ~3 F9 ~$ d; a' |3 Z. ?dtype: float64
2 m9 D, g6 f7 w: t5 i
' F, X1 y1 p7 F; h9 x可以看到GDP和人口密度等都出现了严重的右偏分布,意味着存在很多极大的异常值。 下面我们查看以下GDP的异常值:
6 r9 x0 [1 {! o. X1 `mean, std = data.GDP.mean(), data.GDP.std()9 J( ?3 r4 x- ]8 S Z
lower, upper = mean - 3 * std, mean + 3 * std
" G9 B7 c6 f) E6 {1 n0 K. r
5 M6 Y$ c8 [) R5 f$ c9 fprint("均值:", mean)
" u g5 I8 L8 ~/ k1 Qprint("标准差:", std)
4 O. u% r% |- lprint("下限:", lower); m3 x) S9 ^8 j; I& [+ A. ^
print("上限:", upper)
0 m1 ]& @& B- k( _- J( Udata.loc[(data.GDP < lower) | (data.GDP > upper), "GDP"]4 ~ v. @5 W' k* u* e* d: y
6 a2 [+ R; Q& C均值: 2390.901815384616
, m& z% Y% a: k5 r4 ~标准差: 3254.876921271434/ G" M) K; X- O, p# g
下限: -7373.7289484296876 e& O( s( f8 p6 s
上限: 12155.532579198918
- ^5 c5 h' b/ q5 r' F2 z16 22968.60
+ U# p- _" Q% H* Y: d1 H63 18100.418 A; A: N% |* M4 L8 Z- n' t
202 24964.99. h0 @- }1 [3 c" [, z
207 17502.99' T3 s8 C/ D8 ]
215 14504.07
* u- O( q; D) T! I( u230 16538.19% l5 n/ p, i0 `- U9 C
256 17900.00
- f( _; q3 }2 H& U; S# Q314 15719.72" Y0 b4 A/ O- ^* z
Name: GDP, dtype: float646 w% V7 S/ b2 p* n8 V P
+ K/ p3 K; ^% H9 x4 ]9 V6 ~& w$ n/ R* y4 e
* B0 r! {5 C' s8 R# F+ A4 E
& O# C( E) }7 }0 X! [/ @. u/ _" f) l! G
|
zan
|