- 在线时间
- 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,指空气质量指数,用来衡量空气清洁或者污染的程度,值越小,表示空气质量越好。
2 c- O9 K0 I5 y3 \本文的分析目标是:+ Z5 x. g5 z. X2 l s- _ ?
一、描述性统计9 b& m0 k2 O0 K! r! D! \- _
那些城市的空气质量较好/较差?空气质量在地理位置分布上,是否具有一定的规律?二、推断统计
; d; H8 Z8 |& `$ F. R临海城市的空气质量是否优于内陆城市?三、相关系数分析
, l( B1 X. t4 V空气质量主要受哪些因素的影响?四、区间估计* W# K2 D* o e$ K0 {
全国城市空气质量普遍处于哪种水平?五、统计建模: ~. d6 A U2 ]. |9 p+ ]
怎样预测一个城市的空气质量?导包并读取数据:import numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport seaborn as sns
8 @, A* C# @+ `8 a- \sns.set(style="darkgrid")plt.rcParams["font.family"] = "SimHei"plt.rcParams["axes.unicode_minus"] = False
: x7 \% t3 ~8 ~data = pd.read_csv("data/data.csv")print(data.shape)data.head()![]()
7 w' |$ d N, [8 V" `6 @# K) k+ Q. I8 Q; U0 k% k U6 W O, W
数据集描述:
, C& o' u3 S& u K2 E2 i. ^/ L* b
City:城市名
% t' k5 y0 w8 U" q6 ?6 l/ P
( @% m- y/ [% r, i( o6 T$ TAQI:空气质量指数6 [$ P* E+ {4 ~! n: Z9 u0 H
/ t" z0 A* Q% t7 z" b- gPrecipitation:降雨量$ B7 `2 C5 `9 R% W3 p4 W2 g
8 Z9 O& I, \. K+ p- [
GDP:人均生产总值% i! w5 W# _) Z6 N( [( y
; g% N! C! K$ s! p; B: {Tempearture:温度. m1 K5 J; d1 d9 c" k
% u2 c9 I( ~# r9 A9 I
Longitude/Latitude:经/纬度
( a' m7 V0 W# L1 ?; a; A" u- l8 g. Y; j
Altitude:海拔高度+ K" A n1 m% B. a9 O6 @0 N. }
9 B/ \% ~0 f s+ V
PopulationDensity:人口密度
7 a' w6 l. A* }2 {+ q
: l; S' z' [9 P% }( Y! ICoastal:是否沿海
: S9 N7 c6 S, \1 n* |; a$ T7 O! ^; [4 P1 c; M4 y1 _ r' ?
GreenCoverageRate:绿化覆盖率
4 c. m6 k L' c' u2 Y
4 ?" {1 _/ N* i2 iIncineration(10,000ton):焚烧量(w吨)( p' A& I4 h' _0 f& d$ u5 N
$ z- w% E9 D! I# D; \0 Q+ E
数据清洗
: N" |2 M$ V' M( r% V; M0 g检查缺失值:) |3 w) v7 u/ ?: D5 ^+ d
数据集描述:
6 t* K( o& S$ _ b3 q3 P
% z: U! K+ v2 @City:城市名# R. D8 A/ i% s7 b- n! c
5 r2 I; X$ c0 r q5 i% @0 f
AQI:空气质量指数$ U- o9 D5 V+ A' n& O+ a [8 k
1 L- m% D& r L4 _/ A( J$ P* CPrecipitation:降雨量. \, M2 N) b- j, i7 D I( U6 ~
% d2 A! v" a5 o
GDP:人均生产总值
2 a _1 J5 `" t) _& [5 R& i5 U" K9 K' q+ g
Tempearture:温度3 V. }6 r6 n" \5 F( z
* X4 l* W5 `, @ _9 H* R3 TLongitude/Latitude:经/纬度
; l" y% h7 X: L8 w! x1 q0 w
! Q, d# V, b$ h+ }/ F$ ?Altitude:海拔高度
4 N( s# I; ^( e/ I. }) `
# |2 K; z' Y# U/ p/ s% K/ ~# gPopulationDensity:人口密度
- I1 g& _1 U# Y. V8 P, S C: ?4 Z) @& Z6 M$ y0 D( J h
Coastal:是否沿海% s& p6 \/ F3 M. A# w5 N
! {- J2 G9 ^9 C& ^! i
GreenCoverageRate:绿化覆盖率
3 D6 I2 X+ s( F7 M: c& z0 C' g+ ^
5 I h- Q: S% e/ k3 w" IIncineration(10,000ton):焚烧量(w吨)
" ]; Z$ S# M+ H2 a& t, T0 F
2 ^0 g5 E* g2 z数据清洗
4 H1 v7 |: x! e, u# V' I, I9 d" A检查缺失值:. M5 S, f+ y, t+ ~/ ]
data.isnull().sum(axis=0)
' O- u, A% Y2 p, Y- z. X- `. o9 [# Z; R( o Q0 o
: O a% A2 e- Y, k$ z# R& A![]()
! N1 u- M1 R( ^) \
: ~1 B- Q1 {3 _( X0 G$ y查看含缺失值列数据的分布:
- K' s. d/ W, U: y# M0 ^#print(data["Precipitation"].skew())#偏度 5 u" _% G3 T( Y# k5 d1 t
sns.distplot(data["Precipitation"].dropna())#要删除NA值才能做分布密度图
1 g; A; R( {" s5 w% g. x! Dplt.title("分布密度图")/ {$ A! c- J. h4 e7 `+ ]3 j7 F U
0.27360760671177387$ ?' D; ^5 r% U( q4 z& H
5 y% M; |+ T1 x) W
; Q9 [. ^# o* h# h4 _
/ ?: P8 a) m7 S数值型变量,数据呈现右偏分布,所以使用中位数填充。 对缺失值进行中位数填充 data.fillna({"Precipitation":data["Precipitation"].median()},inplace=True)
8 {9 n& c A6 R& \ C5 p检查异常值的三种方法- data.describe() 查看数据的描述:分位数、均值与标准差
- 基于正太分布 ±三个标准差涵盖99.7%的数据
- 箱线图(四分位距IQR=Q3-Q1,上下边界:Q3/Q1 ±1.5IQR)8 \" F* ~/ V6 b; I% s
查看数据集的偏度: ; m, K$ C4 ?, S4 f& z3 A, A$ Y
data.skew()
9 ?( I' ~9 D4 w; z; o u& A; g2 [6 `# o- J
AQI 1.198754
/ d( K- U z' _+ j0 J( J6 sPrecipitation 0.273608
; [3 Z/ _% A# ^" s& fGDP 3.761428
. _5 S+ g Q6 ]3 S4 rTemperature -0.597343. V) @0 w) I f# ?0 o3 c
Longitude -1.407505, M0 K5 \+ c! a- @: w# H, Z
Latitude 0.253563
1 ]9 q! S6 s U }Altitude 3.067242
9 p; C0 U. z# y5 ~/ LPopulationDensity 3.125853( a& v; ]: L6 w- @; F# V
GreenCoverageRate -0.381786* n' {+ t2 S4 y1 A1 a$ u7 a
Incineration(10,000ton) 4.342614
: D! e4 P1 J8 f% r0 \6 U3 udtype: float64
1 |, ?, S. ^ [0 N) u
! k) M" W) E) d可以看到GDP和人口密度等都出现了严重的右偏分布,意味着存在很多极大的异常值。 下面我们查看以下GDP的异常值: 2 z \" V9 E+ x' r4 _; m( M
mean, std = data.GDP.mean(), data.GDP.std()
$ L" \( ^- l: B9 V1 a& hlower, upper = mean - 3 * std, mean + 3 * std4 I0 x4 S0 `8 k/ k5 ~$ C; C
; I+ r- y+ [5 w3 G
print("均值:", mean)
" X+ Y* o( D% j1 [# Fprint("标准差:", std)2 ~( c, n) Z* G4 a
print("下限:", lower)
% X( F6 b0 [: X9 k* C) f" jprint("上限:", upper)
4 a4 K* W6 v* ^0 j" {5 P1 u: j7 J& d/ pdata.loc[(data.GDP < lower) | (data.GDP > upper), "GDP"]7 g# C, _' P/ F
) E9 ^ A9 D9 F* Z" G均值: 2390.901815384616
9 b" C9 R P1 e标准差: 3254.876921271434
4 e/ g; h0 e4 b0 h4 E% E下限: -7373.728948429687
; u/ ]2 v( D% F/ d上限: 12155.532579198918
9 ? B( O6 i9 [& S' Q+ e16 22968.60. U) E- W: U$ i& ^% p1 g1 { W
63 18100.41
8 q& T+ k5 q* d; U202 24964.991 I7 @8 W" B5 r# z5 Q( \+ Y
207 17502.99
0 Q7 |* }6 }9 l& L215 14504.07
+ ~- J" |4 V/ D1 {: Z( X230 16538.19
9 u% U5 O% T" ~; ]256 17900.008 m# F. U# Z8 r( X2 W: w I
314 15719.723 K; U' B8 z' O! ~) t5 ^
Name: GDP, dtype: float64
. `* ]0 ^2 S6 a5 a- J- W+ Z7 z" W3 _
3 y# Z( t8 u! b ]1 @
; m! Z0 U& D, {0 v0 X0 |) s
% t4 b* b* H/ `. J) v/ z5 [- a$ D
4 J5 P: W+ v4 E: S& P& d5 O+ M
|
zan
|