课程学习来源:b站up:【蚂蚁学python】
【课程链接:【【数据可视化】Python数据图表可视化入门到实战】】
【课程资料链接:【链接】】
Python绘制箱形图分析北京天气数据
箱形图
箱形图(Box-plot)又称为盒须图、盒式图或箱线图,是一种用作显示一组数据分散情况的统计图。
箱形图的图形组成
对于一组数字,先将其从小到达排列,然后计算图中元素:
I Q R : 即分位数范围 IQR:即分位数范围 IQR:即分位数范围
小于下边缘或大于上边缘的值,为异常值
箱形图的价值
- 直观明了地识别数据中的异常值
- 利用箱线图判断数据的偏态和尾重:一般来说,盒子不会位于正中间,可能会偏下或者偏上,那么我们能够看到数据的分布是偏小还是偏大的
- 利用箱线图比较几批数据的形状
import pandas as pd
import seaborn as sns
sns.set(style="whitegrid")
sns.set(rc={'figure.figsize':(11.7,8.27)})
实例目标:对比北京2019年天气数据中,四个季度的温度分布对比
1.读取北京天气数据
df = pd.read_csv("../DATA_POOL/PY_DATA/ant-learn-visualization-master/datas/beijing_tianqi/beijing_tianqi_2019.csv")df.head(3)
ymd | bWendu | yWendu | tianqi | fengxiang | fengli | aqi | aqiInfo | aqiLevel | |
---|---|---|---|---|---|---|---|---|---|
0 | 2019-01-01 | 1℃ | -10℃ | 晴~多云 | 西北风 | 1级 | 56 | 良 | 2 |
1 | 2019-01-02 | 1℃ | -9℃ | 多云 | 东北风 | 1级 | 60 | 良 | 2 |
2 | 2019-01-03 | 2℃ | -7℃ | 霾 | 东北风 | 1级 | 165 | 中度污染 | 4 |
2.把温度列从字符串变成数字
# 把最高温度列,从数字+℃的形式变成纯数字
df["bWendu"] = df["bWendu"].str.replace('℃', '').astype(float)
df.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 365 entries, 0 to 364
Data columns (total 9 columns):# Column Non-Null Count Dtype
--- ------ -------------- ----- 0 ymd 365 non-null object 1 bWendu 365 non-null float642 yWendu 365 non-null object 3 tianqi 365 non-null object 4 fengxiang 365 non-null object 5 fengli 365 non-null object 6 aqi 365 non-null int64 7 aqiInfo 365 non-null object 8 aqiLevel 365 non-null int64
dtypes: float64(1), int64(2), object(6)
memory usage: 25.8+ KB
3.根据日期添加季度数字列
# 获取季度
df["quarter"] = pd.to_datetime(df["ymd"]).dt.quarterdf.head(6)
ymd | bWendu | yWendu | tianqi | fengxiang | fengli | aqi | aqiInfo | aqiLevel | quarter | |
---|---|---|---|---|---|---|---|---|---|---|
0 | 2019-01-01 | 1.0 | -10℃ | 晴~多云 | 西北风 | 1级 | 56 | 良 | 2 | 1 |
1 | 2019-01-02 | 1.0 | -9℃ | 多云 | 东北风 | 1级 | 60 | 良 | 2 | 1 |
2 | 2019-01-03 | 2.0 | -7℃ | 霾 | 东北风 | 1级 | 165 | 中度污染 | 4 | 1 |
3 | 2019-01-04 | 2.0 | -7℃ | 晴 | 西北风 | 2级 | 50 | 优 | 1 | 1 |
4 | 2019-01-05 | 0.0 | -8℃ | 多云 | 东北风 | 2级 | 29 | 优 | 1 | 1 |
5 | 2019-01-06 | 3.0 | -7℃ | 多云 | 东南风 | 1级 | 84 | 良 | 2 | 1 |
4.调用seaborn绘制boxplot
ax = sns.boxplot(x="quarter",y="bWendu",data=df)