In [2]:
import pandas as pd
df = pd.read_csv('./supermarket_data.csv', parse_dates=['发货日期'])
df.loc[:,'发货年'] = df['发货日期'].dt.year.astype('str')
df.loc[:,'销售额'] = df['销售额'].str.replace(',','').astype('float')
df.loc[:,'利润率'] = df['利润率'].str.replace('%','').astype('float')
df.loc[:,'折扣'] = df['折扣'].str.replace('%','').astype('float')
df.head()
Out[2]:
In [3]:
mapdata = df[['省/自治区','销售额']].groupby(['省/自治区'], as_index=False).sum()
mapdata
Out[3]:
In [4]:
#%%
from pyecharts.globals import CurrentConfig, NotebookType
CurrentConfig.NOTEBOOK_TYPE = NotebookType.JUPYTER_LAB
from pyecharts import options as opts
from pyecharts.charts import Map
c = (
Map(init_opts=opts.InitOpts('1000px','600px'))
.add("各省销售额", mapdata.values.tolist(), "china")
.set_global_opts(
title_opts=opts.TitleOpts(title="各省销售数据汇总"),
visualmap_opts=opts.VisualMapOpts(max_=1600000)
)
)
c.render()
c.load_javascript()
#%%
Out[4]:
In [5]:
c.render_notebook()
Out[5]:
In [6]:
bardata = df[['类别','利润率','折扣']].groupby(['类别'],as_index=False).mean().round(decimals=2)
bardata
Out[6]:
In [7]:
from pyecharts.globals import CurrentConfig, NotebookType, ThemeType
CurrentConfig.NOTEBOOK_TYPE = NotebookType.JUPYTER_LAB
from pyecharts import options as opts
from pyecharts.charts import Bar
bar = (
Bar(init_opts=opts.InitOpts(theme=ThemeType.LIGHT))
.add_xaxis(bardata['类别'].tolist())
.add_yaxis("利润率", bardata['利润率'].tolist())
.add_yaxis("折扣率", bardata['折扣'].tolist())
.set_global_opts(
title_opts={"text": "不同类别商品对比", "subtext": "利润率及折扣率均值(%)"}
)
)
bar.render()
bar.load_javascript()
#%%
Out[7]:
In [8]:
bar.render_notebook()
Out[8]:
In [9]:
bar3d_data = df[['子类别','发货年','销售额']].groupby(['子类别','发货年'], as_index=False).sum()
bar3d_data = bar3d_data.loc[bar3d_data['发货年']!='2018']
bar3d_data.head()
Out[9]:
In [12]:
#%%
from pyecharts.globals import CurrentConfig, NotebookType, ThemeType
CurrentConfig.NOTEBOOK_TYPE = NotebookType.JUPYTER_LAB
from pyecharts.charts import Bar3D
from pyecharts import options as opts
bar3d = (
Bar3D()
.add('销售额',
data=bar3d_data.values.tolist(),
xaxis3d_opts=opts.Axis3DOpts(bar3d_data['子类别'].unique().tolist(),
type_='category', interval=0, name='子类别'),
yaxis3d_opts=opts.Axis3DOpts(bar3d_data['发货年'].unique().tolist(),
type_='category', interval=0, name='发货年'),
zaxis3d_opts=opts.Axis3DOpts(type_='value', interval=0, name='销售额'),
)
.set_global_opts(
visualmap_opts=opts.VisualMapOpts(max_=830000)
)
)
#%%
bar3d.load_javascript()
Out[12]:
In [13]:
bar3d.render_notebook()
Out[13]:
In [ ]: