- 在线时间
- 514 小时
- 最后登录
- 2023-12-1
- 注册时间
- 2018-7-17
- 听众数
- 15
- 收听数
- 0
- 能力
- 0 分
- 体力
- 39393 点
- 威望
- 0 点
- 阅读权限
- 255
- 积分
- 12513
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 1388
- 主题
- 1158
- 精华
- 0
- 分享
- 0
- 好友
- 15
TA的每日心情 | 开心 2023-7-31 10:17 |
---|
签到天数: 198 天 [LV.7]常住居民III
- 自我介绍
- 数学中国浅夏
|
AQI分析与预测AQI全称是Air Quality Index,指空气质量指数,用来衡量空气清洁或者污染的程度,值越小,表示空气质量越好。
5 T5 S# d6 X0 {0 U. B& w本文的分析目标是:
( l$ T( p( k& Y一、描述性统计
3 G4 Y+ |5 p4 {+ F0 b! m那些城市的空气质量较好/较差?空气质量在地理位置分布上,是否具有一定的规律?二、推断统计
% b2 c& V$ ?% U2 g- M0 D临海城市的空气质量是否优于内陆城市?三、相关系数分析
; m- l% J% M) |: H. _0 R空气质量主要受哪些因素的影响?四、区间估计0 C+ ~4 ^( z! g" N
全国城市空气质量普遍处于哪种水平?五、统计建模
0 Y9 V/ c) {7 h# ?. P! Q7 x3 p怎样预测一个城市的空气质量?导包并读取数据:import numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport seaborn as sns
U% ]: L7 n5 n* V! esns.set(style="darkgrid")plt.rcParams["font.family"] = "SimHei"plt.rcParams["axes.unicode_minus"] = False
$ H4 p+ A. ]" A# T" {! v/ g( T8 adata = pd.read_csv("data/data.csv")print(data.shape)data.head()) \4 [4 E( I v' M1 y
8 ~! ~; ]; ]0 g' y- \
数据集描述:: C% I5 M: j9 N6 X4 j
" e/ D1 [% H1 d- F, e5 I5 vCity:城市名
; I" T% d7 Q6 D
6 [6 t* i+ l/ j( hAQI:空气质量指数
) h1 P6 w" R6 f& n7 H, P9 l* [6 R; @
Precipitation:降雨量
* Y4 b9 T6 \6 b9 G; }; V% E/ H: u( q; S5 i
GDP:人均生产总值; [: \1 F- r5 a- K& A
. h: {$ S5 |" ~" b. RTempearture:温度) V9 P& x$ ]4 M. Y
/ M' `- t* y% s; P7 k- P \0 OLongitude/Latitude:经/纬度+ y5 {( p* u4 d
; u" R8 ]. \1 F* q. g5 |Altitude:海拔高度
( S; ?& ]2 h. H! E
, d! t8 w* c8 i; r$ C+ C/ _2 ]PopulationDensity:人口密度) h& L- E- k9 g2 k- t
, \' ]3 n" v8 f+ V* GCoastal:是否沿海
( J+ w% N% n% r7 h5 Q
( v9 \* U! b: Y; J: hGreenCoverageRate:绿化覆盖率
4 o) ]# T4 Y7 H% _% f8 `, q. P5 v6 p7 Z t) t8 V4 p$ v
Incineration(10,000ton):焚烧量(w吨)
# z; B2 k: {! y/ g8 Q7 Q5 \1 _" r3 T
数据清洗
b2 ~0 M2 |) ^# t) r检查缺失值:
. A+ f* [8 G) R1 V数据集描述:$ `/ ]" j+ c, C/ f2 s
( Q9 G% H4 k$ W: p& z- B% RCity:城市名
9 }4 P& F8 y1 u3 p/ {3 x5 j1 i) @/ G8 }4 J. X4 _5 I8 q! ]
AQI:空气质量指数
V0 e: y" i3 U! p8 O1 H" Y: {+ c$ l: g2 r
Precipitation:降雨量
. x0 a5 H- Z6 u8 I
' C2 X) A+ f* z6 oGDP:人均生产总值. p- ^* G& N/ L6 S$ B3 _
6 F* U6 e" T) G" m6 T9 STempearture:温度$ f0 z" m. k4 Q( I+ d
. ]! Q2 e# g0 L5 c8 z& V2 g
Longitude/Latitude:经/纬度1 h+ E1 z) C/ H0 A/ z5 j* a8 k) p8 _1 {
0 E0 z( U, b: g4 z% n1 q# s
Altitude:海拔高度
* j% c# k. Z4 W1 z; B! m& m2 d D5 ~3 d$ g5 J
PopulationDensity:人口密度
8 s& o, k- d. _1 O1 \3 T0 ^: n. @: v* p& f
Coastal:是否沿海7 J7 d# Z( N9 F3 i# V
' l5 g* d3 v A5 `5 s' rGreenCoverageRate:绿化覆盖率) L; Y! v9 w" Y# h- L
7 ^4 l& t% Q2 R3 o% e2 ^
Incineration(10,000ton):焚烧量(w吨)
8 ?& H9 X5 S1 h1 t
; K) \) N. u/ Q' `5 x, k5 V数据清洗$ d( `' n3 U8 z: G7 w% V
检查缺失值:9 `; F- l2 X/ H5 |8 u
data.isnull().sum(axis=0)( t8 M# t6 M+ F2 |# j" E9 F
; k2 B( g$ f4 T9 r7 I
- @' l6 p# @! _' d: \4 s
6 r# c" S* X3 X" s2 x
7 s# O% w, M' `$ P8 f
查看含缺失值列数据的分布:
9 j3 x8 i9 ^) Y+ @/ U) B#print(data["Precipitation"].skew())#偏度 : z. d* w- G3 |( z0 ^
sns.distplot(data["Precipitation"].dropna())#要删除NA值才能做分布密度图
* u9 g V* g; i1 t: R! z: O5 j3 q7 ^0 Fplt.title("分布密度图"); Q- g }% W/ s: S
0.27360760671177387
# c {5 q7 Q3 w C5 ^
* s0 I2 m- f" F4 R' f) B, J1 Z: Q# A( H/ Q |" ?" B
. m* y% A2 M* D' q
数值型变量,数据呈现右偏分布,所以使用中位数填充。 对缺失值进行中位数填充 data.fillna({"Precipitation":data["Precipitation"].median()},inplace=True)
, \0 j2 s! N" I$ [检查异常值的三种方法- data.describe() 查看数据的描述:分位数、均值与标准差
- 基于正太分布 ±三个标准差涵盖99.7%的数据
- 箱线图(四分位距IQR=Q3-Q1,上下边界:Q3/Q1 ±1.5IQR)
; {6 H$ x: [, U; o, U* }- y
查看数据集的偏度:
3 R |4 S- F" l4 R% H( M% zdata.skew(); I; T. M' P- Q4 I: ]- j
' F2 j' S0 M; d5 {
AQI 1.198754
& \# t- A% Z5 r! ]7 K8 aPrecipitation 0.273608% |: [0 n& C' b( ?9 J6 E
GDP 3.761428
1 v+ y( q8 t4 N3 ^9 R2 k1 XTemperature -0.597343
2 b5 [6 q! B- ~: JLongitude -1.407505- v6 H$ I* k r# A! Y
Latitude 0.2535632 p6 O' @. g: t- ^4 G+ i1 i
Altitude 3.067242
7 W5 s1 c4 z+ H% uPopulationDensity 3.125853
( q4 I+ s8 S: a% C. WGreenCoverageRate -0.381786
3 C' p1 W9 D P1 f9 Y- F9 t# ]Incineration(10,000ton) 4.342614) b8 e1 H( s6 P2 |
dtype: float64
+ N9 K; |! |9 @7 [! Z
7 I# h7 O. s( F0 j可以看到GDP和人口密度等都出现了严重的右偏分布,意味着存在很多极大的异常值。 下面我们查看以下GDP的异常值: 6 n$ ^' S, k/ J1 `8 A0 l2 K
mean, std = data.GDP.mean(), data.GDP.std()
7 U2 r; C* M' m" ~0 K! d$ n" m+ klower, upper = mean - 3 * std, mean + 3 * std9 ?, d" w9 L0 y+ i+ ^# s2 L; B9 B5 Y
- D: h* T( W4 ~6 |6 {( x
print("均值:", mean)8 P& q! R4 Q n) K! Q* i7 x9 ^
print("标准差:", std)4 R2 D2 n8 s$ e2 F
print("下限:", lower)4 O1 L% g+ x( N
print("上限:", upper)5 Y+ |' U% h/ M" _/ X
data.loc[(data.GDP < lower) | (data.GDP > upper), "GDP"]
% o1 u* U$ X* z$ {7 ?+ T; \2 B. v7 O2 k, E4 p! s9 H) U- g3 s
均值: 2390.9018153846169 g" {. X0 \/ }2 u4 g' P
标准差: 3254.876921271434
/ @3 K9 N2 V+ M; k- ~下限: -7373.728948429687/ @- ^1 y; M L' E" i( M
上限: 12155.5325791989185 R" q% u9 R% h
16 22968.60/ z. _+ l( w' ]% x: O7 [
63 18100.41! m& a% S. N7 `8 ^6 D1 Y' I
202 24964.990 }- z* r& L+ F$ e; ~3 D" V
207 17502.99
, p3 z' ^8 _* T/ E+ j3 o' H215 14504.07
2 H5 b0 y; ?$ B3 k1 L% p: m230 16538.199 L8 M/ ? M8 h8 z, H
256 17900.00
: R9 R3 r0 n. B8 q; y" W* j314 15719.721 p, Z. e A. b, ~$ c( {
Name: GDP, dtype: float649 v. i/ s- E* o0 ^
0 x- c7 @4 O& M! A. X @
1 U' W1 u4 ]' e) L6 V- A" E/ `% ~
) m# C' O N+ c/ j4 N6 t% [
0 ^& k* c! b. f, r% [1 T0 ?: \4 i S8 ^7 M0 l7 x% P& G3 Y
|
zan
|