一、多重柱形图(使用pyecharts画图)

1.导入python的相关库

2.用pandas库read_excel 方法读取数据(数据有两个表)

3.进行数据合并(主键拼接)

4.数据预处理

5.画图

二、使用Flask+echarts数据可视化(折线图)

1.使用python解析器切换到能运行的状态

2.第二部把flask框架的文件夹位置层级处理好

(1)在html文件里面用阿贾克斯来访问对应的列(取X轴与y轴的数据封装到函数里面,前提是先导入到js文件里面注意:里面有一个文件),flask的层级不能放错位置否则阿贾克斯读取不到你的数据

(2)在主函数里面写入导入你需要的数据源数据(这里要用绝对路径避免错误)

(3)数据预处理,表格中里面有一个列是付款人数的列,我们要把他先变为字符串,之后字符串转换整数,方便后面分组聚合,这里我们想得到的数据是店铺名称与总销售,所以构建一个新的序列价格乘数量得到总销售

(4)把得到的数据转为列表对象封装成一个字典对象

3.用路由函数填写的是你的网站路径这里用的是JSON的路径

访问后得到的是字典

4.最后是视图函数写入路径

5.最后用min函数运行测试

6.测试效果

前言:

数据可视化,这个是将自己想分析的数据来呈现到更直观的人眼前,传统的数据一般通过Excel表格记录,一眼看上去枯燥乏味,而数据可视化则是通过酷炫的图表和动效让单调的数据焕发出新的活力,用“数据可视化”将历年数据经过统计、提取、整合、提炼,最后通过可视化方式展示出来,改变以往以纯文字、数字方式进行项目汇报方式,利用图形化报表,加强数据的对比,使决策者更高效的掌握重要信息和了解重要细节,这关系到企业重大决策的制定和发展方向的研判。

一、多重柱形图

1.导入python的相关库

import pandas as pd
import matplotlib.pyplot as bar

 2.用pandas库read_excel 方法读取数据(数据有两个表)

shangping2=pd.read_excel('商品订单明细表.xlsx')
shangping2
shangping2=pd.read_excel('商品订单明细表.xlsx')
shangping2

3.进行数据合并(主键拼接)

这里使用到外连接,他们的共同主键是商品id

w=pd.merge(shangping,shangping2,how='outer',on='商品ID')
print(w)

4.数据预处理

(1)进行数据空值统计

w.isnull().sum()

 (2)用dropna方法进行处理数据去除空值,第一个参数(subset这个是对某一列进行删除,第二个参数how=any这个意思是只要有空的就去除)

w2=w.dropna(subset=['产品名称'],how='any')
w3=w2.dropna(subset=['记录ID'],how='any')

(3)最后再用同样的方法查看数据是否还有缺少可以发现空的已被去除

 (4)分组聚合根据,我们想要的是每个省份的产品类型有多少,这里是ab两种类型,用sum函数来求和,这里sum函数是有整数的数据才会相加,count函数是统计字符串中的每个各有多少数量

result = w3.groupby(by=['产品类型','省份'])['计数'].sum()
result_a = result['A'].sort_values(ascending=False)
result_b = result['B'].sort_values(ascending=False)
result_as=result_a.head(15)
result_bs=result_b.head(15)
result_bs

(5)我们想构建的X轴数据是字符串的省份,这里使用了for循环把每一个的省份index取索引的方法取出来

x=[i for i in result_as.index]
x

 5.画图

(1)导入bar的库我们需要的是条形图的

(2)设置配置项

init_opts这个是设置整个图形的属性(宽度,高度)

barl.add_xaxis(x)这个是添加X轴的数据

barl.add_yaxis('A商品',result_as.values.tolist(),stack=1,category_gap=5)添加y轴的数据

这里使用了stack这个是使图形堆积默认是1

barl.reversal_axis()这个是设置图形是否水平

set_global_opts这个是设置全局配置项(比如标题,还有他的距离)

xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=45,color='blue'))这个是设置标签的颜色还有倾斜角度

barl.render_notebook()最后画图

from pyecharts.charts import Bar,Line,Map,Page,Pie
from pyecharts import options as opts
from pyecharts.globals import SymbolType
barl =Bar(init_opts=opts.InitOpts(width='2500px',height='1500px'))
barl=Bar()
barl.add_xaxis(x)
barl.add_yaxis('A商品',result_as.values.tolist(),stack=1,category_gap=5)
barl.add_yaxis('B商品',result_bs.values.tolist(),stack=1,category_gap=5)
barl.reversal_axis()
barl.set_global_opts(title_opts=opts.TitleOpts(title='各个商品的数据对比销量'))
xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=45,color='blue'))
barl.render_notebook()

 二、​​​​​​使用Flask+echarts数据可视化(折线图)

1.使用python解析器切换到能运行的状态(选择base的解析器)

2.第二部把flask框架的文件夹位置层级处理好(这里注意要使用固定的命名)

 1)在html文件里面用阿贾克斯来访问对应的列(取X轴与y轴的数据封装到函数里面,前提是先导入到js文件里面

<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <title>bar</title>
    <script type="text/javascript" src="../static/js/jquery-3.6.4.min.js"></script>
    <script type="text/javascript" src="../static/js/echarts.min.js"></script>
</head>

<body>
    <h2>ajax异步请求实现echarts画图</h2>
    <div id="chart" style="width:900; height:500px;"></div>
    <script type='text/javascript'>
        var myChart = echarts.init(document.getElementById('chart'));
        var option;
        option = {
            xAxis: {
                type: 'category',
                data: [],
            },
            yAxis: {
                type: 'value'
            },
            series: 
                {
                    data: [],
                    type: 'line'
                },
                series: [
                {
                    data: [],
                    type: 'line'
                },
            ]
        };
        // 将ajax封装到函数中执行
        function get_json() {
            $.ajax({
                url: "/json",
                success: function (e) {
                    option.xAxis.data = e.name;
                    option.series[0].data = e.price;
                    //option.series[1].data = e.bread;
                    myChart.setOption(option);
                }
            })
        }
        get_json();

(2)在主函数里面写入导入你需要的数据源数据(这里要用绝对路径避免错误)

from flask import Flask, request, redirect, render_template, session, jsonify
import pandas as pd
import pandas as pd
from sqlalchemy import create_engine
df=pd.read_excel(r'.\demo1\正则表达式爬取淘宝黑丝.xlsx')

(3)数据预处理,表格中里面有一个列是付款人数的列,我们要把他先变为字符串,之后字符串转换整数,方便后面分组聚合,这里我们想得到的数据是店铺名称与总销售,所以构建一个新的序列价格乘数量得到总销售,这里面使用了正则表达式方法提取数字。

data2 = df[df['付款人数'].str.contains('人付款')]
#索引
data2 = data2.reset_index(drop=True)
data2['付款人数']=data2['付款人数'].str.extract('(\d+)').astype('int')
#计算销售额
data2['salver_sales']=data2['付款人数']*data2['价格']

(4)把得到的数据转为列表对象封装成一个字典对象

dict_to_json={
        'price':data2['salver_sales'].tolist()[:45],
        'name':data2['店铺名称'].tolist()[:45],
    }

3.用路由函数填写的是你的网站路径这里用的是JSON的路径

访问后得到的是字典

@app.route('/json')
def json():
    return jsonify(dict_to_json)

 4.最后是视图函数写入路径

@app.route('/page2')
def page():
    return render_template('page2.html')

5.最后用min函数运行测试

if __name__ == "__main__":
    # app.run('0.0.0.0',port=80)
    app.run()

6.测试效果

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
使用 pyecharts 绘制柱形图可以分为以下几个步骤: 1. 安装 pyecharts:在终端中输入 `pip install pyecharts` 安装即可。 2. 导入相关库:在 Python 代码中导入需要的库,例如 `from pyecharts.charts import Bar`。 3. 准备数据:将需要绘制的数据准备好,可以是列表、元组或者字典等形式。 4. 创建图表对象:使用 `Bar()` 函数创建一个柱状图对象。 5. 添加数据:使用 `add()` 方法将数据添加到图表中。 6. 设置属性:可以设置图表的标题、坐标轴标签、图例等属性。 7. 渲染图表:使用 `render()` 方法将图表渲染成 HTML 文件或图片。 下面是一个简单的示例代码,用于绘制一个基本的柱形图: ```python from pyecharts.charts import Bar # 准备数据 x_data = ['A', 'B', 'C', 'D', 'E'] y_data = [20, 35, 30, 40, 50] # 创建柱形图对象 bar = Bar() # 添加数据 bar.add_xaxis(x_data) bar.add_yaxis('数量', y_data) # 设置属性 bar.set_global_opts(title_opts={"text": "柱形图示例", "subtext": "这是副标题"}, xaxis_opts={"name": "类别"}, yaxis_opts={"name": "数量"}, legend_opts={"pos_left": "right"}) # 渲染图表 bar.render('bar.html') ``` 在上面的代码中,我们使用了 `Bar()` 函数创建一个柱形图对象,然后使用 `add_xaxis()` 方法添加 x 轴数据,使用 `add_yaxis()` 方法添加 y 轴数据,最后使用 `set_global_opts()` 方法设置图表的属性,例如标题、坐标轴标签、图例等。最后,使用 `render()` 方法将图表渲染成 HTML 文件并保存在当前目录下的 `bar.html` 文件中。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值