- 在线时间
- 514 小时
- 最后登录
- 2023-12-1
- 注册时间
- 2018-7-17
- 听众数
- 15
- 收听数
- 0
- 能力
- 0 分
- 体力
- 40304 点
- 威望
- 0 点
- 阅读权限
- 255
- 积分
- 12802
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 1419
- 主题
- 1178
- 精华
- 0
- 分享
- 0
- 好友
- 15
TA的每日心情 | 开心 2023-7-31 10:17 |
|---|
签到天数: 198 天 [LV.7]常住居民III
- 自我介绍
- 数学中国浅夏
 |
AQI分析与预测AQI全称是Air Quality Index,指空气质量指数,用来衡量空气清洁或者污染的程度,值越小,表示空气质量越好。* T: {) c6 e9 r6 C
本文的分析目标是:
) m; E; V- t8 Y$ Z F3 @0 j一、描述性统计
}" [3 R+ K( U" i' R* u" e3 A. Q那些城市的空气质量较好/较差?空气质量在地理位置分布上,是否具有一定的规律?二、推断统计( L$ h, R% Z% I! k9 \+ G$ k
临海城市的空气质量是否优于内陆城市?三、相关系数分析
% s( q6 }! q R' a- W& B u1 \空气质量主要受哪些因素的影响?四、区间估计
$ [/ a" [* A, e. J全国城市空气质量普遍处于哪种水平?五、统计建模+ `+ G Y1 z l" h1 l8 e5 j
怎样预测一个城市的空气质量?导包并读取数据:import numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport seaborn as sns
$ ~9 ` _- {" U2 {% U" B( @sns.set(style="darkgrid")plt.rcParams["font.family"] = "SimHei"plt.rcParams["axes.unicode_minus"] = False
! K! h# T7 h0 l" c! P8 Vdata = pd.read_csv("data/data.csv")print(data.shape)data.head()![]()
5 U& a/ {* f7 r0 V9 r) T& ^
: e+ i$ }7 z4 v% m$ A数据集描述:# N+ T8 C8 O2 K1 ]* g0 R/ w3 r& C
" V/ W$ n+ z# z4 n, SCity:城市名
( N$ t6 @% i+ y; c' I5 Q% a k( g2 v- k* @ { p
AQI:空气质量指数5 s8 E6 w$ a: `7 `2 l# p, Q
8 u3 ]7 Q; _! i k; Y- JPrecipitation:降雨量
9 T8 w: O! M9 Z4 }5 T, Y7 l, T$ H6 }, x0 i9 A! S2 V4 O- v
GDP:人均生产总值0 `: K$ S# O$ v" P2 @% ?- p% C
6 s. O) z7 X% J. `8 U- S3 @8 I
Tempearture:温度: O2 \+ K. G$ V' c3 J4 M P
( k; Z$ \1 ]( }! ?Longitude/Latitude:经/纬度1 {0 v6 _" D; a: z
8 w7 Y' X+ a) s4 n5 E" rAltitude:海拔高度, m5 y" r3 P4 F' d% D
5 S; K2 B' g a6 z6 H' \; L
PopulationDensity:人口密度
" _3 E: A+ ]) F0 M
6 V. A9 j7 t9 Z+ l' u! G9 ]6 ^: fCoastal:是否沿海( e( v; C" C* K4 f0 A
7 t3 I' u8 i& H" fGreenCoverageRate:绿化覆盖率% b1 U* _9 I4 H7 y
+ C( j( D2 E) D3 H$ DIncineration(10,000ton):焚烧量(w吨)
; b# S1 x2 X% c! O+ ^6 D2 w" b8 Q0 {! R! ` m% C
数据清洗
" \# v; x6 \+ k7 D! T9 e, s检查缺失值:3 H* o: K Y) u# y' C9 _+ `
数据集描述:4 \+ Q/ f- E% p3 K# B4 b) _0 D
% u3 ~+ p0 E8 \4 d3 v2 q
City:城市名$ R6 T' S/ }$ T( ?, Z$ J
x6 n" N" X; q+ \$ R1 P
AQI:空气质量指数
0 ^" G9 A" n: i! U3 { I; B- P3 w& o" c. Z4 \" W2 Q2 W
Precipitation:降雨量
9 M% _0 G( \5 ?# h9 q# z5 g+ j* U! E
- |, n2 e% ~8 yGDP:人均生产总值
- |" E( D. m. S7 d0 l
7 f/ u8 ]8 `- gTempearture:温度! e7 f; W7 w9 e5 a: c7 G+ r
( P9 b6 ^6 v. MLongitude/Latitude:经/纬度( D# Z+ C* m4 E* i( e. \6 o2 h
3 o! s/ I0 V7 f9 DAltitude:海拔高度) J- C$ K8 b8 X
: w! ]% u3 r/ m: r8 ?
PopulationDensity:人口密度7 F q% g" D+ v: B8 P6 }6 R. A4 d6 F
5 R) o4 Z4 r+ X1 z/ E2 ?( hCoastal:是否沿海! R- O- o S N# u8 _9 u5 t+ _4 s0 m
! Z4 R0 y, S2 X+ d9 u+ @+ y$ J- @
GreenCoverageRate:绿化覆盖率6 B, C! g' b2 K% W: N8 p9 \2 R" c0 }
7 p; C1 F( U. M$ F/ BIncineration(10,000ton):焚烧量(w吨)) X3 z' t) x2 G7 H3 T
L" u+ b: z3 ]0 j& s6 Y数据清洗
: a& d; G9 y- S9 O% ]检查缺失值:" r* S2 ]6 s0 `- s7 N% I" f
data.isnull().sum(axis=0)
; L$ |; b+ `% y# A% v
N7 H% L, c5 d. A d8 p4 L: } R5 J* |: r( E
![]()
" R, A" `6 t) P& _
2 v2 [8 }3 R8 B) U查看含缺失值列数据的分布:9 V% R2 t; Y* k9 o' j
#print(data["Precipitation"].skew())#偏度 % Y0 k" d9 v' i. A4 Q
sns.distplot(data["Precipitation"].dropna())#要删除NA值才能做分布密度图
: v) \0 F' b% Iplt.title("分布密度图")8 y0 ?) K$ [; z) t+ n9 h" @$ B
0.27360760671177387
& y: ~& u5 P% Z4 B+ }7 [) w
8 Y1 Z& U! R+ z![]()
/ i' l: x( M. [) e& u; r$ R8 o1 ^* C! T+ }4 k1 \
数值型变量,数据呈现右偏分布,所以使用中位数填充。 对缺失值进行中位数填充 data.fillna({"Precipitation":data["Precipitation"].median()},inplace=True)3 ^1 B8 @0 ?7 D9 `0 N" ~
检查异常值的三种方法- data.describe() 查看数据的描述:分位数、均值与标准差
- 基于正太分布 ±三个标准差涵盖99.7%的数据
- 箱线图(四分位距IQR=Q3-Q1,上下边界:Q3/Q1 ±1.5IQR)
; \* `; L: ?# |
查看数据集的偏度: ( W1 L' k6 S. p# R$ m
data.skew() m" X2 k/ V, T3 u2 U8 D
0 ~: F ~. n' r% jAQI 1.1987545 ?7 _' i) I ~8 \4 j9 V: c
Precipitation 0.273608
2 G- Y) e9 g! @6 aGDP 3.761428
( a% e Q1 E3 YTemperature -0.597343* C* e- r \, _0 c/ S/ R3 S; F5 f
Longitude -1.407505
Y; `% M3 C8 [Latitude 0.253563
f. ^) |8 Q6 N9 ZAltitude 3.067242
9 e; s- `; p4 M( O) }PopulationDensity 3.125853/ p# i1 M% e1 o% c5 ~9 @' r8 z
GreenCoverageRate -0.381786- E7 P+ ^$ b0 a2 |- _/ [& |* M
Incineration(10,000ton) 4.342614* s% ~/ q* h0 @8 s' C5 t
dtype: float64
! r O' B# c+ c2 S. ]" e( p. |
' |8 A' h# N4 l- i; A可以看到GDP和人口密度等都出现了严重的右偏分布,意味着存在很多极大的异常值。 下面我们查看以下GDP的异常值: 1 r: s2 j. l( m O' s* a; ~
mean, std = data.GDP.mean(), data.GDP.std()5 j! h7 h% b, L) e
lower, upper = mean - 3 * std, mean + 3 * std
/ X5 ?, j3 {/ T" X" u9 g; a1 b+ w; p( G! o$ S/ i
print("均值:", mean)
6 h' M2 Y3 O8 s; L9 H; q2 b9 K9 r# Iprint("标准差:", std)' B ] |1 {3 _
print("下限:", lower)
0 i8 M% M2 R$ V% b6 M* u4 mprint("上限:", upper)/ O$ \* v: ?6 D: \
data.loc[(data.GDP < lower) | (data.GDP > upper), "GDP"]/ }; u" o' q9 M4 }/ T, I
/ C) J- M0 \% c' ]* H2 m
均值: 2390.9018153846169 ]; v- t9 q+ |1 V3 T: x# Y1 |) e) G
标准差: 3254.876921271434' N) F( O* l @7 B! ^0 a* ?
下限: -7373.728948429687
& W! C: [8 C+ K3 v+ J: M上限: 12155.532579198918# e! ]0 E: F( w+ P5 P+ g7 t
16 22968.605 H5 L- V( P! F. a: i9 Z
63 18100.41
7 |5 s/ I( y* u( X5 P202 24964.995 _* O1 b( R* o- t2 ~( ^2 p4 |
207 17502.99
3 o' r8 t) P" u0 x, ]215 14504.07
$ a0 z+ ~) ^5 M230 16538.19( P% Q& e X$ u, W" \, B
256 17900.00
) R0 `. j1 Y- S. w* f+ J314 15719.72
9 v: l- E) U6 f5 ~* f1 t$ J& kName: GDP, dtype: float64/ Q5 S" h0 ]/ u" X
4 r, R s/ }/ O! ], H5 t8 b. v
( a0 j, T' A$ j5 t ~+ s
" z$ h8 _& ?. B" u" s6 m' g9 B# W" L) M2 H/ M+ ^/ T" _
u1 a( g$ Y& z! F( z7 p
|
zan
|