seaborn数据可视化

1、加载seaborn自带的数据集,数据集名称“car_crashes”。

(1)画出“total”列与“alcohol”列的散点图。要求:有中文标题,样式自行设计(比如:散点图的风格、颜色、形状等),最后探索这两者的关系,写出分析结果。

import seaborn as sns
import numpy as np
import pandas as pd
from matplotlib import pyplot as plt
sns.set_style('darkgrid')
# 设置中文字体
plt.rcParams['font.sans-serif'] = ['SimHei']
sns.set_style({'font.sans-serif':['simhei', 'Arial']})

data=pd.read_csv('../date/seaborn-data-master/car_crashes.csv',encoding='gbk')
# print(data)

# 1)画出“total”列与“alcohol”列的散点图。
yi=sns.scatterplot(x='alcohol',y='total',data=data,)
plt.xlabel('alcohol')
plt.ylabel('total')
plt.title('alcohol列与total列的散点图')
plt.show()

 (2)画出“total”列与“speeding”列的线图。要求:有中文标题,样式自行设,最后分析两者之间的变化规律。

sns.scatterplot(x='speeding',y='total',data=data)
sns.regplot(x='speeding',y='total',data=data)
plt.title('“total”列与“speeding”列的线图')
plt.show()

 (3)探索car_crashes数据中各特征列之间的相关性,画出对应的热力图,要求热力图有数字标识,有标题,最后对主要几列比较明显特征关系的做出结论。

df=pd.DataFrame(data)
df=df.iloc[:,0:7]
xg=df.corr()
sns.heatmap(xg,annot=True)
plt.xticks(rotation=45,fontsize=13)
plt.title('car_crashes数据热力图')
plt.show()

2、加载aqi.csv文件,探索各空气质量指数之间的关系。可视化期间解决中文字体显示的问题,设置字体为黑体,并解决保存图像时负号(-)显示为方块的问题。

(1)绘制AQI与PM2.5的关系散点图,要求根据“质量等级”的不同进行区分颜色和凸显不同的形状。并做出分析结论

import seaborn as sns
import numpy as np
import pandas as pd
from matplotlib import pyplot as plt
sns.set_style('darkgrid')
sns.set_style({'font.sans-serif':['simhei', 'Arial']})
# 设置中文字体
plt.rcParams['font.sans-serif'] = ['SimHei']
sns.set_style({'font.sans-serif':['simhei', 'Arial']})

data=pd.read_csv('D:\\subject\\数据可视化\\实验要求\\实验2\\aqi.txt')
print(data)

# 1)绘制AQI与PM2.5的关系散点图
yi=sns.scatterplot(x='AQI',y='PM2.5含量(ppm)',data=data,hue="质量等级",style="质量等级")
plt.title('AQI与PM2.5的关系散点图')
plt.show()

(2)绘制出所有数据在不同时间内AQI的指标变换情况的折线图。

df2=data.iloc[:,0:2]
df3=df2['日期'].str.split('/',expand=True)#分隔日期
df2.insert(2,'月份',df3.loc[:,1])
# print(df2)
sns.lineplot(x='月份',y='AQI',data=df2)
plt.title('2020年不同月份AQI的指标变换情况的折线图')
plt.show()

 (3)分析各空气质量指数与AQI的相关性,绘制特征相关性热力图,要求热力图有数字标识,有标题,最后做出结论。

df=data.loc[:,['AQI','PM2.5含量(ppm)','PM10含量(ppm)','SO2含量(ppm)','CO含量(ppm)','NO2含量(ppm)','O3_8h含量(ppm)']]
xg=df.corr()
sns.heatmap(xg,annot=True,fmt='.2f')
plt.xticks(rotation=45,fontsize=13)
plt.title('空气质量指数与AQI的相关性热力图')
plt.show()

 

3、加载aqi.csv文件,探索各空气质量指数之间的关系。可视化期间使用seaborn库和matplotlib的函数解决中文字体显示的问题,设置字体为黑体,并解决保存图像时负号(-)显示为方块的问题,图像要有标题,其余样式自行设计。

 

import seaborn as sns
import numpy as np
import pandas as pd
from matplotlib import pyplot as plt
sns.set_style('whitegrid')
sns.set_style({'font.sans-serif':['simhei', 'Arial']})
# 设置中文字体
plt.rcParams['font.sans-serif'] = ['SimHei']
sns.set_style({'font.sans-serif':['simhei', 'Arial']})
#忽略警告
import warnings
warnings.filterwarnings('ignore')

data=pd.read_csv("D:\\subject\\数据可视化\\实验要求\\实验3\\aqi.txt")

(1)绘制一行三列的三个子图在一张画布中,其中第一个子图绘制"AQI","PM2.5含量(ppm)","PM10含量(ppm)","NO2含量(ppm)","O3_8h含量(ppm)"五列数据的箱线图,第二个子图绘制"SO2含量(ppm)"的箱线图,第三个子图绘制"CO含量(ppm)"的箱线图。

fig = plt.figure('箱线图',figsize=(10,5))
fig.add_subplot(1,3,1)
sns.boxplot(data=data[["AQI","PM2.5含量(ppm)","PM10含量(ppm)","NO2含量(ppm)","O3_8h含量(ppm)"]])
fig.add_subplot(1,3,2)
sns.boxplot(y='SO2含量(ppm)',data=data)
fig.add_subplot(1,3,3)
sns.boxplot(y='CO含量(ppm)',data=data)
plt.show()

(2)绘制空气质量等级与PM2.5含量(ppm)的分类散点图。

sns.stripplot(x='质量等级',y='PM2.5含量(ppm)',data=data)
plt.show()

 (3)使用条形图绘制不同空气质量等级下的AQI的平均值。

sns.barplot(x='质量等级',y='AQI',data=data)
plt.show()

 (4)绘制PM2.5与AQI的线性回归拟合图。

sns.regplot(x='PM2.5含量(ppm)',y='AQI',data=data)
plt.show()

4、将gdp_total.sql文件导入到mysql数据库,该数据表是2000-2019年国内生产总值的数据,使用seaborn库和matplotlib解决中文字体显示的问题,设置字体为黑体,并解决保存图像时负号(-)显示为方块的问题,图像要有标题,其余样式自行设计。

 

import seaborn as sns
import pymysql
import numpy as np
import pandas as pd
from matplotlib import pyplot as plt
sns.set_style('whitegrid')
sns.set_style({'font.sans-serif':['simhei', 'Arial']})
# 设置中文字体
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus']=False       #正常显示负号

(1)绘制第一产业增加值、第二产业增加值、第三产业增加值三者之间的相关系数热力图,并得出结论。

提示:

#连接MySQL数据库,读取数据库表数据核心代码

conn = pymysql.connect(host='127.0.0.1',port=3306,user='root',password='123123',db='stu',charset='utf8')

sql = "SELECT 年份 as year,Round(第一产业/10000,2) as primary_value,Round(第二产业/10000,2) as secondary_value,Round(第三产业/10000,2) as tertiary_value FROM gdp_total order by 年份 asc"

df = pd.read_sql(sql,conn)

'''1)绘制第一产业增加值、第二产业增加值、第三产业增加值三者之间的相关系数热力图,并得出结论。'''
conn = pymysql.connect(
    host='localhost',
    port=3306,user='root',
    password='123456',
    db='visual translation',
    charset='utf8')
sql = "SELECT 年份 as year,Round(第一产业/10000,2) as primary_value,Round(第二产业/10000,2) as secondary_value,Round(第三产业/10000,2) as tertiary_value FROM gdp_total order by 年份 asc"
df = pd.read_sql(sql,conn)

#计算皮尔逊相关系数
corr=df[['primary_value','secondary_value','tertiary_value']]
# print(corr)

#绘制相关系数热力图
plt.figure(figsize=[12,7])
sns.heatmap(corr,annot=True,fmt='.4f')
plt.show()

(2)绘制第一产业增加值与第二产业增加值之间的线性回归图,并得出结论

#连接MySQL数据库,读取数据库表数据核心代码

conn = pymysql.connect(host='127.0.0.1',port=3306,user='root',password='123123',db='stu',charset='utf8')

sql = "SELECT 年份 as year,Round(第一产业/10000,2) as primary_value,Round(第二产业/10000,2) as secondary_value,Round(第三产业/10000,2) as Tertiary_value FROM gdp_total order by 年份 asc"

df = pd.read_sql(sql,conn)

sql2=sql = "SELECT 年份 as year,Round(第一产业/10000,2) as primary_value,Round(第二产业/10000,2) as secondary_value,Round(第三产业/10000,2) as Tertiary_value FROM gdp_total order by 年份 asc"
df2=pd.read_sql(sql2,conn)
# print(df2)
sns.regplot(x='primary_value',y='secondary_value',data=df2)
plt.show()

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值