网站建设与营销服务,制作网站的模板下载,百度搜图匹配相似图片,永久免费正版cad类软件系列文章目录
Pandas数据可视化解决不显示中文和负号问题matplotlib数据可视化seaborn数据可视化pyecharts数据可视化优衣库数据分析案例 文章目录 系列文章目录前言1. Pandas数据可视化1.1 案例解析#xff1a;代码实现 2. 解决不显示中文和负号问题3. matplotlib数据可视化…系列文章目录
Pandas数据可视化解决不显示中文和负号问题matplotlib数据可视化seaborn数据可视化pyecharts数据可视化优衣库数据分析案例 文章目录 系列文章目录前言1. Pandas数据可视化1.1 案例解析代码实现 2. 解决不显示中文和负号问题3. matplotlib数据可视化1.1 案例解析代码实现 4. seaborn数据可视化1.1 案例解析代码实现 5. pyecharts数据可视化1.1 案例解析代码实现 6. 优衣库数据分析案例1.1 案例解析代码实现 前言
本文主要通过大案例的方式详解了Pandas数据可视化matplotlib数据可视化seaborn数据可视化pyecharts数据可视化。 提示以下是本篇文章正文内容下面案例可供参考
1. Pandas数据可视化
1.1 案例解析代码实现 pandas的df和s对象绘图, 是通过内置matplotlib模块的pyplot类实现 # 导入模块
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns# 可以通过图表快速高效查看出数据之间的规律,潜在一些结论
# 加载数据集
df sns.load_dataset(anscombe, data_home./data/seaborn-data/)
df
# 查看每份子集中x和y列的统计描述信息
df.groupby(dataset).describe()
# 获取四份子集数据
df1 df.query(datasetI)
df2 df.query(datasetII)
df3 df.query(datasetIII)
df4 df.query(datasetIV)
# 查建画布
# figsize设置图表的大小, 宽高
fig plt.figure(figsize(16, 8))
# 设置画布的标题
fig.suptitle(Anscombe Data)
# 创建四个子图
# 2,2 - 两行两列,四个图
# 1,2,3,4 - 每个子图所在的位置
axes1 fig.add_subplot(2,2,1)
axes2 fig.add_subplot(2,2,2)
axes3 fig.add_subplot(2,2,3)
axes4 fig.add_subplot(2,2,4)
# 绘制图形
axes1.plot(df1[x], df1[y], o)
axes2.plot(df2[x], df2[y], o)
axes3.plot(df3[x], df3[y], o)
axes4.plot(df4[x], df4[y], o)
# 给每个子图添加标题
axes1.set_title(dataset_1)
axes2.set_title(dataset_2)
axes3.set_title(dataset_3)
axes4.set_title(dataset_4)
plt.show()# pandas绘图
# df对象绘图
# 图形的x轴是df的行索引值
# 图形的y轴是每个数值列的值
# 当前df1有两列数值列, 绘制出两条折线
# 默认绘制折线图
df1.plot(kindline)
plt.show()
# 柱状图
df1.plot(kindbar)
# s对象绘图
# 图形x轴是s对象的索引值
# 图形y轴是s对象的值
df1[x].plot()2. 解决不显示中文和负号问题 将 simhei.ttf 字体文件放到 /export/server/anaconda3/lib/python3.8/site-packages/matplotlib/mpl-data/fonts/ttf 目录下 如何查看matplotlibrc文件所在位置 ttf目录是在 mpl-data/fonts import matplotlib
matplotlib.matplotlib_fname()! 在 matplotlibrc 文件中增加以下内容 font.family : sans-serif
font.sans-serif : SimHei
axes.unicode_minus : False删除缓存文件 cd /root/.cache
rm -rf matplotlib重启jupyter notebook
3. matplotlib数据可视化
1.1 案例解析代码实现
# 绘制折线图, 默认图表 - 两个变量之间的关系
# 不指定x轴和y轴值, x轴是使用行索引值, y中是数值列值
# df1.plot()
# df1.plot.line()
# df1.plot(kindline)
# 指定图表的x轴值和y轴值
df1.plot(xx, yy)
plt.show()# 绘制柱状图 展示不同类别的信息情况
df1.plot.bar()
# 绘制堆积柱状图
df1.plot(kindbar, stackedTrue)
df1.plot.bar(xx,yy)
plt.show()# 水平条形图 - 柱状图进行旋转
df1.plot.barh()
# 水平堆积条形图
df1.plot.barh(stackedTrue, figsize(16, 8), gridTrue)
plt.show()# 绘制饼图 - 查看不同类型的占比情况
# autopct:添加百分比标签
# radius:圆直径大小,最大1
df1.plot.pie(yy, autopct%.2f%%, radius0.9, figsize(16,8))
plt.show()# 散点图 - 查看数据分布情况
# grid:添加网格线
df1.plot(kindscatter,xx,yy, gridTrue)
plt.show()# 气泡图 - 通过散点图api绘制
# 在散点图二维平面上再通过点的大小增加第三个维度
# s:点的大小, 第三个维度
df1.plot.scatter(xx, yy, gridTrue, sdf1[x]*100)# 面积图
# 面积堆积图
df1.plot.area()
df1.plot.area(stackedFalse)# 箱线图 - 查看数据的最小值,最大值, 1/4分位值, 中位值, 3/4分位值, 离群值(异常值)
# 异常值, 数据值普遍分布在 1~100, 有几个值为 1w, 2w, 这些值就是离群值
df1.boxplot()# 直方图 - 统计不同组数据出现的次数, y轴次数
# bins10:默认分成10组
df1.plot.hist()
plt.show()
df1[x].plot.hist()
plt.show()# 蜂巢图 -了解
# gridsize12设定蜂箱格子的大小数字越小格子越大
df1.plot.hexbin(xx, yy, gridsize12)
plt.show()data pd.read_csv(data/LJdata.csv)
data.head()
# 不同朝向的房源数量柱状图
temp_s data.groupby(by朝向)[区域].count()
temp_s
temp_s.plot.bar(figsize(16,8))# 前五朝向房源数量的饼图
sort_s temp_s.sort_values(ascendingFalse).head()
sort_s.plot.pie(autopct%.2f%%, radius0.9, figsize(12,6))
plt.show()4. seaborn数据可视化
1.1 案例解析代码实现
# 加载数据
tips_df sns.load_dataset(tips, data_home./data/seaborn-data)
tips_df# 散点图
fig plt.figure(figsize(16,8))
sns.scatterplot(datatips_df, xtotal_bill, ytip, huesex, stylesmoker, sizesize)
plt.show()# 关系散点图
sns.relplot(datatips_df, xtotal_bill, ytip) # 默认 kindscatter
sns.relplot(datatips_df, xtotal_bill, ytip, kindline)
plt.show()# 分类散点图
sns.stripplot(datatips_df, xtime, ytotal_bill)
# 不同日期用餐时间的分类散点图
sns.stripplot(datatips_df, xtime, ytotal_bill, jitterTrue, dodgeTrue, hueday)# 在同一个代码块中绘制多个图形, 借助matplotlib包
f plt.figure()
axes1 f.add_subplot(2,1,1)
axes2 f.add_subplot(2,1,2)
# 按照x属性所对应的类别分别展示y属性的值适用于分类数据
# 不同饭点的账单总金额的散点图
sns.stripplot(datatips_df, xtime, ytotal_bill, axaxes1)
# hue通用参数按颜色划分
# jitterTrue 当数据点重合较多时尽量分散的展示数据点
# dodgeTrue 拆分分类
sns.stripplot(datatips_df, xtime, ytotal_bill, jitterTrue, dodgeTrue, hueday, axaxes2)
plt.show()# 小提琴图
# 下图分别描述午餐账单、晚餐账单的最大值、最小值、三个四分位数以及所有账单金额出现的次数频率
sns.violinplot(datatips_df, xtime, ytotal_bill)
plt.show()# 箱线图 下图分别描述午餐账单、晚餐账单的最大值、最小值、三个四分位数以及所有账单金额出现的次数频率
sns.boxplot(datatips_df, xtime, ytotal_bill, hueday)
plt.show()# 分类柱状图
# 下图中黑色的粗线条展示了数据的分布(误差线), 线条越短, 数据分布越均匀
# 下图中每个柱的顶点就是该分类y指定列的平均值 estimator
sns.barplot(datatips_df, xday, ytotal_bill, estimatormax)
plt.show()# 分类计数图
# 按x指定的列值分组统计出现次数
# y轴就是出现的次数
sns.countplot(datatips_df, xtime)
plt.show()# 矩阵热力图 - 对df数据样式有要求, 通过透视表转换
# 男女在午餐晚餐的平均消费
new_df tips_df.pivot_table(indexsex, columnstime, valuestotal_bill, aggfuncmean)
print(new_df)
# 输出为热力图男性在晚餐花费最多
sns.heatmap(datanew_df)
plt.show()# 成对关系图
sns.pairplot(tips_df)
#sns.pairplot(df) # 全部数值列进行两两组合
#sns.pairplot(df, vars[列名1, 列名2]) # 指定要组合展示的列名
plt.show()
# 自行调整成对关系图的绘图图形
pair_grid sns.PairGrid(tips_df)
# 中间轴线上的图设为kdeplot
pair_grid.map_diag(sns.kdeplot)
# 右上设为lineplot
pair_grid.map_upper(sns.lineplot)
# 左下设为scatterplot
pair_grid.map_lower(sns.scatterplot)
plt.show()5. pyecharts数据可视化
1.1 案例解析代码实现
# 可以绘制酷炫的图形
# 绘图套路 - 参考官方示例代码进行修改即可# 绘制2019年不同国家GDP值的词云图
# 准备要绘制词云图的数据 - [(国家1, gdp值), (国家2, gdp值), ...]
data pd.read_csv(data/1960-2019全球GDP数据.csv, encodinggbk)
data
# 获取year列为2019的数据子集
data_2019 data.query(year2019)
data_2019
# 通过zip函数将不同列表对应位置的值保存到元组中
a [1,2,3]
b [4,5,6]
list(zip(a, b))
data2 list(zip(data_2019[country], data_2019[GDP]))
data2from pyecharts import options as opts # 配置选项
from pyecharts.charts import WordCloud # 词云图
c (WordCloud()# 添加数据.add(series_name不同国家GDP, data_pairdata2, word_size_range[6, 66])# 设置全局配置.set_global_opts(title_optsopts.TitleOpts(title不同国家GDP的词云图, title_textstyle_optsopts.TextStyleOpts(font_size10)),tooltip_optsopts.TooltipOpts(is_showTrue))# 将html格式的文件保存到指定为止
# .render(basic_wordcloud.html)
)
c.render_notebook()6. 优衣库数据分析案例
1.1 案例解析代码实现
# 导入模块
import pandas as pd# 加载数据集
uniqlo pd.read_csv(data/uniqlo.csv)
uniqlo.head()
# 查看数据集基本信息
uniqlo.info()
# 查看数值列描述统计指标
uniqlo.describe()
# 查看非数值列描述统计指标
uniqlo.describe(includeobject)
# 查看销售金额小于等于0的数据
uniqlo.query(销售金额0)
uniqlo[uniqlo[销售金额] 5000]# 统计不同产品销售数量情况
# 统计不同产品的销售总量
# 分组聚合
uniqlo.groupby(by产品名称)[产品数量].sum().sort_values(ascendingFalse)
pd.pivot_table(datauniqlo, index产品名称, values产品数量, aggfuncsum)
# 不同产品不同城市销售数量
uniqlo.groupby(by[产品名称, 城市])[[产品数量]].sum()
pd.pivot_table(datauniqlo, index产品名称, columns城市, values产品数量, aggfuncsum, marginsTrue)
# 不同产品不同城市以及不同销售渠道的销售数量
uniqlo.groupby(by[产品名称, 城市, 销售渠道])[[产品数量]].sum()
pd.pivot_table(datauniqlo, index产品名称, columns[城市, 销售渠道], values产品数量, aggfuncsum)# 统计不同销售渠道情况
# 统计不同销售渠道的条目数
uniqlo[销售渠道].value_counts()
uniqlo.groupby(by销售渠道)[城市].count()
uniqlo.groupby(by销售渠道)[城市].count().plot(kindbar)
# 统计不同城市不同销售渠道的条目数
uniqlo.groupby(by[城市,销售渠道])[[产品数量]].count()
pd.pivot_table(datauniqlo, index城市, columns销售渠道, values产品数量, aggfunccount)
# 绘制sns的分类计数图
import matplotlib.pyplot as plt
import seaborn as sns
plt.figure(figsize(16,8))
sns.countplot(datauniqlo,y城市,hue销售渠道)
plt.show()
# 统计不同城市不同销售渠道的产品总数
uniqlo.groupby(by[城市, 销售渠道])[[产品数量]].sum()
pd.pivot_table(datauniqlo, index城市, columns销售渠道, values产品数量, aggfuncsum, marginsTrue)# 用户消费时间分析
# 不同消费时间的条目数
uniqlo[消费时间].value_counts()
uniqlo.groupby(by消费时间)[城市].count()
# 不同消费时间产品总数
uniqlo.groupby(by消费时间)[产品数量].sum()
# 不同城市不同消费时间的产品数量
uniqlo.groupby(by[消费时间, 城市])[[产品数量]].sum()
wkd_sales pd.pivot_table(datauniqlo,index消费时间, columns城市, values产品数量, aggfuncsum)
wkd_sales
# 获取第一行数据
wkd_sales.loc[Weekday, :]
wkd_sales.loc[Weekday]
# 统计不同城市不同消费时间日均产品数量
# 在wkd_sales基础上增加两行数据
# 获取一行数据得到s对象, s对象运算操作
wkd_sales.loc[Weekday_avg,:] wkd_sales.loc[Weekday, :] / 5
wkd_sales.loc[Weekend_avg,:] wkd_sales.loc[Weekend, :] / 2
wkd_sales# 销售额和成本之间的关系
# 获取多列数据
uniqlo[[销售金额, 单件成本]]
# 计算相关性系数
uniqlo[[销售金额, 单件成本]].corr()
# 销售金额是所有销售产品数量的总金额, 单件成本是一件产品成本
# 需要先计算单件销售金额 销售金额 / 产品数量
# 计算相关性需要先过滤掉异常数据
uniqlo2 uniqlo[uniqlo[销售金额]0]
uniqlo2
# 添加新的一列 单件销售金额
uniqlo2[单件销售金额] uniqlo2[销售金额] / uniqlo2[产品数量]
uniqlo2
# 计算单件销售金额和单件成本相关系数
uniqlo2[[单件销售金额, 单件成本]].corr()
# 绘制散点图
sns.scatterplot(datauniqlo2, x单件成本, y单件销售金额)
# 绘制热力图
sns.heatmap(uniqlo2[[单件销售金额, 单件成本]].corr())所需文件已经上传第27天