from pyecharts.charts import EffectScatter from pyecharts.components import Table from pyecharts import options as opts from pyecharts.globals import CurrentConfig, NotebookType CurrentConfig.NOTEBOOK_TYPE = NotebookType.JUPYTER_LAB import pandas as pd from pyecharts.globals import ThemeType if __name__ == '__main__': user_info = pd.read_csv('user_info.txt', delimiter='\t') # 统计用户年龄和性别分布 age_sex_count = user_info.groupby(['age', 'sex']).size().reset_index(name='count') # 将数据处理成可用于绘制小提琴图的格式 data = [] sexes = ['M', 'F'] for sex in sexes: age_count = [ {'name': str(age), 'value': count} for age, count in age_sex_count.loc[age_sex_count['sex'] == sex, ['age', 'count']].values ] data.append(age_count) # 使用 EffectScatter 绘制小提琴图 violin_chart = ( EffectScatter(init_opts=opts.InitOpts(theme=ThemeType.LIGHT)) .add_xaxis(['男性', '女性']) .add_yaxis("", data) .set_global_opts( title_opts=opts.TitleOpts(title='用户年龄和性别分布'), visualmap_opts=opts.VisualMapOpts(is_piecewise=True, pieces=[ {'min': 0, 'max': 50, 'label': '0~50', 'color': '#7f1818'}, {'min': 50, 'max': 100, 'label': '50~100', 'color': '#e7ba52'}, {'min': 100, 'max': 150, 'label': '100~150', 'color': '#6a9f2a'}, {'min': 150, 'max': 200, 'label': '150~200', 'color': '#0065c4'}, ]), toolbox_opts=opts.ToolboxOpts(is_show=True, orient='vertical', pos_left='right', feature={ 'saveAsImage': {'title': '保存'} }) ) ) # 添加表格 table_data = age_sex_count.sort_values(by=['age', 'sex']).reset_index(drop=True) table = ( Table() .add(headers=table_data.columns.tolist(), rows=table_data.values.tolist()) .set_global_opts( title_opts=opts.ComponentTitleOpts(title='用户年龄和性别分布表格', subtitle=''), toolbox_opts=opts.ToolboxOpts( is_show=True, orient='vertical', pos_left='right', feature={ 'saveAsImage': {'title': '保存'} } ) ) ) # 将小提琴图和表格组成一个页面 page = ( violin_chart .overlap(table) .render('d.html') )
时间: 2024-04-25 12:27:54 浏览: 210
pyChart 教程
4星 · 用户满意度95%
这段代码的主要功能是读取一个用户信息的数据文件,统计用户年龄和性别的分布情况,并绘制成小提琴图和表格两种可视化方式,最后将它们组合成一个页面并保存为 HTML 文件。具体的实现过程如下:
1. 读取用户信息的数据文件,使用 pandas 库的 read_csv 方法,并指定分隔符为 '\t'。
2. 统计用户年龄和性别的分布情况,使用 pandas 库的 groupby 方法对 'age' 和 'sex' 两列进行分组,并使用 size 方法统计每组的数量,最后使用 reset_index 方法将结果转换成 DataFrame 格式。
3. 将数据处理成可用于绘制小提琴图的格式,将不同性别的年龄和数量组成一个列表,并将它们作为 data 参数传递给 EffectScatter 类的 add_yaxis 方法。
4. 使用 EffectScatter 类的 add_xaxis 和 add_yaxis 方法分别设置 x 轴和 y 轴的数据,使用 set_global_opts 方法设置图表的标题、视觉映射和工具栏等全局参数,最后将这个小提琴图保存为 violin_chart 变量。
5. 使用 Table 类的 add 方法将表格数据添加到表格中,使用 set_global_opts 方法设置表格的标题和工具栏等全局参数,最后将这个表格保存为 table 变量。
6. 使用 EffectScatter 类的 overlap 方法将小提琴图和表格组合成一个页面,使用 render 方法将这个页面保存为 HTML 文件。
阅读全文