- 在线时间
- 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,指空气质量指数,用来衡量空气清洁或者污染的程度,值越小,表示空气质量越好。
' j5 [, a1 V2 k- D本文的分析目标是:* a/ U! k; ]$ }; F
一、描述性统计
( ]0 ]& \1 H! w4 H( t那些城市的空气质量较好/较差?空气质量在地理位置分布上,是否具有一定的规律?二、推断统计
% q6 P8 w" z: _临海城市的空气质量是否优于内陆城市?三、相关系数分析
) X+ i) b3 @, B% C! M空气质量主要受哪些因素的影响?四、区间估计
# `; L. i+ @, k3 X全国城市空气质量普遍处于哪种水平?五、统计建模" W) R1 ]% h ]$ a
怎样预测一个城市的空气质量?导包并读取数据:import numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport seaborn as sns
9 n" D" E( x1 Z0 Q; J% F& t* J& }: `sns.set(style="darkgrid")plt.rcParams["font.family"] = "SimHei"plt.rcParams["axes.unicode_minus"] = False$ c6 u! @, v5 r
data = pd.read_csv("data/data.csv")print(data.shape)data.head()![]()
; c9 `: h& p, o, l# r
) ]1 L3 h+ ~& K$ E, @数据集描述:
- R! H8 q* ^) A Q+ S4 ]/ }% B1 V8 ~4 n4 P2 I0 a
City:城市名
& U9 m. N6 {1 ?9 U$ a' d# x
; _" p2 n8 v. I& \! a" l5 UAQI:空气质量指数
" \9 z6 A/ U& X/ f+ P. [
5 H8 c4 l; A0 hPrecipitation:降雨量9 \2 A0 R' P5 m6 m3 C
* n/ O, J$ M# _6 UGDP:人均生产总值2 j; r" U$ p/ M7 _
3 J Q9 t6 k) S+ \& ]# I! FTempearture:温度# g* V9 }7 u- X
( t) ]: x! O2 c1 \, _
Longitude/Latitude:经/纬度
5 K, v% @9 H c E
+ d2 T$ n' l" n7 K' zAltitude:海拔高度
2 y" m+ Z V, _
% R; r+ ]& h( d5 c& n' @; wPopulationDensity:人口密度% g. j1 U& Q7 N. A# ]4 ]
2 m; N4 m0 p5 d
Coastal:是否沿海) ?& O+ v1 U- V" W
7 I0 s4 q3 C1 E: C4 G& u$ j
GreenCoverageRate:绿化覆盖率' N I1 j$ H2 s$ x, q. v
{! F1 `1 W m( p
Incineration(10,000ton):焚烧量(w吨)
+ `$ V1 }$ p6 b5 {, i5 V S
7 N9 u3 Z a, w4 o; `数据清洗% j4 }, K! G9 \: D
检查缺失值:
; h) `4 D# E* R6 Y) \数据集描述:# S0 j" H A9 `' ], F; d, n
, h. ^6 n3 Z* A! p, r UCity:城市名
( \4 n% y/ N r2 Y
0 _ G& P2 e+ v' FAQI:空气质量指数) o& }& Y* ~2 c1 q
: r9 M+ s8 i& n1 KPrecipitation:降雨量9 m9 }. {8 n2 N4 H6 x7 I/ s
& S' i1 w" O! q: D2 u0 \# SGDP:人均生产总值4 s0 }: M7 a. Q& C% h- ~4 Z: Y5 s
9 U, F" _9 `- Z* d3 m7 p# QTempearture:温度
S3 v% E# m; ?) t: y1 m9 \" s. t. p+ j
Longitude/Latitude:经/纬度
. [- T5 u9 I% z3 C0 \
, ]" ^: o+ R' W8 k2 Z' t4 O' {Altitude:海拔高度
: p/ t2 H }2 B* \( e9 t) x" i' P" a2 u" @, g
PopulationDensity:人口密度, B1 h' s6 d5 U
F: p( z1 P# D9 P) a$ k$ r, C
Coastal:是否沿海
1 }( n$ N/ S" _) k1 d g: ^( y7 I- u+ N; M
GreenCoverageRate:绿化覆盖率
( K' [+ P# l+ {) a
0 z, }# X4 m' R* z# z$ @7 b1 C+ P: CIncineration(10,000ton):焚烧量(w吨)* u$ s2 D1 p8 N" A7 H' C. F
, ?$ B/ }) o. S. o* N0 n
数据清洗
8 u2 g* m0 r$ z, c" ~检查缺失值:/ \5 @3 I- m/ U
data.isnull().sum(axis=0)8 j. F8 t* X+ L; i5 M8 D
' C! L% _6 m7 [4 O! j7 M# @3 k* O3 m- D4 Y) Q
![]()
; q L E# ]/ e; w# y/ ]( @( d J, y) r& V( A
查看含缺失值列数据的分布:
& [) t, [- ?/ Q. A c7 _#print(data["Precipitation"].skew())#偏度 , f9 P, H% R( W" O
sns.distplot(data["Precipitation"].dropna())#要删除NA值才能做分布密度图
) J% e* O7 s$ P7 F# J" Uplt.title("分布密度图")* R% v* ~5 q7 ?* A% C1 C
0.27360760671177387
4 v' o! a) p) }6 L- q5 [. Z1 s3 l9 @8 D5 p1 x7 |. |
% O$ z4 y+ q% A
5 {: R, s7 L' _& ` G# c- o数值型变量,数据呈现右偏分布,所以使用中位数填充。 对缺失值进行中位数填充 data.fillna({"Precipitation":data["Precipitation"].median()},inplace=True)
1 S2 ~% b! V4 m* I2 Y检查异常值的三种方法- data.describe() 查看数据的描述:分位数、均值与标准差
- 基于正太分布 ±三个标准差涵盖99.7%的数据
- 箱线图(四分位距IQR=Q3-Q1,上下边界:Q3/Q1 ±1.5IQR)
' {" Q3 @( \- ^8 A
查看数据集的偏度:
! w C6 M2 z N$ |data.skew()+ ]6 q; \( z: \. s! c- a
) v I0 D9 ~; k3 Q# s
AQI 1.198754
0 n# u, Q- B9 T- ]5 _Precipitation 0.273608
- y+ M. a4 x) q( w, @GDP 3.761428
: F; r+ j, V( D& ETemperature -0.597343
6 u5 A6 O7 a" U# A6 e. sLongitude -1.407505. z7 [4 M+ C& y3 S: i. a7 a/ a3 _2 D
Latitude 0.253563
( `1 Y) K( f3 E" ?Altitude 3.067242. G0 ?: O/ o0 _. k
PopulationDensity 3.125853
4 g. l: \: d" } U' x6 w9 _6 @GreenCoverageRate -0.381786
W1 U2 g5 C5 M1 g$ V: x; ] @Incineration(10,000ton) 4.342614+ Z2 I. [/ i- r3 M6 U! K" w- l+ j
dtype: float64
6 b) `( I9 s+ a _& w5 _' g' Q
4 p1 t2 [, C% E# R% m可以看到GDP和人口密度等都出现了严重的右偏分布,意味着存在很多极大的异常值。 下面我们查看以下GDP的异常值:
2 F+ o3 l4 X7 o6 c/ _mean, std = data.GDP.mean(), data.GDP.std()! _% _: G- H. p
lower, upper = mean - 3 * std, mean + 3 * std
; Z6 |0 j$ _0 k1 _- L
6 j/ q1 t% U# B; E0 _8 z0 O" rprint("均值:", mean)" G# T \- B& N A2 ?. ^
print("标准差:", std)
6 v6 j' w2 N( y1 pprint("下限:", lower)
( @+ F8 ~( T" P% kprint("上限:", upper)% x2 O1 v4 n. d: i* k! Y0 r0 |$ K
data.loc[(data.GDP < lower) | (data.GDP > upper), "GDP"]
+ {5 ^6 h) G8 h- g. G2 L4 l U* z# m, [
均值: 2390.901815384616+ s% W5 T) a1 J; A6 b. w
标准差: 3254.876921271434
' [8 S& ?$ x8 \$ i7 D# f下限: -7373.728948429687
6 _6 T' F. [& u5 j7 v上限: 12155.532579198918: c0 b& `0 C9 k2 v5 P8 s! B
16 22968.605 i) X6 y" u, j- \! H) d/ o& Y
63 18100.410 e/ v- U9 T) e1 W
202 24964.99
' S3 h# E; x% P5 U' S; I207 17502.99
; }9 p2 w% @, W3 J) u# T215 14504.07
# R- Y+ `1 P* m8 N! K: R230 16538.19+ n( p+ y/ S* Z) u
256 17900.004 U' U* u% D' L8 _* l
314 15719.72* T- K' Q7 h( y
Name: GDP, dtype: float64& T5 K6 K( r5 \; N3 ^
/ P1 g4 x o; t v2 P+ F% s
& i# ~- H: ]4 G1 n7 @, n
/ e: O) N& i8 @0 z: T) L3 H3 K4 a1 }5 c% \7 G
a# `5 ?. s; }# a4 G |
zan
|