import pandas as pd from pyecharts.charts import Line,Pie,Bar,WordCloud from pyecharts import options as opts # 读取Excel文件 df = pd.read_excel('携程餐厅数据.xlsx', skiprows=[1]) # 跳过第一行无效数据 cuisine_column = '菜系' score_column = '评分' # 计算各菜系的评分平均分 cuisine_scores = df.groupby(cuisine_column)[score_column].mean().reset_index() cuisine_scores.columns = ['菜系', '平均分'] # 使用Pyecharts绘制折线图 line = Line() line.add_xaxis(cuisine_scores['菜系'].tolist()) line.add_yaxis("平均分", cuisine_scores['平均分'].tolist()) # 设置图表标题、工具提示等 line.set_global_opts( title_opts=opts.TitleOpts(title="各菜系评分平均分折线图"), tooltip_opts=opts.TooltipOpts(trigger="axis", axis_pointer_type="cross"), xaxis_opts=opts.AxisOpts(type_="category", boundary_gap=False), yaxis_opts=opts.AxisOpts(type_="value") ) # 渲染图表到HTML文件 line.render('cuisine_scores_percent.html') # 计算各菜系的消费次数之和(即评论总数之和) cuisine_counts = df.groupby('菜系')['评论总数'].sum().reset_index() cuisine_counts.columns = ['菜系', '消费次数'] # 使用Pyecharts绘制饼图 pie = ( Pie() .add( "", [list(z) for z in zip(cuisine_counts['菜系'], cuisine_counts['消费次数'])], radius=["40%", "75%"], # 设置饼图的内外半径 label_opts=opts.LabelOpts(formatter="{b}: {c} ({d}%)"), # 标签格式,包括菜系名称、消费次数和百分比 ) .set_global_opts(title_opts=opts.TitleOpts(title="各菜系消费次数占比")) # 不需要在这里再设置 label_opts,因为它已经在 add 方法中设置过了 ) # 渲染图表到HTML文件 pie.render('cuisine_consumption_pie_chart.html') # 计算每个菜系的人均消费总和和平均消费(假设每个菜系有多条记录) cuisine_sums = df.groupby('菜系')['人均消费'].sum() cuisine_counts = df.groupby('菜系')['人均消费'].count() cuisine_averages = cuisine_sums / cuisine_counts # 转换为DataFrame以便使用 cuisine_df = cuisine_averages.reset_index() cuisine_df.columns = ['菜系', '平均消费'] # 绘制柱状图 bar = Bar() bar.add_xaxis(cuisine_df['菜系'].tolist()) bar.add_yaxis('平均消费', cuisine_df['平均消费'].tolist()) # 设置全局配置项 bar.set_global_opts( title_opts=opts.TitleOpts(title='各菜系人均消费占比柱状图'), xaxis_opts=opts.AxisOpts(name='菜系'), yaxis_opts=opts.AxisOpts(name='平均消费'), toolbox_opts=opts.ToolboxOpts() ) # 渲染图表到HTML文件(可以在浏览器中打开查看) bar.render('cuisine_average_consumption.html')