如何对csv文件数据分组,并用pyecharts展示
(资料图片仅供参考)
目录
比如以下文件及统计效果把pandas 和pyecharts 做了个结合mc_data.csvmt_data.csvan_data1() 的效果在处理csv文件时,会有些数据需要分组展示。
比如以下文件及统计效果
为了避免重复劳动,
把pandas 和pyecharts 做了个结合
# coding=UTF-8 from pyecharts import Bar,Scatter,Line from pyecharts import Page import pandas as pd # 生成的HTML文件在程序目录 render.html def create_line(x_data, line_data_head, line_data, line_dict): # 建立一个Line图返回 # x_data X 轴数据 # bar_data_head 数据列 # bar_data 数据数组二维,数量和数据列匹配, 组内数据和 X轴数据匹配 # bar_dict 字典 , 标题, 副标题 , 长 , 宽 line = Line(line_dict["title"], line_dict["subtitle"], width=line_dict["width"], height=line_dict["height"]) for i in range(len(line_data_head)): line.add(line_data_head[i], x_data, line_data[i], xaxis_interval=0, is_smooth=True) return line def lines_show(line_data): # 显示多个曲线图 page = Page() for b in line_data: line = create_line(b["x"], b["head"], b["data"], b["dict"]) page.add(line) page.render() def create_bar(x_data, bar_data_head, bar_data, bar_dict): # 建立一个Bar图返回 # x_data X 轴数据 # bar_data_head 数据列 # bar_data 数据数组二维,数量和数据列匹配, 组内数据和 X轴数据匹配 # bar_dict 字典 , 标题, 副标题 , 长 , 宽 bar = Bar(bar_dict["title"], bar_dict["subtitle"], width=bar_dict["width"], height=bar_dict["height"]) for i in range(len(bar_data_head)): bar.add(bar_data_head[i], x_data, bar_data[i], xaxis_interval=0) return bar def bars_show(bar_data): # 显示多个柱状图 page = Page() for b in bar_data: bar = create_bar(b["x"], b["head"], b["data"], b["dict"]) page.add(bar) page.render() def csv_data_show(csv_file, x_head_key, data_key, m_yw): # 读取CSV 文件,获取多列数据,显示相关图示 df = pd.read_csv(csv_file, sep=",", encoding="gb2312") cols_len = len(df.columns) rows_len = len(df) x_head = [str(c).strip() for c in df[x_head_key]] print "数据列", cols_len, "数据行", rows_len, "X轴数据", len(x_head), "图数", len(data_key) yw_list = [] for m_data in data_key: m_list = [] m_list_head = [] for i in m_data: di = [d for d in df[df.columns[i]]] m_list.append(di) m_list_head.append(df.columns[i]) yw_i = { "x": x_head, "head": m_list_head, "data": m_list, "dict": m_yw } yw_list.append(yw_i) bars_show(yw_list) # lines_show(yw_list) def csv_data_show_comb(csv_file, x_head_key, comb_key, data_key, m_yw): # 读取CSV 文件,获取单列数据,分组显示显示相关图示 # x_head_key X轴数据列 # comb_key 分组数据列 # data_key 显示数据列 df = pd.read_csv(csv_file, sep=",", encoding="gb2312") cols_len = len(df.columns) rows_len = len(df) m_comb = list(set([c for c in df[comb_key]])) m_xhead = [str(d).strip() for d in df[(df[comb_key] == m_comb[0])][x_head_key]] print "数据列", cols_len, "数据行", rows_len, "X坐标数据", len(m_xhead) yw_list = [] m_list = [] m_list_head = [] for i in range(len(m_comb)): di = [d for d in df[(df[comb_key] == m_comb[i])][data_key]] m_list.append(di) m_list_head.append(str(m_comb[i])) yw_i = { "x": m_xhead, "head": m_list_head, "data": m_list, "dict": m_yw } yw_list.append(yw_i) bars_show(yw_list) # lines_show(yw_list) def an_data1(): # 画2张图 : 第一季度 及 1-5月 m_data_list = [[1,2,3],[1,2,3,4,5]] m_yw = { "title": "工作量统计", "subtitle": "", "width": 800, "height": 300 } csv_data_show(r"mt_data.csv", "S_NAME", m_data_list, m_yw) def an_data2(): m_yw = { "title": "工作量统计-分组", "subtitle": "", "width": 800, "height": 300 } csv_data_show_comb(r"mc_data.csv", "S_NAME", "D_MONTH", "D_DATA", m_yw)
mc_data.csv
mt_data.csv
an_data1() 的效果
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
X 关闭
X 关闭
- 15G资费不大降!三大运营商谁提供的5G网速最快?中国信通院给出答案
- 2联想拯救者Y70发布最新预告:售价2970元起 迄今最便宜的骁龙8+旗舰
- 3亚马逊开始大规模推广掌纹支付技术 顾客可使用“挥手付”结账
- 4现代和起亚上半年出口20万辆新能源汽车同比增长30.6%
- 5如何让居民5分钟使用到各种设施?沙特“线性城市”来了
- 6AMD实现连续8个季度的增长 季度营收首次突破60亿美元利润更是翻倍
- 7转转集团发布2022年二季度手机行情报告:二手市场“飘香”
- 8充电宝100Wh等于多少毫安?铁路旅客禁止、限制携带和托运物品目录
- 9好消息!京东与腾讯续签三年战略合作协议 加强技术创新与供应链服务
- 10名创优品拟通过香港IPO全球发售4100万股 全球发售所得款项有什么用处?