pandas之时间序列
Pandas中提供了许多用来处理时间格式文本的方法,包括按不同方法生成一个时间序列,修改时间的格式,重采样等等。
按不同的方法生成时间序列
In [7]: import pandas as pd
# 按起始和终止日期以及步长生成时间序列
In [8]: pd.date_range(start="20171212",end="20180101",freq="D")
Out[8]:
DatetimeIndex(['2017-12-12', '2017-12-13', '2017-12-14', '2017-12-15',
               '2017-12-16', '2017-12-17', '2017-12-18', '2017-12-19',
               '2017-12-20', '2017-12-21', '2017-12-22', '2017-12-23',
               '2017-12-24', '2017-12-25', '2017-12-26', '2017-12-27',
               '2017-12-28', '2017-12-29', '2017-12-30', '2017-12-31',
               '2018-01-01'],
              dtype='datetime64[ns]', freq='D')
In [9]: pd.date_range(start="20171212",end="20180101",freq="10D")
Out[9]: DatetimeIndex(['2017-12-12', '2017-12-22', '2018-01-01'], dtype='datetime64[ns]', freq='10D')
# 按起始日期,数量和步长生成时间序列
In [10]: pd.date_range(start="20171212",periods=10,freq="10D")
Out[10]:
DatetimeIndex(['2017-12-12', '2017-12-22', '2018-01-01', '2018-01-11',
               '2018-01-21', '2018-01-31', '2018-02-10', '2018-02-20',
               '2018-03-02', '2018-03-12'],
              dtype='datetime64[ns]', freq='10D')
In [11]: pd.date_range(start="20171212",periods=10,freq="M")
Out[11]:
DatetimeIndex(['2017-12-31', '2018-01-31', '2018-02-28', '2018-03-31',
               '2018-04-30', '2018-05-31', '2018-06-30', '2018-07-31',
               '2018-08-31', '2018-09-30'],
              dtype='datetime64[ns]', freq='M')
# 如果取不到最后一天,这个时间序列就会停止在前一个生成的日期处
In [12]: pd.date_range(start="20171212",end="20180105",freq="10D")
Out[12]: DatetimeIndex(['2017-12-12', '2017-12-22', '2018-01-01'], dtype='datetime64[ns]', freq='10D')
案例
假如我们现在有美国2015年12月到2017年9月的911求救电话信息。(数据来源:Emergency - 911 Calls)假如我们需要统计并绘制每个月的各类求救电话的变化情况,应该怎么做呢?
# coding=utf-8
import pandas as pd
from matplotlib import pyplot as plt
from matplotlib import font_manager
filepath = "./911.csv"
df = pd.read_csv(filepath)
font = font_manager.FontProperties(fname="C:\Windows\Fonts\msyh.ttc")
df["timeStamp"] = pd.to_datetime(df["timeStamp"])
df.set_index("timeStamp", inplace=True)
temp_list = df["title"].str.split(":")
cate_list = [i[0] for i in temp_list]
df["cate"] = cate_list
plt.figure(figsize=(20, 8), dpi=80)
# 分组
for group_name, group_data in df.groupby(by="cate"):
    # 对不同分类进行绘图
    count_by_month = group_data.resample("M").count()["title"]
    _x = count_by_month.index
    _y = count_by_month.values
    plt.plot(range(len(_x)), _y, label=group_name)
_x = _x.strftime("%Y-%m")
plt.xticks(range(len(_x)), _x, rotation=45)
plt.legend(loc="best")
plt.show()
结果如图:
pandas之时间序列的更多相关文章
- pandas处理时间序列(4): 移动窗口函数
		
六.移动窗口函数 移动窗口和指数加权函数类别如↓: rolling_mean 移动窗口的均值 pandas.rolling_mean(arg, window, min_periods=None, fr ...
 - pandas处理时间序列(3):重采样与频率转换
		
五.重采样与频率转换 1. resample方法 rng = pd.date_range('1/3/2019',periods=1000,freq='D') rng 2. 降采样 (1)resampl ...
 - 03. Pandas 2| 时间序列
		
1.时间模块:datetime datetime模块,主要掌握:datetime.date(), datetime.datetime(), datetime.timedelta() 日期解析方法:pa ...
 - pandas处理时间序列(2):DatetimeIndex、索引和选择、含有重复索引的时间序列、日期范围与频率和移位、时间区间和区间算术
		
一.时间序列基础 1. 时间戳索引DatetimeIndex 生成20个DatetimeIndex from datetime import datetime dates = pd.date_rang ...
 - pandas处理时间序列(1):pd.Timestamp()、pd.Timedelta()、pd.datetime( )、 pd.Period()、pd.to_timestamp()、datetime.strftime()、pd.to_datetime( )、pd.to_period()
		
Pandas库是处理时间序列的利器,pandas有着强大的日期数据处理功能,可以按日期筛选数据.按日期显示数据.按日期统计数据. pandas的实际类型主要分为: timestamp(时间戳) ...
 - pandas 之 时间序列索引
		
import numpy as np import pandas as pd 引入 A basic kind of time series object in pandas is a Series i ...
 - pandas之时间序列(data_range)、重采样(resample)、重组时间序列(PeriodIndex)
		
1.data_range生成时间范围 a) pd.date_range(start=None, end=None, periods=None, freq='D') start和end以及freq配合能 ...
 - pandas之时间序列笔记
		
时间戳tiimestamp:固定的时刻->pd.Timestamp 固定时期period:比如2016年3月份,再如2015年销售额->pd.Period 时间间隔interval:由起始 ...
 - 笔记  |  pandas之时间序列学习随笔1
		
1. 时间序列自动生成 ts = pd.Series(np.arange(1, 901), index=pd.date_range('2010-1-1', periods=900)) 最终生成了从20 ...
 
随机推荐
- less的安装与用法
			
1. node.js node.js是一个前端的框架 自带一个包管理工具npm node.js 的安装 官网:http://nodejs.cn/ 在命令行检验是否安装成功 打开cmd 切换到项目目录, ...
 - vue里的样式添加之行间样式
			
一:行间样式 :和绑定其他dom的属性一样, v-bind:style= <div v-bind:style={backgroundColor:color}>2</ ...
 - ArcGIS Server缓存清理
			
ArcGIS 发布服务,如果数据源没有注册到服务器话,会将数据复制到服务器指定目录.当发布一些较大的影像服务时,这种数据拷贝相当耗时. 所以,可以将数据粗处目录注册到ArcGIS Server服务器 ...
 - html table 固定表头和列
			
/**************************************************************** jQuery 插件. 功能: 固定表格标题行或列头 Version: ...
 - Springboot的2种启动方式
			
sprigboot既可以直接通过main方法启动,也可以在tomcat里启动,在main方法里启动很简单,直接run启动类的main方法就可以了. 在tomcat里启动是需要配置一下的,需要实现以下S ...
 - 程序中打印当前进程的调用堆栈(backtrace)
			
为了方便调式程序,产品中需要在程序崩溃或遇到问题时打印出当前的调用堆栈.由于是基于Linux的ARM嵌入式系统,没有足够的空间来存放coredump文件. 实现方法,首先用__builtin_fram ...
 - 初试kotlin:用Kotlin开发桌面/CommandLine 工具
			
既然kotlin是google和jetbrain联合搞的,开发环境不用说了肯定是Intellij Idea了. 先创建一个kotlin项目. 先来一个HelloWorld package com.xi ...
 - STL库学习笔记(待补充QAQ
			
几百年前就说要学STL了然后现在还没动呢QAQ总算还是克服了懒癌决定学下QAQ 首先港下有哪几个vector listset map stack queue,大概就这些? 然后因为有几个基本操作每个都 ...
 - Java并发问题--乐观锁与悲观锁以及乐观锁的一种实现方式-CAS
			
首先介绍一些乐观锁与悲观锁: 悲观锁:总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁.传统的关系型数据库里边就用到了很 ...
 - eclipse 中配置php的 XDebug调试
			
1. 打开 eclipse for php IDE,window->preference->PHP->Debug 2. 配置phpserver 3. 我的已经增加好了,默认的应该有l ...