Python制作数据可视化大屏(一)

简介: Python制作数据可视化大屏

该篇文章利用Python对某学校2021级人工智能学院食堂情况就餐消费制作可视化大屏,包括六大核心模块:学生交易金额;交易成功率;学生交易类型情况;学生消费位置情况;学生交易月度预测;学生交易余额情况。各模块以不同类型图展示,其中学生交易月度预测模块嵌入自动寻优的ARIMA算法。

文末附完整代码!望关注支持!

1 加载相关包并读取数据

  运行程序:

import pandas as pd
import pmdarima as pm
from pandas import DataFrame
import warnings
warnings.filterwarnings('ignore')
from pyecharts import options as opts
from pyecharts.charts import Bar,Gauge,Pie,Page,Funnel
from bs4 import BeautifulSoup
##预测
import statsmodels.api as sm
from statsmodels.tsa.stattools import adfuller
from pyecharts.charts import Line
data = pd.read_excel(r'D:\\驾驶舱\\2021级人工智能食堂就餐消费明细.xlsx',sheet_name=0)

2 学生金额交易情况柱状图模块

  运行程序:

score_list =data['交易金额']
print(score_list)
# 指定多个区间
bins = [-100, 0, 10,20,60, 100, 200]
score_cut = pd.cut(score_list, bins)
print(type(score_cut)) # <class 'pandas.core.arrays.categorical.Categorical'>
print(score_cut)
print(pd.value_counts(score_cut)) # 统计每个区间人数
bar1=DataFrame(pd.value_counts(score_cut))
# 条形图  
def bar():
    #柱状图
    cate = ['充值', '0-10元', '10-20元', '20-60元', '60-100元', '大于100元']
    c = (
    Bar()
    .add_xaxis(cate)
    .add_yaxis("交易人次:人",[84, 16659, 8462, 852, 14, 6])
    .set_global_opts(
        xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=-15)),
        title_opts=opts.TitleOpts(title="学生交易金额情况")
    )
    )
    return c

  运行结果:

交易金额
(0, 10]       16659
(10, 20]       8462
(20, 60]        852
(-100, 0]        84
(60, 100]        14
(100, 200]        6
Name: count, dtype: int64

3 标题模块

  运行程序:

def tab0(name,color): #标题
    c = (Pie().
        set_global_opts(
        title_opts=opts.TitleOpts(title=name,pos_left='center',pos_top='center',
                                title_textstyle_opts=opts.TextStyleOpts(color=color,font_size=20))))
    return c
def tab1(name,color): #标题
    c = (Pie().
        set_global_opts(
        title_opts=opts.TitleOpts(title=name,pos_left='center',pos_top='center',
                                title_textstyle_opts=opts.TextStyleOpts(color=color,font_size=25))))
    return c
    
def tab2(name,color): #标题
    c = (Pie().
        set_global_opts(
        title_opts=opts.TitleOpts(title=name,pos_left='center',pos_top='center',
                                title_textstyle_opts=opts.TextStyleOpts(color=color,font_size=17.5))))
    return c

4 交易类型成功率仪表板模块

  运行程序:

def gau():#仪表图
    c = (
        Gauge(init_opts=opts.InitOpts(width="400px", height="400px"))
            .add(series_name="交易成功率", data_pair=[["", 100]])
            .set_global_opts(
            legend_opts=opts.LegendOpts(is_show=False),
            tooltip_opts=opts.TooltipOpts(is_show=True, formatter="{a} <br/>{b} : {c}%"),
            
        )
        .set_global_opts(
        title_opts=opts.TitleOpts(title="交易成功率"),
        legend_opts=opts.LegendOpts(is_show=False),
    )
            #.render("gauge.html")
    )
    return c

5 交易类型占比圆环图模块

  运行程序:

def gau():#仪表图
    c = (
        Gauge(init_opts=opts.InitOpts(width="400px", height="400px"))
            .add(series_name="交易成功率", data_pair=[["", 100]])
            .set_global_opts(
            legend_opts=opts.LegendOpts(is_show=False),
            tooltip_opts=opts.TooltipOpts(is_show=True, formatter="{a} <br/>{b} : {c}%"),
            
        )
        .set_global_opts(
        title_opts=opts.TitleOpts(title="交易成功率"),
        legend_opts=opts.LegendOpts(is_show=False),
    )
            #.render("gauge.html")
    )
    return c

6 学生消费位置情况金字塔图模块

  运行程序:

data1=data
data1['终端名称']=data1['终端名称'].apply(lambda x:x[0:4]).tolist()
df2=pd.DataFrame(data1.groupby('终端名称').count())
df2.iloc[:,0]
def funnel():
    cate = ['学二食堂', '管理中心', '蜜雪冰城', '食堂1层', '食堂2层','食堂3层']
    data = [731, 83, 40, 18916, 5855,452]
    c = Funnel()
    c.add("用户数", [list(z) for z in zip(cate, data)], 
               sort_='ascending',
               label_opts=opts.LabelOpts(position="inside"))
    c.set_global_opts(title_opts=opts.TitleOpts(title=""))
    return c

7 学生交易月度预测值折线图模块

  运行程序:

data1=data
data1['终端名称']=data1['终端名称'].apply(lambda x:x[0:4]).tolist()
df2=pd.DataFrame(data1.groupby('终端名称').count())
df2.iloc[:,0]
def funnel():
    cate = ['学二食堂', '管理中心', '蜜雪冰城', '食堂1层', '食堂2层','食堂3层']
    data = [731, 83, 40, 18916, 5855,452]
    c = Funnel()
    c.add("用户数", [list(z) for z in zip(cate, data)], 
               sort_='ascending',
               label_opts=opts.LabelOpts(position="inside"))
    c.set_global_opts(title_opts=opts.TitleOpts(title=""))
    return c

  运行结果:

ARIMA(0,0,0)(0,0,0)[0]             : AIC=340.998, Time=0.01 sec
 ARIMA(0,0,1)(0,0,0)[0]             : AIC=inf, Time=0.02 sec
 ARIMA(0,0,2)(0,0,0)[0]             : AIC=inf, Time=0.05 sec
 ARIMA(0,0,3)(0,0,0)[0]             : AIC=341.289, Time=0.02 sec
 ARIMA(0,0,4)(0,0,0)[0]             : AIC=333.644, Time=0.07 sec
 ARIMA(0,0,5)(0,0,0)[0]             : AIC=333.412, Time=0.09 sec
 ARIMA(1,0,0)(0,0,0)[0]             : AIC=331.546, Time=0.01 sec
 ARIMA(1,0,1)(0,0,0)[0]             : AIC=331.817, Time=0.02 sec
 ARIMA(1,0,2)(0,0,0)[0]             : AIC=inf, Time=0.07 sec
 ARIMA(1,0,3)(0,0,0)[0]             : AIC=334.645, Time=0.04 sec
 ARIMA(1,0,4)(0,0,0)[0]             : AIC=inf, Time=0.05 sec
 ARIMA(2,0,0)(0,0,0)[0]             : AIC=333.891, Time=0.01 sec
 ARIMA(2,0,1)(0,0,0)[0]             : AIC=inf, Time=0.05 sec
 ARIMA(2,0,2)(0,0,0)[0]             : AIC=inf, Time=0.17 sec
 ARIMA(2,0,3)(0,0,0)[0]             : AIC=inf, Time=0.11 sec
 ARIMA(3,0,0)(0,0,0)[0]             : AIC=334.395, Time=0.02 sec
 ARIMA(3,0,1)(0,0,0)[0]             : AIC=333.921, Time=0.04 sec
 ARIMA(3,0,2)(0,0,0)[0]             : AIC=inf, Time=0.11 sec
 ARIMA(4,0,0)(0,0,0)[0]             : AIC=336.171, Time=0.02 sec
 ARIMA(4,0,1)(0,0,0)[0]             : AIC=335.691, Time=0.05 sec
 ARIMA(5,0,0)(0,0,0)[0]             : AIC=inf, Time=0.05 sec
Best model:  ARIMA(1,0,0)(0,0,0)[0]          
Total fit time: 1.094 seconds
2021-12-31    10154.394624
2022-01-31     7244.767300
2022-02-28     5168.860890
Freq: M, dtype: float64

8 学生交易余额情况柱状图模块

  运行程序:

##条形图
##条形图数据
score_list1 =data['可用余额(交易后)']
print(score_list1)
# 指定多个区间
bins1 = [-1000,0,50, 100,200,500, 1000]
score_cut1 = pd.cut(score_list1, bins1)
print(type(score_cut1)) # <class 'pandas.core.arrays.categorical.Categorical'>
print(score_cut1)
print(pd.value_counts(score_cut1)) # 统计每个区间人数
bar2=DataFrame(pd.value_counts(score_cut1))
def bar2():
    #柱状图
    cate = ['待充值', '0-50元', '50-100元', '100-200元', '200-500元', '大于500元']
    c = (
    Bar()
    .add_xaxis(cate)
    .add_yaxis("余额状态次数:人次",[180, 10322, 7223, 5236, 2595, 521])
    .set_global_opts(
        xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=-15)),
        title_opts=opts.TitleOpts(title="学生交易余额情况")
    )
    )
    return c

  运行结果:

0          0.00
1          0.00
2          0.00
3         94.80
4         44.60
 
26072    204.41
26073     90.36
26074     22.10
26075    367.50
26076      2.02
Name: 可用余额(交易后), Length: 26077, dtype: float64
<class 'pandas.core.series.Series'>
0        (-1000, 0]
1        (-1000, 0]
2        (-1000, 0]
3         (50, 100]
4           (0, 50]
   
26072    (200, 500]
26073     (50, 100]
26074       (0, 50]
26075    (200, 500]
26076       (0, 50]
Name: 可用余额(交易后), Length: 26077, dtype: category
Categories (6, interval[int64, right]): [(-1000, 0] < (0, 50] < (50, 100] < (100, 200] < (200, 500] <
                                         (500, 1000]]
可用余额(交易后)
(0, 50]        10322
(50, 100]       7223
(100, 200]      5236
(200, 500]      2595
(500, 1000]      521
(-1000, 0]       180
Name: count, dtype: int64

Python制作数据可视化大屏(二)+https://developer.aliyun.com/article/1506507

相关文章
|
1月前
|
数据可视化 关系型数据库 MySQL
基于python大数据的的海洋气象数据可视化平台
针对海洋气象数据量大、维度多的挑战,设计基于ECharts的可视化平台,结合Python、Django与MySQL,实现数据高效展示与交互分析,提升科研与决策效率。
|
2月前
|
机器学习/深度学习 数据可视化 搜索推荐
基于python的汽车数据可视化、推荐及预测系统
本研究围绕汽车数据可视化、推荐及预测系统展开,结合大数据与人工智能技术,旨在提升用户体验与市场竞争力。内容涵盖研究背景、意义、相关技术如 Python、ECharts、协同过滤及随机森林回归等,探讨如何挖掘汽车数据价值,实现个性化推荐与智能预测,为汽车行业智能化发展提供支持。
|
2月前
|
数据采集 Web App开发 自然语言处理
新闻热点一目了然:Python爬虫数据可视化
新闻热点一目了然:Python爬虫数据可视化
|
2月前
|
数据采集 数据可视化 关系型数据库
基于python大数据的电影数据可视化分析系统
电影分析与可视化平台顺应电影产业数字化趋势,整合大数据处理、人工智能与Web技术,实现电影数据的采集、分析与可视化展示。平台支持票房、评分、观众行为等多维度分析,助力行业洞察与决策,同时提供互动界面,增强观众对电影文化的理解。技术上依托Python、MySQL、Flask、HTML等构建,融合数据采集与AI分析,提升电影行业的数据应用能力。
|
2月前
|
数据采集 搜索推荐 数据可视化
基于python大数据的商品数据可视化及推荐系统
本系统基于Python、Django与ECharts,构建大数据商品可视化及推荐平台。通过爬虫获取商品数据,利用可视化技术呈现销售趋势与用户行为,结合机器学习实现个性化推荐,助力电商精准营销与用户体验提升。
|
2月前
|
数据可视化 大数据 数据挖掘
基于python大数据的招聘数据可视化分析系统
本系统基于Python开发,整合多渠道招聘数据,利用数据分析与可视化技术,助力企业高效决策。核心功能包括数据采集、智能分析、可视化展示及权限管理,提升招聘效率与人才管理水平,推动人力资源管理数字化转型。
|
3月前
|
搜索推荐 算法 数据可视化
基于python大数据的招聘数据可视化及推荐系统
本研究聚焦于基于协同过滤的就业推荐系统设计与实现。随着就业压力增大和信息技术发展,传统求职方式面临挑战。通过分析用户行为与职位特征,协同过滤技术可实现个性化职位推荐,提升求职与招聘效率。研究涵盖系统架构、数据采集、算法实现及可视化展示,旨在优化就业匹配,促进人才与岗位精准对接,助力就业市场智能化发展。
|
5月前
|
数据可视化 算法 数据挖掘
Python 3D数据可视化:7个实用案例助你快速上手
本文介绍了基于 Python Matplotlib 库的七种三维数据可视化技术,涵盖线性绘图、散点图、曲面图、线框图、等高线图、三角剖分及莫比乌斯带建模。通过具体代码示例和输出结果,展示了如何配置三维投影环境并实现复杂数据的空间表示。这些方法广泛应用于科学计算、数据分析与工程领域,帮助揭示多维数据中的空间关系与规律,为深入分析提供技术支持。
207 0
Python 3D数据可视化:7个实用案例助你快速上手
|
6月前
|
人工智能 数据可视化 数据挖掘
如何使用Python进行数据可视化
Python是一种强大的编程语言,广泛应用于数据分析与可视化。常见的可视化库有Matplotlib、Seaborn和Plotly等。数据可视化通常包括以下步骤:准备数据(如列表或从文件读取)、选择合适的工具、绘制图表、优化样式(如标题和标签)以及保存或分享结果。例如,使用Matplotlib可通过简单代码绘制线图并添加标题和轴标签。实际应用中,可通过调整颜色、样式等进一步优化图表,甚至使用交互式工具提升效果。总之,Python的丰富工具为数据可视化提供了强大支持。
225 5
|
11月前
|
数据可视化 数据挖掘 DataX
Python 数据可视化的完整指南
Python 数据可视化在数据分析和科学研究中至关重要,它能帮助我们理解数据、发现规律并以直观方式呈现复杂信息。Python 提供了丰富的可视化库,如 Matplotlib、Seaborn、Plotly 和 Pandas 的绘图功能,使得图表生成简单高效。本文通过具体代码示例和案例,介绍了折线图、柱状图、饼图、散点图、箱形图、热力图和小提琴图等常用图表类型,并讲解了自定义样式和高级技巧,帮助读者更好地掌握 Python 数据可视化工具的应用。
664 3

推荐镜像

更多