pandas时间数据的集成处理
工作中遇到的一个问题: 统计各地区新能源汽车的充电时长 数据来源是北理新源的单日全球的运行数据。
这里仅统计北上广重庆四个地区的 数据处理的代码就省略了 需要整理好的是4个dataframe(数据已保存为H5格式) 分别是对应上述4个城市的:
import pandas as pd
from pyecharts import Boxplot,Pie,Page
theme_echart='infographic' location_list=['shanghai','chongqing','guangdong','beijing']
ans_vid={} for i in location_list:
ans_vid[i]=pd.read_hdf(i+'_charging.h5',encoding='gbk') location_list_chinese=['上海','重庆','广东','北京'];
for i in range(len(location_list_chinese)):
ans_vid[location_list_chinese[i]] = ans_vid.pop(location_list[i])
例:

这时候我们需要提取其中的时间序列统计所有vid的 充电状态为1的第一个时间和最后一个时间 即为该车的充电时长
代码如下:
page=Page()
for i in location_list_chinese:
ans_vid[i]=ans_vid[i][ans_vid[i]['充电状态']=='1.0']
temp1=ans_vid[i].drop_duplicates(['vid'],keep='last')
temp2=ans_vid[i].drop_duplicates(['vid'],keep='first')
a=temp2['上报时间']
b=temp1['上报时间']
a=a.reset_index()
b=b.reset_index()
a=a.drop(['index'],axis=1)
b=b.drop('index',axis=1)
a['上报时间']=a['上报时间'].astype(str)
a['上报时间']=a['上报时间'].apply(lambda v: v[0:4]+'-'+v[4:6]+'-'+v[6:8]+' '+v[8:10]+':'+v[10:12]+':'+v[12:14])
b['上报时间']=b['上报时间'].astype(str)
b['上报时间']=b['上报时间'].apply(lambda v: v[0:4]+'-'+v[4:6]+'-'+v[6:8]+' '+v[8:10]+':'+v[10:12]+':'+v[12:14])
b['上报时间']=pd.to_datetime(b['上报时间'])
a['上报时间']=pd.to_datetime(a['上报时间'])
temp=b['上报时间']-a['上报时间']
temp=pd.DataFrame(temp)
temp['上报时间']=temp['上报时间'].dt.total_seconds()/3600
temp['充电时长']=temp['上报时间'].astype(str)
temp['充电时长'][temp['上报时间']<=1]='<1h'
temp['充电时长'][(temp['上报时间']>1) & (temp['上报时间']<=4)]='1-4h'
temp['充电时长'][(temp['上报时间']>4) & (temp['上报时间']<=8)]='4-8h'
temp['充电时长'][temp['上报时间']>8]='>8h'
local_charging_time=temp['充电时长'].value_counts()
box=Boxplot(i+'地区充电时长统计')
pie=Pie(i+'地区充电时长统计')
box.use_theme(theme_echart)
pie.use_theme(theme_echart)
# kwargs = dict(name = i,
# x_axis = list(local_charging_time.index),
# y_axis = list(local_charging_time.values),
# is_legend_show=False,
# is_label_show=True
# )
# bar.add(**kwargs)
x=list(local_charging_time.index);
y=list(local_charging_time.values);
pie.add("",x,y,radius=(40,75),
is_label_show=True,legend_orient = 'vertical',
legend_pos = 'left',legend_top='center')
# box画图
y_axis =[]
for j in x:
y_axis.append(list(temp['上报时间'][temp['充电时长']==j]))
y=box.prepare_data(y_axis)
box.add(i+'地区各充电时长分布', x, y,xaxis_name='',
yaxis_name='充电时长[h]',is_legend_show=True,legend_pos='right',is_label_show=True,yaxis_name_gap=45,xaxis_type='category',xaxis_rotate=0)
page.add(pie)
page.add(box)
del box,pie page.render('北上广重地区充电时长统计_v2.html')
可以看到核心处理程序是pd.to_datetime(a['上报时间']) 转化为时间格式之后 用两列相减得到时间差格式的temp
temp['上报时间']=temp['上报时间'].dt.total_seconds()/3600 # 此处提取时间差格式的秒数, 再折算成小时
结果如下图:

一个相似的例子是需要统计这四个地区的充电开始时段的分布(根据电网电价的需求而来)
核心是将连续的时间格式字符Series集成转化成时间格式,即'20190101235502'转化成 2019-01-01 23:55:02
代码:
a['上报时间']=a['上报时间'].apply(lambda v: v[0:4]+'-'+v[4:6]+'-'+v[6:8]+' '+v[8:10]+':'+v[10:12]+':'+v[12:14]) # 整列按照既定方法修改
然后调用pd.to_datetime

pandas时间数据的集成处理的更多相关文章
- pandas小记:pandas时间序列分析和处理Timeseries
http://blog.csdn.net/pipisorry/article/details/52209377 其它时间序列处理相关的包 [P4J 0.6: Periodic light curve ...
- pandas学习(数据分组与分组运算、离散化处理、数据合并)
pandas学习(数据分组与分组运算.离散化处理.数据合并) 目录 数据分组与分组运算 离散化处理 数据合并 数据分组与分组运算 GroupBy技术:实现数据的分组,和分组运算,作用类似于数据透视表 ...
- Pandas DataFrame数据的增、删、改、查
Pandas DataFrame数据的增.删.改.查 https://blog.csdn.net/zhangchuang601/article/details/79583551 #删除列 df_2 = ...
- pandas外部数据的读取构造数据框-文本文件读取(一种utf-8中文编码乱码处理经验)
上面一篇文章有记录pandas构造数据框的方式有二维数组,字典,嵌套的列表和元组等,本篇用于介绍通过外部数据读取的方式来构造数据框. python读取外部数据集的时候,这些数据集可能包含在文本文件(c ...
- 利用Python进行数据分析(12) pandas基础: 数据合并
pandas 提供了三种主要方法可以对数据进行合并: pandas.merge()方法:数据库风格的合并: pandas.concat()方法:轴向连接,即沿着一条轴将多个对象堆叠到一起: 实例方法c ...
- 【转载】使用Pandas对数据进行筛选和排序
使用Pandas对数据进行筛选和排序 本文转载自:蓝鲸的网站分析笔记 原文链接:使用Pandas对数据进行筛选和排序 目录: sort() 对单列数据进行排序 对多列数据进行排序 获取金额最小前10项 ...
- 【转载】使用Pandas进行数据提取
使用Pandas进行数据提取 本文转载自:蓝鲸的网站分析笔记 原文链接:使用python进行数据提取 目录 set_index() ix 按行提取信息 按列提取信息 按行与列提取信息 提取特定日期的信 ...
- 【转载】使用Pandas进行数据匹配
使用Pandas进行数据匹配 本文转载自:蓝鲸的网站分析笔记 原文链接:使用Pandas进行数据匹配 目录 merge()介绍 inner模式匹配 lefg模式匹配 right模式匹配 outer模式 ...
- 【转载】使用Pandas创建数据透视表
使用Pandas创建数据透视表 本文转载自:蓝鲸的网站分析笔记 原文链接:使用Pandas创建数据透视表 目录 pandas.pivot_table() 创建简单的数据透视表 增加一个行维度(inde ...
随机推荐
- Codeforces Round #563 (Div. 2) A. Ehab Fails to Be Thanos
链接:https://codeforces.com/contest/1174/problem/A 题意: You're given an array aa of length 2n2n. Is it ...
- Codeforces Round #431 (Div. 2) A
Where do odds begin, and where do they end? Where does hope emerge, and will they ever break? Given ...
- 一篇文章彻底了解Java垃圾收集(GC)机制
垃圾收集(Garbage Collection ,GC),是一个长久以来就被思考的问题,当考虑GC的时候,我们必须思考3件事情: 哪些内存需要回收? 什么时候回收? 如何回收? 那么在Java中,我们 ...
- (转)nginx域名访问的白名单配置梳理
nginx域名访问的白名单配置梳理 原文:http://www.cnblogs.com/kevingrace/p/6086652.html 在日常运维工作中,会碰到这样的需求:设置网站访问只对某些ip ...
- 举例实用详解sc.textFile()和wholeTextFiles()
谈清楚区别,说明白道理,从案例开始: 1 数据准备 用hdfs存放数据,且结合的hue上传准备的数据,我的hue截图: 每个文件下的数据: 以上是3个文件的数据,每一行用英文下的空格隔开: 2 测试 ...
- 《四 spring源码》利用TransactionManager手写spring的aop
事务控制分类 编程式事务控制 自己手动控制事务,就叫做编程式事务控制. Jdbc代码: Conn.setAutoCommite(false); // 设置手动控制事务 Hibern ...
- IO(Properties、序列化流、打印流、CommonsIO)
第1章 Properties类 1.1 Properties类介绍 Properties 类表示了一个持久的属性集.Properties 可保存在流中或从流中加载.属性列表中每个键及其对应值都是一个字 ...
- jetty启动(server-connector-handle-start-join)
import java.io.File; import java.io.IOException; import java.util.Map; import javax.servlet.ServletE ...
- zTree使用随笔
最近开发过程中,需要写一个公司人员组织架构的树状图,后来选用了依赖jQuery的zTree插件来实现,主要是该插件功能齐全,性能稳定,个性化编辑方便,遂选用了这个插件.我记录了一下根据自身需求定制化修 ...
- 31全志r58平台Android4.4.2下打开USB摄像头
31全志r58平台Android4.4.2下打开USB摄像头 2018/10/26 16:00 版本:V1.0 开发板:SC5806 1.系统编译:(略) 2.需要修改的文件: W:\r58_andr ...