Pyecharts结合Pandas绘制图表

举报
迷彩 发表于 2023/04/28 09:42:51 2023/04/28
【摘要】 前言数据的可视化是我们数据分析最重要的环节,图表可以化复杂为简洁,化抽象为具体,使读者或听众更容易理解.数据可视化为图表,能让数据更加直观,更加触手可及,让企业能够更迅速,更准确地做出商业决策.让企业能够更好地在所处的领域有所成就.甚至立于不败之地.之前学过pyecharts的绘图库,它的强大让我很震撼,但是再好的绘图库只是前端的一种表现形式,数据才是数据分析的最重要对象,之前《Python...

前言

数据的可视化是我们数据分析最重要的环节,图表可以化复杂为简洁,化抽象为具体,使读者或听众更容易理解.数据可视化为图表,能让数据更加直观,更加触手可及,让企业能够更迅速,更准确地做出商业决策.让企业能够更好地在所处的领域有所成就.甚至立于不败之地.之前学过pyecharts的绘图库,它的强大让我很震撼,但是再好的绘图库只是前端的一种表现形式,数据才是数据分析的最重要对象,之前《Python 绘制精美可视化数据分析图表 (二)-pyecharts》的数据都是我们手动创建的数据,这显然不符合我们日常开发需求,做数据分析,往往会有大量数据需要整理,数据量越大,得出的结论会更加准确.所以我们的数据会来自不同的渠道.会存储在不同类型的文件中.我们平时的数据一般来自Excel,csv,TXT,json等等.Excel正是最常用的数据存储媒介。如果说数据是米,那这些存储媒介就是粮仓。而Pandas是和这些文件媒介结合使用最好的数据处理库之一,Pandas是一个强大的分析结构化数据的工具集, 可以对各种数据进行运算操作,比如归并、再成形、选择,还有数据清洗和数据加工特征。广泛应用在学术、金融、统计学等各个数据分析领域。


准备

安装pyecharts和Pandas

pip install pandas
pip install pyecharts

默认安装符合Python版本的最新的版本

可通过代码查看安装版本

import pyecharts
import pandas
print(pyecharts.__version__)
print(pandas.__version__)

运行结果:

1.9.1
1.0.5

pyecharts 结合 pandas 绘制一周销售情况折线图

示例中的Excel数据:

第一步当然是导入Python库,导入pyecharts和pandas

from pyecharts.charts import Line
from pyecharts import options as opts
import pandas as pd

使用pandas导入excel表格中的数据

df = pd.read_excel(r'data.xlsx')


对数据进行转置,让数据变成适合我们需要的格式

df2 = pd.DataFrame(df.values.T, index=df.columns, columns=df.index)#转置


处理数据:把数据方式分开放到对应的list

创建三个list来存储数据

indexs = []							# 行索引
columns = []						# 列索引
data = []							# 每一列的数据,二维列表

使用for循环处理数据

#获取X轴变量
for index in df2.index:
    indexs.append(index)
    
#获取每行索引    
for column in df2.columns:
    columns.append(column)

#把每行数据放到一个list   
for i in range(0,len(columns)):
    data_ = []
    for j in df2.iloc[:,i]:
        data_.append(j)
    data.append(data_)

数据处理结果:

涉及到多条折线展示,使用层叠多图函数overlap()来处理,overlap()能让多个图形在同一图表同时展示,不但可以层叠同一类型还可以层叠多种类型的图形,比如:直方图和折线图

创建一个xiaoshou()函数:

def xiaoshou() -> Line:

先设置基本配置

    c = (
        Line()
        .add_xaxis(indexs[1:])
        .set_global_opts(title_opts=opts.TitleOpts(title="各区域一周销售情况"))
    )

循环data列表绘制图表,不管后面增加多少行多少列数据都能自适应

    for i in range(0,len(columns)):
        c_ = (
            Line()
            .add_xaxis(indexs[1:])
            .add_yaxis(data[i][0], data[i][1:])
        )
        c.overlap(c_)					# 堆叠
    return c

然后统一渲染

xiaoshou().render()

最终效果:


总结

使用for循环处理数据再放到pyecharts进行渲染绘制图表,能够很好自适应表格数据的删减

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。