%%time
from random import randint
from pyecharts import options as opts
from pyecharts.charts import Line, Timeline
from pyecharts.globals import ThemeType
import pandas as pd
import numpy as np
from datetime import datetime
import warnings
warnings.filterwarnings("ignore")
from pyecharts.charts import Line
data = pd.read_excel('N184_数据源.xlsx',usecols=["交易时间","交易方户名","收付标志","对手户名","交易金额"])
data['日期'] = data['交易时间'].apply(lambda x:datetime.strftime(x,"%Y-%m-%d"))
data['交易金额'] = data['交易金额'].apply(lambda x:int(x/10000))
def timeline_bar() -> Timeline:
ben_list = data["交易方户名"].unique()
tl = Timeline()
for i in ben_list:
print(i)
df2=data[(data["交易方户名"]==i)*(data["交易金额"]>= 1)]
if df2.empty:
break
df_agg = df2.groupby(["日期", "对手户名", "收付标志"]).sum().reset_index()
tongji01=pd.pivot_table(df_agg, index=['日期','对手户名'], columns='收付标志', values='交易金额',
margins=False, aggfunc=[np.sum],fill_value=0)
tongji01.columns = ['_'.join(col) for col in tongji01.columns.values]
tongji01 = tongji01.reset_index()
riqi_list = tongji01['日期'].to_list()
shou_list = tongji01['sum_进'].to_list()
chu_list = tongji01['sum_出'].to_list()
bar = (
Line()
.add_xaxis(riqi_list)
.add_yaxis('收入',shou_list,areastyle_opts=opts.AreaStyleOpts(opacity=1))
.add_yaxis('支出',chu_list,areastyle_opts=opts.AreaStyleOpts(opacity=1))
.set_global_opts(title_opts=opts.TitleOpts("{}统计(万)".format(i)),
datazoom_opts=opts.DataZoomOpts(range_start=1,range_end=7) )
)
tl.add(bar, "本:{}".format(i))
tl.add_schema(play_interval=3000,
is_timeline_show=True,
is_auto_play=True)
return tl
timeline_bar().render("N184_按时间轴轮播折线图分析收支.html")
本01
本02
CPU times: total: 62.5 ms
Wall time: 63.9 ms
'D:\\myjupyter\\自制python 脚本工具库\\N184_按时间轴轮播折线图分析收支.html'