这是我们想要的数据格式 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
二.针对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)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)