- 在线时间
- 514 小时
- 最后登录
- 2023-12-1
- 注册时间
- 2018-7-17
- 听众数
- 15
- 收听数
- 0
- 能力
- 0 分
- 体力
- 40277 点
- 威望
- 0 点
- 阅读权限
- 255
- 积分
- 12794
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 1419
- 主题
- 1178
- 精华
- 0
- 分享
- 0
- 好友
- 15
TA的每日心情 | 开心 2023-7-31 10:17 |
|---|
签到天数: 198 天 [LV.7]常住居民III
- 自我介绍
- 数学中国浅夏
 |
AQI分析与预测AQI全称是Air Quality Index,指空气质量指数,用来衡量空气清洁或者污染的程度,值越小,表示空气质量越好。
x5 h; G" ~/ X7 f( ]; e, C+ w: ?本文的分析目标是: t% k& H. I! g- A
一、描述性统计- \: N8 h2 D! k2 Y8 o$ l6 H- O
那些城市的空气质量较好/较差?空气质量在地理位置分布上,是否具有一定的规律?二、推断统计
, V3 M* N% W' m4 V6 ]' J8 s临海城市的空气质量是否优于内陆城市?三、相关系数分析
' c- Y* L* C$ a# \+ W* S$ p% g: D空气质量主要受哪些因素的影响?四、区间估计" y7 T/ K3 C2 a
全国城市空气质量普遍处于哪种水平?五、统计建模3 L7 i2 m0 ~& w! A3 ?9 ^+ {" g
怎样预测一个城市的空气质量?导包并读取数据:import numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport seaborn as sns5 x5 L: B# z1 w
sns.set(style="darkgrid")plt.rcParams["font.family"] = "SimHei"plt.rcParams["axes.unicode_minus"] = False I4 y7 w* R T) ?* \
data = pd.read_csv("data/data.csv")print(data.shape)data.head() / ^! i) Y% \& \+ T0 `5 p
( T1 z8 M. J% t数据集描述:5 l9 N$ f" ?; y. {2 U9 ]+ a1 V
2 ~. j$ O) A, O9 _* o- PCity:城市名6 T4 {7 v5 l: m9 F p, D' v
% g( `% y( r. d) W# T8 A, \( C- e
AQI:空气质量指数6 y$ R8 n! r4 N3 _: s# X2 o
7 B- C' z) `5 H! m5 OPrecipitation:降雨量7 {0 @- j, t/ z" ]; K* T6 Y
6 O, W( ?3 `5 z5 P1 hGDP:人均生产总值
$ T9 I( a/ O% X# {4 u! N) y; k" T% G2 [# k, ~ P* Q
Tempearture:温度" S1 m& R% }( K( t# i
: S0 }( R6 x# L% b( [
Longitude/Latitude:经/纬度! z0 h6 v g# h
$ j+ A0 Q2 j- F1 d' f( V7 A7 TAltitude:海拔高度
) p2 C! L7 W- E# R% W
/ W, {, m0 x8 |- xPopulationDensity:人口密度
, Q# i6 |( F+ I$ D9 Y( {+ P X& p) j/ D# m) ^
Coastal:是否沿海
" u7 J9 Z( i ]; B4 _6 B, S6 w, e, R$ C8 Y: x0 T
GreenCoverageRate:绿化覆盖率0 ~0 m3 ?! \: v
; S# D+ u# W( ?
Incineration(10,000ton):焚烧量(w吨)
' N( S2 c. [8 `0 }9 S4 a$ o/ ~' A& t$ y
数据清洗
! P0 |. w5 l& R: G7 s4 h检查缺失值:
' s' m% M" f8 T$ U数据集描述:: g, J+ N; a( T% Q( j- X* j8 R% M
' \" H: c" v* s& L! xCity:城市名
5 U7 S% E* j- N2 e# P" }6 D ?6 H+ S! S, j# \* f) C% y
AQI:空气质量指数( i X8 ]; ]- k4 }% U# ]
3 x2 c) z- n7 v! d: G
Precipitation:降雨量
. } l0 U1 I& |! j2 L$ W8 b
. B+ }/ {5 W. r c: a: K8 aGDP:人均生产总值$ N6 p1 w7 _$ V+ w$ l
& P) R w6 A8 @ cTempearture:温度. `: B0 Q1 x: ?' j( H7 F# Z
8 F+ r5 ~8 | J' k) w0 J! u
Longitude/Latitude:经/纬度
; Y9 j/ f9 Z8 e6 |. @3 F+ c' s7 {7 V R o% Y
Altitude:海拔高度
4 N7 x5 e5 p9 `7 M6 _ _
. ~# U' c1 |; t! ]& q# n: b- CPopulationDensity:人口密度: c% b3 ]: d, H/ n/ t, K$ g
- c0 |6 y/ P, YCoastal:是否沿海
1 J9 Z: c! F, }9 w
4 S' P& l+ ~5 _3 w& a* g# oGreenCoverageRate:绿化覆盖率
3 v2 i) G: p- d8 C" \0 ~4 M% s' u. J! ~- |3 R) ~! Q. c* H
Incineration(10,000ton):焚烧量(w吨)* d5 p9 i/ {% y& r7 R# f
5 h2 z4 `0 r& b4 }/ V$ Q数据清洗
" L* {6 b2 f/ ~* b( _检查缺失值:
& c) Z& e2 c: Q" M+ x/ ~data.isnull().sum(axis=0)( _' ?4 q$ N" t1 B
( W" l# J" C; V, W8 \8 {7 d9 \. {- c3 L9 R+ e' K5 u
![]()
2 p7 d+ w3 s* y- a7 T3 N9 ]# E- g
2 k3 P) Y, s: a/ K. G( l! n查看含缺失值列数据的分布:% |; G4 v* T; r0 B9 ~
#print(data["Precipitation"].skew())#偏度 * D. O9 k( |; O b; h
sns.distplot(data["Precipitation"].dropna())#要删除NA值才能做分布密度图
: w1 Y4 `* \" j* r( R" mplt.title("分布密度图")6 H2 r9 r: y+ W! t% w. h
0.27360760671177387) b% S/ }% G0 v; F
$ u& [3 K' P- P& Q5 d / B! L0 d$ r- ^# N: I$ X+ X
1 f1 d; x7 n! A% R数值型变量,数据呈现右偏分布,所以使用中位数填充。 对缺失值进行中位数填充 data.fillna({"Precipitation":data["Precipitation"].median()},inplace=True)
# }6 q" H8 |8 `+ C* X9 g检查异常值的三种方法- data.describe() 查看数据的描述:分位数、均值与标准差
- 基于正太分布 ±三个标准差涵盖99.7%的数据
- 箱线图(四分位距IQR=Q3-Q1,上下边界:Q3/Q1 ±1.5IQR)4 l- q7 ], d1 a3 x9 y2 F
查看数据集的偏度:
) H/ z! a& E) h% S! B0 Q7 ]5 {data.skew()+ {$ j5 N, @2 ?; F8 q
$ Q3 w) L2 d f$ p' O' F( XAQI 1.198754
1 Y% n% _2 o, u! j$ UPrecipitation 0.273608
: d8 y6 s* c3 _9 `8 F4 I) vGDP 3.761428& o4 b: C7 g) J( T/ a
Temperature -0.597343
- f( [7 S \& H8 X* x3 VLongitude -1.407505
7 G8 f" ]0 l, }Latitude 0.253563
, X B" Q; C. M' P4 PAltitude 3.067242/ ~! D' _. X' c
PopulationDensity 3.1258531 q+ W; y5 u; ? M! u
GreenCoverageRate -0.3817867 Y/ I$ e& O1 `2 [# Y# U' L+ D
Incineration(10,000ton) 4.342614. _ w( v: I. ~0 U L. e- v4 G4 T
dtype: float64. m4 Z+ `9 z/ I( a' s+ d* l
3 [, }5 n. e9 F可以看到GDP和人口密度等都出现了严重的右偏分布,意味着存在很多极大的异常值。 下面我们查看以下GDP的异常值:
) N5 O R" }% p, c/ mmean, std = data.GDP.mean(), data.GDP.std()
l) w) _9 [" j2 ?* L* L6 }2 s, alower, upper = mean - 3 * std, mean + 3 * std
- Z# Q0 o, U" H. p
. N8 C( g$ t1 iprint("均值:", mean)
9 Y- z' W9 C3 Tprint("标准差:", std)
6 e5 X- M4 C, T% Uprint("下限:", lower)3 O& q/ f$ D* F& E* X/ _: W* p* U
print("上限:", upper): p5 K% f; @7 b* ]4 B+ w& m' }
data.loc[(data.GDP < lower) | (data.GDP > upper), "GDP"]* \" p7 Y O7 F( o. Q$ H
7 U& }+ o! Q8 ]" G0 |
均值: 2390.901815384616
/ Z6 N+ R# l! c标准差: 3254.876921271434
' _ i4 R4 g. t& Z' r: J$ u& N下限: -7373.728948429687% R. s2 w3 ^* L1 [
上限: 12155.532579198918
, h' Q. }+ m |! u( C0 |* k16 22968.604 H g& J( E# p/ h! ]( _5 d& |
63 18100.41
% a. [5 y$ z; H5 ~3 g/ }202 24964.99
! U4 I4 N1 ~. @+ _1 x207 17502.99, x8 o% t+ e: w2 M5 ?4 E! l) R6 ~
215 14504.07( {" B, h# r/ Q* i8 m
230 16538.194 f% W5 r/ V* R# O
256 17900.00- t: l2 t) Z# u8 [, l( Z: K
314 15719.72: I' Y* j, f d J l* F% y
Name: GDP, dtype: float64
% q6 y. b7 ~# O9 w) Y' m4 U" q: F. }+ M
& j% W" O/ v- O ^7 [/ F( c; n4 P
. U/ @; F9 @1 O- g2 o4 Q9 x, @
: j0 {9 y$ ?3 k3 s
9 E1 l5 x% G0 y8 T
|
zan
|