- 在线时间
- 514 小时
- 最后登录
- 2023-12-1
- 注册时间
- 2018-7-17
- 听众数
- 15
- 收听数
- 0
- 能力
- 0 分
- 体力
- 40343 点
- 威望
- 0 点
- 阅读权限
- 255
- 积分
- 12814
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 1419
- 主题
- 1178
- 精华
- 0
- 分享
- 0
- 好友
- 15
TA的每日心情 | 开心 2023-7-31 10:17 |
|---|
签到天数: 198 天 [LV.7]常住居民III
- 自我介绍
- 数学中国浅夏
 |
AQI分析与预测AQI全称是Air Quality Index,指空气质量指数,用来衡量空气清洁或者污染的程度,值越小,表示空气质量越好。+ M" }4 K5 o& f7 O3 q; m3 M
本文的分析目标是:/ w/ q: t8 ~) M& H& M
一、描述性统计
; h' u. X8 J( ~! g那些城市的空气质量较好/较差?空气质量在地理位置分布上,是否具有一定的规律?二、推断统计- W9 u# t4 O1 P! D# t
临海城市的空气质量是否优于内陆城市?三、相关系数分析& C" u% b; i1 b* h6 D
空气质量主要受哪些因素的影响?四、区间估计
& y+ j* m. J5 i! b0 x全国城市空气质量普遍处于哪种水平?五、统计建模% f" C3 k+ Q/ g4 k2 S% [2 K
怎样预测一个城市的空气质量?导包并读取数据:import numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport seaborn as sns
7 x$ x0 L( e( n7 Xsns.set(style="darkgrid")plt.rcParams["font.family"] = "SimHei"plt.rcParams["axes.unicode_minus"] = False
2 Q- {$ ~$ n6 @: hdata = pd.read_csv("data/data.csv")print(data.shape)data.head()![]()
; h8 Y2 u9 L' j. o, H, I1 G% |
% g5 j3 t* ~8 ~6 }0 F8 } o数据集描述:
0 Y8 l. I8 X5 `0 K" s/ y6 s, F+ x! J- N2 F
City:城市名
% ^6 W8 t ]8 \. W
! X! ?- s, b, Z; [3 V$ iAQI:空气质量指数
' R7 l% Z: Z: d. I2 ?
, l% N/ G6 a ]( a$ l- kPrecipitation:降雨量
) u1 L* |% H: Z' [
, O; A: F4 R2 | t. Q; G7 wGDP:人均生产总值
$ S4 Z1 z" ^1 k) `! \+ c ^) Y; O- p3 E5 P( `# f2 O& h
Tempearture:温度
. P) Q5 F8 d4 O( r7 [( E' c- a/ w9 m \2 a8 J
Longitude/Latitude:经/纬度
( W$ s( ^/ R7 [8 w1 ]2 E4 i& q
& s9 f7 ~4 d* s r; |. |3 r! XAltitude:海拔高度; t2 {4 K P) u1 }1 T
. d1 m! s& N. m' x5 B! U8 {3 \
PopulationDensity:人口密度
* A" A0 o/ [, o6 H$ [6 }- e, O# I4 n' R- k( @2 E
Coastal:是否沿海
, a7 z8 j. d1 f! R
5 s' e. q% x0 T0 wGreenCoverageRate:绿化覆盖率( m9 h0 Z& E& ^
[* d5 Y# ^* Z9 q2 OIncineration(10,000ton):焚烧量(w吨)# \: [) v$ G" f. ]$ f# B+ p. ?
0 l/ w4 a6 @) |" S# @7 X0 S
数据清洗6 {" z. b4 ^: B/ V+ {
检查缺失值:
; V$ W6 L# H1 N3 t数据集描述:
* |, j4 x9 M0 N& F8 d1 w# a$ G8 n( f2 Q( z0 j/ o6 Z2 W
City:城市名! C$ T& M$ k7 |' l ?* w2 g! z8 m! e
6 b, u3 o" x) k+ bAQI:空气质量指数
- R9 M D* y& X. L' r4 H1 M; |# `$ D) c; c
Precipitation:降雨量
; c4 v+ ~: F. L- M" w9 ?7 b# v, o3 W4 i6 I
GDP:人均生产总值
) p8 K) R1 ~- V9 X! c7 u
- N; W2 s2 Q M) G8 k% D0 |Tempearture:温度
" D. z+ ]% a* _; H: _1 r1 o. }* C @0 F. X0 B2 T$ m
Longitude/Latitude:经/纬度
# m8 `. v# R$ q( G$ d' I5 I% b: G: A$ q" k+ g
Altitude:海拔高度
4 c. J% U. a% z2 T5 _" z8 P7 W' ]+ @. \& N7 l& |
PopulationDensity:人口密度4 {* d( ^9 i1 M: a1 A+ E; Y
7 F# x. ?& K& m# wCoastal:是否沿海- r8 O! H8 ]5 I! R* b( b
$ C- j) z4 y o O! c! @
GreenCoverageRate:绿化覆盖率3 E! x* p; c' W& U
5 I- v, O$ o" P4 {% G: i. J
Incineration(10,000ton):焚烧量(w吨)1 j! w8 q: \- x9 D& J% M
, \3 D2 \" E$ `$ O9 T0 I
数据清洗2 b9 ^7 j4 S. t) U( ~* X
检查缺失值:
4 A& h' F! Z4 S! l3 D0 xdata.isnull().sum(axis=0)3 H$ T7 ~0 G+ s7 x; y
# F- Z# v q1 @5 B( q- p& k, V) W4 r2 s, i+ {) g( n1 j
! t) x4 n( [+ U' P: j" h0 c
! D& M' l9 @1 w$ [查看含缺失值列数据的分布:
; i- }0 M: q$ q$ m: l#print(data["Precipitation"].skew())#偏度
f1 X: @8 M. J2 E0 M" N L7 _$ r8 _sns.distplot(data["Precipitation"].dropna())#要删除NA值才能做分布密度图* k- t$ r7 C: j& ]
plt.title("分布密度图") m' b( I, q, b
0.27360760671177387. v, l" B6 ~: g8 n1 N
; c1 M0 U* B3 r2 |) b% N1 I' G![]()
' x' J, {! R; z$ z" ]7 E- A8 K; x1 n2 [
数值型变量,数据呈现右偏分布,所以使用中位数填充。 对缺失值进行中位数填充 data.fillna({"Precipitation":data["Precipitation"].median()},inplace=True)
' \7 H3 H( c7 O( \: w( O+ x, A检查异常值的三种方法- data.describe() 查看数据的描述:分位数、均值与标准差
- 基于正太分布 ±三个标准差涵盖99.7%的数据
- 箱线图(四分位距IQR=Q3-Q1,上下边界:Q3/Q1 ±1.5IQR)9 c. ]: y6 F, W, A! H7 W
查看数据集的偏度:
3 w+ N+ m9 M$ y$ k- x& j: _data.skew()5 Q4 A, i6 e2 J: m. C% @
@( \4 P+ G; O% r% T& |3 ^AQI 1.198754
# L6 m i1 D% s/ \$ j3 jPrecipitation 0.273608
0 N _9 _$ f9 _2 q9 WGDP 3.761428
8 P) B( p) Y! P5 `5 j, v, MTemperature -0.597343
! ?6 I# g4 r5 \, \Longitude -1.407505
0 n3 Z: r0 U& E4 }Latitude 0.253563
% J0 D: j% @' @" ~7 \Altitude 3.0672427 a' l1 n. O5 T8 i
PopulationDensity 3.125853
$ f6 L! [8 }9 [* Q' E% p; zGreenCoverageRate -0.381786. u' L8 S! G+ l7 W
Incineration(10,000ton) 4.3426145 I4 O: E" b( G7 n% i! B
dtype: float64
' Y( a e1 G* r' k+ U+ m
8 v" h0 J3 B/ c) w" l可以看到GDP和人口密度等都出现了严重的右偏分布,意味着存在很多极大的异常值。 下面我们查看以下GDP的异常值:
2 A l& j8 [" O: V; ]mean, std = data.GDP.mean(), data.GDP.std()& ~/ S8 c( Q; u. C3 B" Q
lower, upper = mean - 3 * std, mean + 3 * std& H2 U i" E% @2 [+ d
2 I$ |0 P7 n' T
print("均值:", mean): e7 ^, w* @. R' E9 a* ~4 `
print("标准差:", std)8 g( S3 K' X1 ~
print("下限:", lower)
6 G/ c6 s" y; B& b' Rprint("上限:", upper)0 L- z3 F$ W; \4 z+ d5 f4 w; `4 \
data.loc[(data.GDP < lower) | (data.GDP > upper), "GDP"]
" @0 N6 ~ I8 R" n, t% V8 U- u/ D4 Y ?- P; A. @3 x
均值: 2390.901815384616
3 j% p4 k1 u. @7 ?7 I! L+ ]- r标准差: 3254.876921271434
+ R7 j9 c6 e/ Y# w下限: -7373.728948429687/ F8 x) A% e U+ O- q
上限: 12155.532579198918# I. g. O7 N" \" k0 V
16 22968.60
8 Y( d& {3 }6 [1 C4 D7 Z# F" Q63 18100.41
. i: k3 ^; f3 p+ S$ W8 j! l2 t202 24964.99
# {9 f n# }3 R9 c. O207 17502.99 X! t& P: e! }# V) j
215 14504.07/ B$ h/ w; |$ T+ t3 j8 s
230 16538.191 l6 F7 b* f- w* h, a& v3 X
256 17900.00* r: Y6 H: E j# r. h$ M% k
314 15719.728 f; Z! ~1 r4 c0 I8 X
Name: GDP, dtype: float64( E& m3 z, g0 @$ B
" F* _2 g0 s' j, A: b; Z
* a i5 i& Z% p. T9 A- e& C" U3 X. D, D' x4 I
5 _! @/ A" G$ |/ ]4 ]/ a
6 @. I2 o9 w; K( g& \# i
|
zan
|