pandas 生成html表格_python | Pandas/bokeh 实现交互数据可视化

本文介绍如何利用Python的Pandas库处理CSV数据,计算各类型每周总用时,并通过Bokeh进行交互式数据可视化,生成HTML表格,展示一年中时间分配和类型频率。
摘要由CSDN通过智能技术生成

需求

  • 图文展示一年中时间分配
  • 类型频率及持续时间

tools

Python

Python 做数据分析有完整的工具链条.

往深, 可以实现 Deep Learning 的项目(Scikitlearn/Tensorflow)

往浅, 也可以实现表格(二维矩阵)的处理

本次即使用较浅的部分,处理表格(虽然只有一张, 但很长)

Pandas

数据科学最小工具链

74d91d12a624192a4bddfb5994be4da5.png

Bokeh

matplotlib 和 bokeh 选哪个?

- [Jupyter 常见可视化框架的选择]- 我希望导出 html并且可交互, 故选择 bokeh.- 内部显示的话, matplotlib也很顺手, 有时会现用它展示, 再重新用 bokeh写一次. 

需求->代码实现

以需求为底, 逐步拆解到实现.

处理 .csv 格式的表格

  • 导入, 并将其转化为 DataFrame(以下简称df, pandas 可以处理的数据形式. 如上表格显示, 与 list 相似,也是数据形式, 但可以被 pandas 处理. pandas.DataFrame.from_csv
  • 导出也可为 .csv, 因在本项目中不需要导出表格, 故省略.
  • 举例
    原始数据格式如下
7906ed0677030443c41e5d1dc49d5788.png

计算各类型每周总用时

目标: 上述列表转化成如下列表

  • columns 是各类别
  • index 是 week
  • values 是 总用时 即每类别每周的总用时
1  df3[44:45]

实现

  • 增加列, 这列的内容可以根据前面各列的数据, 计算得出.
    lambda
    pandas.DataFrame.apply
    du_start 是开始的秒数, du_end 是结束的秒数. du_time 即结束减去开始, 即持续时间.
1  df['du_time'] = df.apply(lambda x: x.du_end-x.du_start, axis=1)2  df.tail(1)
  • df中 某一列, 去掉重复的元素后, 有哪些, 可用来分类和计数.
    计算有多少类行为, 这些行为都在 act_type 这一列中.
    计算有多少周 都在 wn4y 这一列中.
1 import numpy as np2 UniqueAct = df.act_type.unique()
  • 按照某一列中特有的某一元素 提取行,eg:要从 df 中提取出 在 act_type 中都是 sleep 的行 重组一个矩阵. c = df[df[‘act_type’].isin([‘sleep’])在矩阵 c中提取出 在wn4y 中都是 14 的行 重组一个矩阵 c[c[‘wn4y’].isin([‘14’] 即第14周的所有 sleep 的数据.
  • 某一列求和 np.sum(df).[‘columnA’], eg: np.sum((c[c[‘wn4y’].isin([week])])[‘du_time’] 及某一行为某一周的总秒数, /60/60, 可得小时.
  • 使用 for in 循环, 即可将所有行为不同周的总小时数计算出来. 添加到 list l. 同时列出 list a(行为) , list w(week). 将三个列表连在一起, 形成新的矩阵. d4 = {‘act’:a, ‘week’:w,’sum’:l} pd.DataFrame(d4)
  • 矩阵里的元素只取小数点后一位 .round(1)
58fe63a66cb38fc9b88021f3f741f5e4.png
  • 将某一列的内容变成 columns 另外一列的内容变成 index, 第三列的内容作为 values的方法.以’ act’作为 index, pandas 针对 index 提供检索的功能 .loc[]eg: ((pd.DataFrame(d4).round(1)).set_index(‘act’)).loc[‘sleep] 即在所有 index 中检出行为 在这个基础上, 再使用 .set_index(‘week’), 将周作为 index事先建立一个纵轴为52周的矩阵, 在这个矩
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值