- 在线时间
- 514 小时
- 最后登录
- 2023-12-1
- 注册时间
- 2018-7-17
- 听众数
- 15
- 收听数
- 0
- 能力
- 0 分
- 体力
- 40222 点
- 威望
- 0 点
- 阅读权限
- 255
- 积分
- 12778
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 1419
- 主题
- 1178
- 精华
- 0
- 分享
- 0
- 好友
- 15
TA的每日心情 | 开心 2023-7-31 10:17 |
|---|
签到天数: 198 天 [LV.7]常住居民III
- 自我介绍
- 数学中国浅夏
 |
AQI分析与预测AQI全称是Air Quality Index,指空气质量指数,用来衡量空气清洁或者污染的程度,值越小,表示空气质量越好。1 ^* x: {' W& r
本文的分析目标是:
* [& t3 n1 X& D, e# A, I4 W( x一、描述性统计% z, s# Z: a8 @& l \3 o" s$ _2 W
那些城市的空气质量较好/较差?空气质量在地理位置分布上,是否具有一定的规律?二、推断统计; ^; V" N' ?* g, f+ {) M
临海城市的空气质量是否优于内陆城市?三、相关系数分析& a9 E. I o5 a% v" F
空气质量主要受哪些因素的影响?四、区间估计
# w' S l& o1 N4 k. a全国城市空气质量普遍处于哪种水平?五、统计建模& [$ i) y7 R/ X# H8 D9 t( U
怎样预测一个城市的空气质量?导包并读取数据:import numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport seaborn as sns
/ o A- _) g+ `& w( ^3 ?" B. ysns.set(style="darkgrid")plt.rcParams["font.family"] = "SimHei"plt.rcParams["axes.unicode_minus"] = False! c/ f- D0 b6 u- J4 r! E
data = pd.read_csv("data/data.csv")print(data.shape)data.head()![]()
% s9 l( C) I: Q. f+ H. \
+ _8 L) G2 s, r数据集描述:, v% V5 B0 V1 q8 C" K- `. V6 Y+ J
0 T* V( M; C: F8 t* [0 C5 t+ S* C9 h0 jCity:城市名: Q1 B; y4 h( T
3 b0 |+ F0 P6 K1 kAQI:空气质量指数
$ M" f; f1 H1 z; t$ t3 m; D, u* p' F2 M/ Z$ _8 K. D; d& ?
Precipitation:降雨量* [( N- z$ {/ G5 E: L5 V. ?1 V0 S0 v
3 G, V5 a: d; K% o. V% LGDP:人均生产总值% b; Q, t/ q) U3 z
; K. s% C: m) R! u
Tempearture:温度
+ u0 ?. b, C6 Y* v- {) B1 N) W/ x+ X) w" a3 L" L. D& C' Z
Longitude/Latitude:经/纬度
% {- x+ E0 e+ N
* p. V$ ~1 q! Y* tAltitude:海拔高度: G$ T# l6 f) Y
' E$ L3 k8 ?# B1 X4 y% pPopulationDensity:人口密度" L d/ ~) E- [) ?+ o8 Q& | h
/ G4 R' I; R0 B$ c: M$ ^) ^; C, aCoastal:是否沿海* l; f# h& [; d; ?) e
- D- V4 z9 a6 ]; `" u+ n* mGreenCoverageRate:绿化覆盖率. Z `' m" \+ k6 q% [! T2 ~
X( H n: P- y8 r d& g; J
Incineration(10,000ton):焚烧量(w吨)8 [. m0 R+ c, M
$ O6 S4 z2 J8 U2 e5 ]
数据清洗0 w: t4 R$ e M8 g [2 M
检查缺失值:, x0 H) [! L: I$ M
数据集描述:
2 m1 a1 k9 X1 c3 O* |8 l; c" o, L) i3 |, @/ J; _
City:城市名 w' t. S2 x& z5 E7 ^7 k7 B
3 n$ K3 ~* R9 {5 {" i1 VAQI:空气质量指数) N! w, F+ u6 {6 h. k# _
9 E9 n3 h+ Z7 H5 k! B
Precipitation:降雨量! K+ d4 n- o! D' r* T2 i3 A. r
5 K$ K" o/ P& [: R7 J9 @5 R* [* j
GDP:人均生产总值7 Y! X+ K4 O$ I
: [' N: J; w" y7 ? v, L
Tempearture:温度
2 T: x- u+ j& O* w$ I9 T% h' y' ^& Q4 V- j' _+ b! s6 B- _
Longitude/Latitude:经/纬度
% F# E2 L. G0 k7 S" l* m5 s0 J6 G3 y6 R$ J7 I
Altitude:海拔高度) `9 P1 Q W" S+ }% ]' m' N1 A
0 a; G. Q+ W4 o9 t' p, CPopulationDensity:人口密度5 t6 j4 k4 B; {0 I* B
# s# f% T6 I$ P' ?
Coastal:是否沿海. w% M5 C* m9 y. D; `( Y* r
( m0 ]4 N# ]1 Y% I J5 S0 j" V! L2 l
GreenCoverageRate:绿化覆盖率; }& ^0 w6 S/ B) ~% [! |
. f. s. E2 z9 }* D
Incineration(10,000ton):焚烧量(w吨)
% Q, R+ y; \9 x- K" B$ b; Q
' C* W! V2 J2 Z; ]" x9 Q数据清洗
" {1 i* d; |; ^1 B, a检查缺失值:/ y" l% h- ~% l: d9 r) G+ \
data.isnull().sum(axis=0)* j2 C+ \0 L& d7 k$ o1 [* Q
' ^& K m$ }! {5 W( v, f$ A
5 C- @ X" v$ U7 ]( y" A* J: ^' j 1 q# Z, V5 E# u/ Y% \" w; j
' |+ C# a9 U9 w5 e- x
查看含缺失值列数据的分布:5 ^+ E; X+ x/ R
#print(data["Precipitation"].skew())#偏度
0 N) n! H+ k9 {( B1 z, Psns.distplot(data["Precipitation"].dropna())#要删除NA值才能做分布密度图' W/ H. U1 x2 S8 b5 w/ X
plt.title("分布密度图")
/ P) P& h& d5 L* ^2 [. w e. g! V+ d0.27360760671177387& S* Q4 V) K, p* s- h3 K# B
, {# P7 y3 O4 c. V" E! q, o ^
8 \, w3 g" V" Y( Q
; D/ o) }7 M- p0 L数值型变量,数据呈现右偏分布,所以使用中位数填充。 对缺失值进行中位数填充 data.fillna({"Precipitation":data["Precipitation"].median()},inplace=True)
3 ]; L0 q7 r5 P: i( z9 ?检查异常值的三种方法- data.describe() 查看数据的描述:分位数、均值与标准差
- 基于正太分布 ±三个标准差涵盖99.7%的数据
- 箱线图(四分位距IQR=Q3-Q1,上下边界:Q3/Q1 ±1.5IQR)
: Z5 d; f' q- F& c( W
查看数据集的偏度: ' ~0 z) l+ P! G3 l3 b3 i
data.skew()4 J4 {' o* W1 L8 F5 Q) ?
& _7 L" I r, l6 dAQI 1.198754* }5 {/ w" l6 u3 M2 n& I, b
Precipitation 0.273608
6 F+ f5 U$ F, RGDP 3.761428
- ?8 I! t3 p* g; R7 L( s4 ]Temperature -0.597343
* P( i) A# c/ F" WLongitude -1.407505( j$ X& ~: z; b* p1 K* L" L
Latitude 0.253563! k6 Q; L& d6 I7 w& q; O ?
Altitude 3.067242) X! }! f$ E! @6 ^9 p! O8 P5 ~/ g
PopulationDensity 3.125853
4 X! X5 s% z0 _1 Y4 @GreenCoverageRate -0.3817860 v: E m2 O$ u: z! L. j
Incineration(10,000ton) 4.342614
7 b( B( L* P4 g }) wdtype: float64
4 b+ e' F6 a' {& m; t j" Z( A4 x2 y& t7 f& g; R1 m- `( o, L
可以看到GDP和人口密度等都出现了严重的右偏分布,意味着存在很多极大的异常值。 下面我们查看以下GDP的异常值:
% W: p8 M0 B; |: dmean, std = data.GDP.mean(), data.GDP.std()
* J. y" _! ]! z6 R2 m9 q2 M' O I9 ]lower, upper = mean - 3 * std, mean + 3 * std+ ]' X# W* u8 }: X0 y' {+ T
. ^7 V8 [2 A6 f# `8 Dprint("均值:", mean)3 ]" c6 u: I3 z; ?' L
print("标准差:", std) m6 Y& B- v5 L( u2 }/ h8 E) M
print("下限:", lower)
! t A( E$ A+ t( I9 N, @' r nprint("上限:", upper): K- \! D3 [7 @1 r
data.loc[(data.GDP < lower) | (data.GDP > upper), "GDP"]
- x8 O/ P) j. v: \. U# H. V$ Q/ W' i& S
均值: 2390.901815384616
$ m/ _3 q$ C7 v# V4 N* z标准差: 3254.876921271434
+ V9 P* P3 j; ? c. K下限: -7373.728948429687
: |. I4 b" d6 Z4 t* t( O上限: 12155.532579198918
* ?+ f5 a5 Y! `0 {6 Y16 22968.60
) ~0 x, x6 V8 A63 18100.41
% }( [# |5 I8 k3 O3 D202 24964.99, |+ L4 r8 F) V
207 17502.99
( u. t; W- s- F t0 H215 14504.07
6 x- O% m- r3 J( K230 16538.19
+ y; E9 }# A# O5 t d+ u256 17900.00# j0 [; C: j% Q, C9 I
314 15719.72
6 h, f* H, ~: V+ hName: GDP, dtype: float64+ Q. W. m& C/ F* s4 m
1 z" ?1 d: ]7 D3 |
9 Y) K. U1 c: s
" O* e% X7 T3 c* u, q, u
2 M+ _/ ]! }2 ^, J8 \
8 \& k9 W" G6 v, M, C* [$ k
|
zan
|