- 在线时间
- 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,指空气质量指数,用来衡量空气清洁或者污染的程度,值越小,表示空气质量越好。3 q$ W6 K. V9 L$ G3 _" ?! Q1 H
本文的分析目标是:7 U% m! T9 Q# a- r
一、描述性统计
" ^1 B! m2 v/ x7 @那些城市的空气质量较好/较差?空气质量在地理位置分布上,是否具有一定的规律?二、推断统计
# k3 n3 N5 u7 `- C& o& m临海城市的空气质量是否优于内陆城市?三、相关系数分析
( H! B4 O8 w% P: v& h. V( G空气质量主要受哪些因素的影响?四、区间估计
. E3 E! C( U- q- j) K' D全国城市空气质量普遍处于哪种水平?五、统计建模$ L& X1 R5 ^3 F% F" }
怎样预测一个城市的空气质量?导包并读取数据:import numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport seaborn as sns! ^- e* Y( V9 `& Q/ {
sns.set(style="darkgrid")plt.rcParams["font.family"] = "SimHei"plt.rcParams["axes.unicode_minus"] = False
h9 {# l" H+ D# ?" Tdata = pd.read_csv("data/data.csv")print(data.shape)data.head() 0 B& l8 |& u3 H! N
& G* a M8 b4 _% _9 i数据集描述:7 V7 z, k/ V/ e; |* I1 D/ W: s1 W% l
6 ]6 S3 d5 k8 r7 |" H V+ |! ^. b
City:城市名
( Z) M* q0 V" l; v; Z! v, m/ ?- }8 U; G4 M3 A# j: U
AQI:空气质量指数5 C( i7 {; J* y" P1 w* q$ U- [
; H4 ]+ A- o" Y+ I1 B- j6 V
Precipitation:降雨量
7 E7 p! h; T8 y5 B, a
! N4 ]9 n9 r5 WGDP:人均生产总值
8 N# H1 ~# c, V5 Z- i: e9 C1 E
! p: ?6 d+ V$ w: }2 TTempearture:温度- T; @/ I% }% Y. A8 d6 Z" K
" V+ _9 ~+ K) f, X7 W/ |4 r4 N
Longitude/Latitude:经/纬度
! G0 c8 b& G, A4 \, Z) U( x) Q- H1 d% ?) s# O7 d) z9 c
Altitude:海拔高度7 A# P# c1 e. [+ x% K
8 j) b6 d; m; R+ r V9 K& D
PopulationDensity:人口密度
( o( `0 { f8 d8 M M3 L* K( {9 h* j! g
Coastal:是否沿海
9 Y; m. `# _% i" d# c
) }0 ^6 t' I8 V7 SGreenCoverageRate:绿化覆盖率0 E2 z$ Q8 {( D0 }; ]
( E+ I3 Q' n: h! qIncineration(10,000ton):焚烧量(w吨)
- ^# \/ p6 G3 `9 B; U8 u
4 c$ O" \3 Y4 W* G数据清洗
: w! M+ f, U* U, p" {. \' J: H7 v检查缺失值:4 V0 B6 e& g7 j7 e$ e
数据集描述:
% D' @# v5 a8 U. g$ Y- `( n
% h6 s Z: r2 u, b/ z5 VCity:城市名
% k1 W+ d2 k. Z7 p( C
8 s$ F4 G* W$ p3 F% jAQI:空气质量指数8 S, n, t2 v# v7 C
t8 Q7 `" [& r( ~9 aPrecipitation:降雨量
4 G3 Z+ R& k2 }: D- j
; }; H" S( K& ~4 `- QGDP:人均生产总值# o2 O" X. W7 F6 q& s. o
2 g* W9 K* H8 z! Q; Z# a0 w
Tempearture:温度
; Q5 d* V/ Z; p; I6 L8 r' v# u$ [" t+ C% ~' a" ?& ~
Longitude/Latitude:经/纬度
3 g- z3 p [1 d( x# n6 r+ ?: o, i' Y
Altitude:海拔高度
3 X1 {* E9 y |- ]* v* N
0 E$ S8 b& {1 I6 p1 M8 |/ CPopulationDensity:人口密度 N4 |* K2 o u+ E4 Q7 ?5 h
- K* E/ Y- `$ H- {! vCoastal:是否沿海
* j! Z3 c' _! n0 z5 m' p- V( X. H- U0 H& h( r* u5 Q; e
GreenCoverageRate:绿化覆盖率
3 ? w' z: r% Z: T: i3 z$ @+ @
! ]: @/ r& U4 y. dIncineration(10,000ton):焚烧量(w吨)
M A7 M: d6 N; k$ f4 J; y% P/ m1 x: m
数据清洗
7 B3 M3 A: Z; B6 _( |检查缺失值:% A S* ?0 S. P& B& a4 q
data.isnull().sum(axis=0): G% _" ^0 ~7 }" Z m! G
! P% k4 I$ Q2 e! C; i1 l: v1 n6 u. Q
9 J1 C2 n; j1 H( ~: k$ A ) O# k. I# S7 G1 y" F1 @
3 M7 o6 T+ Z. Z6 b+ D* v4 ^查看含缺失值列数据的分布:! k4 ~5 Y) J/ N# u
#print(data["Precipitation"].skew())#偏度 $ R: {) \3 }3 E5 u) k
sns.distplot(data["Precipitation"].dropna())#要删除NA值才能做分布密度图0 ^3 b0 B. p! v& r1 U
plt.title("分布密度图")) P* `" X, ?8 y7 \
0.273607606711773879 y5 G# k$ k- Q# G
4 r6 S5 f- O3 r& v7 V![]()
% d9 O7 j `) J6 W4 Y) Q. {: O
! r6 Y) @9 N6 k, B/ `5 L数值型变量,数据呈现右偏分布,所以使用中位数填充。 对缺失值进行中位数填充 data.fillna({"Precipitation":data["Precipitation"].median()},inplace=True)
- R3 o* A: E9 t% \# @3 @检查异常值的三种方法- data.describe() 查看数据的描述:分位数、均值与标准差
- 基于正太分布 ±三个标准差涵盖99.7%的数据
- 箱线图(四分位距IQR=Q3-Q1,上下边界:Q3/Q1 ±1.5IQR)
+ t* ?2 X' i4 I, u& S( y
查看数据集的偏度: ) l3 Z+ f0 @& G' f. `2 E
data.skew()
; V: c e- _! ^2 f, u+ q$ J1 j: c) r) |2 q$ w8 c. [* b; \& Z
AQI 1.198754
- K0 ?! M: z6 RPrecipitation 0.273608
! y% ~/ a: i: k: W& P6 X3 bGDP 3.761428
1 H% E8 L4 M$ ^& o# OTemperature -0.5973439 Q. c. n9 a5 ^4 s( s9 {: X
Longitude -1.407505
" F/ v9 b s+ F- kLatitude 0.253563
% n/ ^" P; z% b5 ?6 d0 p2 E ^Altitude 3.0672428 O! q8 v1 h x# p! M9 ^* n/ j2 u- V
PopulationDensity 3.125853( W/ O$ E* h6 i3 ?$ u8 m+ t) R- w1 b. |
GreenCoverageRate -0.381786
) Q1 m g/ g* Y* V6 t' i( W0 a6 @Incineration(10,000ton) 4.342614
& O; f! J C! M1 l. M) a$ ldtype: float64
# |- l' {* y2 r. q2 K3 x3 V4 m
3 q0 R3 U/ R7 f/ q2 t+ c可以看到GDP和人口密度等都出现了严重的右偏分布,意味着存在很多极大的异常值。 下面我们查看以下GDP的异常值: " Y1 W H$ L# h$ S- @( @
mean, std = data.GDP.mean(), data.GDP.std()
3 o% d& Z( k/ Xlower, upper = mean - 3 * std, mean + 3 * std
8 z! ^ _4 B# N+ U- ]# d) `- a t8 M* z0 K) Z
print("均值:", mean)! @$ s) _* J6 }1 j K8 j
print("标准差:", std)- P: j5 J9 `9 f2 ^
print("下限:", lower)& v0 J# g2 D& ` |
print("上限:", upper)3 x! `% R4 j2 x& i3 N% ?# ^4 W% l
data.loc[(data.GDP < lower) | (data.GDP > upper), "GDP"]. i0 h3 v5 C& V& n
% G* U6 V; `7 E# W# t" U均值: 2390.9018153846169 ^% i3 R0 {3 D6 h. @; z8 _
标准差: 3254.876921271434
0 x0 ~0 C$ w# n! c: Q8 {" H7 I下限: -7373.728948429687% F! O# D% U* M; b
上限: 12155.5325791989188 h f# p' o) x8 V Q' G* u! P
16 22968.60
1 X' l( ?: L" ^% Y63 18100.41
" y0 b5 t( i5 v$ H8 d8 c: P2 j202 24964.99
* T; I0 c) s" i8 i207 17502.99
/ K; ]( E/ k2 b* [8 c- m215 14504.07# K6 j( N& W' q3 E3 U, Z5 q$ A
230 16538.19
( m# N% F' B6 T256 17900.00
/ n6 j+ J. d7 N. S. V314 15719.722 l* ], J9 @: m0 o" f5 ^5 l
Name: GDP, dtype: float64$ }& _4 M; r' b8 Y( Y: P# F4 I
0 H% o! A; ` V9 s& X& D& g3 F# T: c1 x/ O+ C& q# G
! f K1 o$ a% _3 @3 X9 \
- L2 t8 V/ T! l- T) x9 n
1 f/ Z* C) e5 L" v: q4 t8 R0 w- A |
zan
|