- 在线时间
- 514 小时
- 最后登录
- 2023-12-1
- 注册时间
- 2018-7-17
- 听众数
- 15
- 收听数
- 0
- 能力
- 0 分
- 体力
- 40243 点
- 威望
- 0 点
- 阅读权限
- 255
- 积分
- 12784
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 1419
- 主题
- 1178
- 精华
- 0
- 分享
- 0
- 好友
- 15
TA的每日心情 | 开心 2023-7-31 10:17 |
|---|
签到天数: 198 天 [LV.7]常住居民III
- 自我介绍
- 数学中国浅夏
 |
AQI分析与预测AQI全称是Air Quality Index,指空气质量指数,用来衡量空气清洁或者污染的程度,值越小,表示空气质量越好。
2 e' W. `/ M5 n0 C" u本文的分析目标是:) m9 _8 z- u9 O5 }, {" i. a
一、描述性统计" J) H- S; M4 Q& O$ p( e X
那些城市的空气质量较好/较差?空气质量在地理位置分布上,是否具有一定的规律?二、推断统计- n1 y$ n& \" j0 T7 C7 b3 y
临海城市的空气质量是否优于内陆城市?三、相关系数分析
2 z' H! A8 H; r, p3 R% |空气质量主要受哪些因素的影响?四、区间估计% f4 I; d2 _# J
全国城市空气质量普遍处于哪种水平?五、统计建模
: x0 R* D9 E$ s怎样预测一个城市的空气质量?导包并读取数据:import numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport seaborn as sns
7 h1 M o) Y7 ~3 X; ysns.set(style="darkgrid")plt.rcParams["font.family"] = "SimHei"plt.rcParams["axes.unicode_minus"] = False; m4 e" m6 c7 m, _1 q
data = pd.read_csv("data/data.csv")print(data.shape)data.head()![]()
% Y' {6 D7 I; {9 K7 r) ~9 {: q7 j" x& L I2 E
数据集描述:
4 v# n& p4 U( Z) A& a3 U# }& j* Q
. e$ }5 o+ c7 X+ l7 ]8 W. PCity:城市名2 N$ b1 {* r5 i5 u
2 G& E- _* s \1 F1 X* A8 YAQI:空气质量指数/ r3 u# G- A; `6 |4 y; e
; E& C3 d0 V4 f: p( a, L& U9 QPrecipitation:降雨量
3 O9 \' N C* Z0 }0 P, g
" D; o3 Z% G0 v. f) U! I: @GDP:人均生产总值( O4 ~0 _7 i9 F- c- C3 Q, ^: n( W
( t* Y7 @1 g) C" a: j# Q
Tempearture:温度
$ e u# R8 M) z" m3 O8 V: z7 X! H" S3 c4 I' B' m) B
Longitude/Latitude:经/纬度
' D* E# g: p* M' t5 ^5 x
|7 C, t% r& e4 tAltitude:海拔高度1 J# Q! j# W4 i- Q( ?
: c( c0 R. P2 s! e* uPopulationDensity:人口密度' v: }/ U6 d9 ^1 W
* ^1 g' o7 j/ U- w2 l. W3 S$ k4 V
Coastal:是否沿海
r! Y+ u' v2 k) g* o: E
2 ~+ W, C% L- \7 M' a; YGreenCoverageRate:绿化覆盖率6 C; A3 k( A( z& V6 z6 {6 i
. S9 V3 s# \! eIncineration(10,000ton):焚烧量(w吨)1 e$ @% ~4 L; R6 Y
% a! s2 t+ U! E2 T# v% D/ F2 s
数据清洗' B% L4 h: F7 C1 t3 S
检查缺失值:
, y& b- ]/ {9 N6 e+ F4 a数据集描述:
C, W/ R2 A5 Q! W: ?4 D7 n) B6 R3 o! g; o
City:城市名9 S6 U7 @+ E! _" p
[( t! ^2 ]& S" A: S' d
AQI:空气质量指数
/ \; s+ Z1 S4 Y( \9 p. a8 f0 I& e. }( U: y) e0 g8 |- z
Precipitation:降雨量7 [( h+ v& N) s6 ]& `9 d: y
' v+ y+ \' q4 }2 m+ V9 I" `
GDP:人均生产总值
3 L4 g$ I' c6 l. F
7 A$ {% Z: P. b5 ^& m" h' ]Tempearture:温度
( {' Y$ B8 n: q, F5 K9 V+ `& M3 b3 F5 X8 D' C9 C- S5 E$ a- X% C
Longitude/Latitude:经/纬度$ q+ E- k2 f K8 k' c
6 @0 A, j) S0 @$ F6 I1 H
Altitude:海拔高度/ y3 }) F* O {4 {" y9 L; N
: T+ V* x# R1 E, ~PopulationDensity:人口密度! O4 a" B, q8 Q# F
" A) |* O5 e4 N7 H$ p& z6 Y W* d6 }
Coastal:是否沿海
/ m( \# d1 j% W5 d9 F, {* k, K, n! e' j9 b" m/ x. K2 } {& N, ~
GreenCoverageRate:绿化覆盖率
% m L6 k R$ |4 v, G& ~ U
J' }/ ]! D% h/ `; WIncineration(10,000ton):焚烧量(w吨)
. N% J6 B0 [; V
- O3 P* d& X$ b( b @+ A# A" V& J4 }数据清洗' b, f1 s6 E+ w( s# Z; `
检查缺失值:) a. N7 W) M# B
data.isnull().sum(axis=0)
8 p$ H7 e% R6 k n! c& ]0 n
4 F! e- L6 v2 P O+ A
. p2 f" c$ E$ @- G) K; P* A % E, r1 S8 `# X/ {" c3 w
1 ^+ @6 h3 H _1 ^
查看含缺失值列数据的分布:
4 h7 Q7 u; i8 Y% g+ ~6 S- }#print(data["Precipitation"].skew())#偏度 * W" x& d K: S9 g# s; i
sns.distplot(data["Precipitation"].dropna())#要删除NA值才能做分布密度图 K* q F- }. {& T
plt.title("分布密度图")- [+ |6 U; N0 N1 H: X! B
0.27360760671177387
- e0 b1 c4 B+ M/ A: w/ D9 j9 I1 O
( G! l0 @1 F! e0 s! C![]()
- F3 q2 ]& _0 T& o# G5 Q" M0 _8 t& V- X. L$ X# X; O9 B
数值型变量,数据呈现右偏分布,所以使用中位数填充。 对缺失值进行中位数填充 data.fillna({"Precipitation":data["Precipitation"].median()},inplace=True)
6 D0 f: }# ^5 L& G* C# r检查异常值的三种方法- data.describe() 查看数据的描述:分位数、均值与标准差
- 基于正太分布 ±三个标准差涵盖99.7%的数据
- 箱线图(四分位距IQR=Q3-Q1,上下边界:Q3/Q1 ±1.5IQR)
K- g3 L& i+ I3 s
查看数据集的偏度: 6 ?' E3 ^( C5 w" H7 t1 M
data.skew()8 Z2 S a n* F. G' }! W
- u/ l" Z# [; e! r" U& E' F' [
AQI 1.198754
2 ^+ K5 f' z) _9 B+ [$ @Precipitation 0.273608
$ [) h# `4 F) z! g, `# g6 f rGDP 3.7614282 o) r2 C& \) D
Temperature -0.597343
4 P0 ?, E0 @: ^8 Q9 DLongitude -1.407505
/ c# \3 T# |0 c& _+ W' tLatitude 0.253563
: d9 e8 e! K2 s4 i% tAltitude 3.067242
7 Q% w7 `1 m) b- X s+ e: @% FPopulationDensity 3.125853
4 U3 C1 ~8 e7 q3 J1 t2 WGreenCoverageRate -0.381786$ G' z) ^' k0 X r' v& Z! d$ N
Incineration(10,000ton) 4.342614
2 v/ C. f7 y' {6 {8 x% b1 ^dtype: float64
6 x; ?- [3 A+ a
, e, K" Y8 Q( K H6 Y m' P1 H可以看到GDP和人口密度等都出现了严重的右偏分布,意味着存在很多极大的异常值。 下面我们查看以下GDP的异常值: - ~ E& E! I: h0 m
mean, std = data.GDP.mean(), data.GDP.std()
; o/ H3 M; w, f0 c/ E0 qlower, upper = mean - 3 * std, mean + 3 * std! H9 M6 l0 E& ]
* ]$ t2 i) E" Q3 ?2 _print("均值:", mean)3 T( b2 l) M8 t& o2 D
print("标准差:", std)
6 \" d' I/ K9 nprint("下限:", lower)
7 \- G! I* U5 V$ l& c8 g* [print("上限:", upper): V3 Q5 |8 ^, _" V4 w
data.loc[(data.GDP < lower) | (data.GDP > upper), "GDP"]
- L( U+ Z3 e' W! R) P! _
7 m3 Z& r, e( S# z* k; a8 u% D0 P4 g& s均值: 2390.9018153846161 B; E4 r0 `; U7 ~* O6 `8 b* @
标准差: 3254.8769212714341 n% G9 L; ]6 ? `
下限: -7373.728948429687
. `* Y$ \* F& n9 q3 ?" V上限: 12155.532579198918! C- w& t+ A8 p' ]6 N D
16 22968.60
' d" c ~) g' Y( v: g, U$ j! F63 18100.41
- R: \ L, e. c2 i$ j202 24964.99
2 `6 F$ C7 O6 c, q207 17502.99
/ T: f& n4 b- p5 Z4 v* r9 Z9 c& q215 14504.07
5 r! X) e" V, c! o$ [6 N! [230 16538.19 Z7 [4 }( S; [" N Q5 T1 I
256 17900.00
6 h; @- L5 z" j314 15719.721 \" j$ b e3 d' z3 H
Name: GDP, dtype: float64
* c' j( p, O0 f( q8 }# ~6 R
1 f' }. [9 v, l2 g# ]6 u( A! B5 G5 v; l+ r: [2 @ _
8 l" u. ~5 @) y
, n8 P! S/ k+ h/ o, v+ b$ t
+ D; [: R& S: l( S) r |
zan
|