一.针对echarts桑基图的数据处理
这是我们想要的数据格式 links[{ source: '家具', target: '公司', value: 1879156}]
部分源数据截图
根据表格数据所致我们需要的数据字段来源于["地区", "类别"]["销售额"]
下面我们利于pandas进行数据处理
import pandas as pd
data = pd.read_excel("超市运营数据.xls")
#对地区、类别分组,根据销售额进行求和
a = data.groupby(["地区", "类别"])["销售额"].sum()
这时我们a中的数据为
根据需求,下面我们可以通过index和values来获取我们所需要的具体值
#地区
print(a.index[0][0])
#类别
print(a.index[0][1])
#销售额
print(a.values[0])
桑基图links所需要的数据是由一个数组中多个字典组成,我们可以通过字典中的setdefault()方法添加多个键值对。Python 字典 setdefault() 方法 (w3school.com.cn)https://www.w3school.com.cn/python/ref_dictionary_setdefault.asp
dic.setdefault("source", a.index[0][0])
dic.setdefault("target", a.index[0][1])
dic.setdefault("value", a.values[0])
print(dic)
#{'source': '东北', 'target': '办公用品', 'value': 839488.916}
最后只需要将每个字典加入到列表中,下面是全部代码
import pandas as pd
data = pd.read_excel("超市运营数据.xls")
a = data.groupby(["地区", "类别"])["销售额"].sum()
""" links[{
source: '家具',
target: '公司',
value: 1879156}]
"""
links = []
dic = {}
i = 0
while (i<len(a.values)):
dic.setdefault("source", a.index[i][0])
dic.setdefault("target", a.index[i][1])
dic.setdefault("value", a.values[i])
i+=1
links.append(dic)
#这里我们要将字典删除然后重新定义一个空字典,因为setdefault方法中不能出现重复的key,负责所有的数据都是一样的
del dic
dic={}
print(links)
二.针对echarts热力图的数据处理
也是分组聚合操作,数据源还是上面的,代码如下
import pandas as pd
data=pd.read_excel("超市运营数据.xls")
a=data[["城市","利润","子类别"]].groupby("城市")["利润"].sum().reset_index().sort_values(by="利润")
ad=data[["城市","利润","子类别"]]
#最高最低5个城市的利润
bot=a.head(5)
top=a.tail(5)
#数据合并
b=pd.concat((bot,top),axis=0,join="inner")
#过滤掉ad不满足最低最高5个城市的数据
c=ad.loc[ad["城市"].isin(b['城市'].values)]
data2=c.groupby(["子类别","城市"])["利润"].sum().reset_index()
e=data2.values.tolist()
print(data2)