python Pandas时序数据处理

 更新时间:2022年06月14日 11:22:00   作者:LauZyHou  
这篇文章主要介绍了python Pandas时序数据处理,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下

Python中时间的一些常用操作

import time
# 从格林威治时间到现在,单位秒
print('系统时间戳:', time.time())
print('本地时间按格式转成str:', time.strftime('%Y-%m-%d %X', time.localtime()))
# 无参的localtime返回time.struct_time格式的时间,是本地时区的时间
print('无参localtime:', time.localtime())
print('本时区时间转成时间戳:', time.mktime(time.localtime()))
# 将时间戳转换为能读懂的时间
print('时间戳转时间:', time.strftime('%Y-%m-%d %X', time.localtime(time.time())))

运行结果:

系统时间戳: 1542188096.1592166
本地时间按格式转成str: 2018-11-14 17:34:56
无参localtime: time.struct_time(tm_year=2018, tm_mon=11, tm_mday=14, tm_hour=17, tm_min=34, tm_sec=56, tm_wday=2, tm_yday=318, tm_isdst=0)
本时区时间转成时间戳: 1542188096.0
时间戳转时间: 2018-11-14 17:34:56

Pandas时间序列(DatetimeIndex)与时序数据

时间序列在Series对象中且作为索引存在时,就构成了时序数据。

import datetime
import numpy as np
import pandas as pd
# pd.date_range()函数用于创建一个Pandas时间序列DatetimeIndex
# start参数(也是第一个参数)传入一个str格式的开始时间,也可以传入一个datetime对象
# 这里用datetime.datetime()创建了一个datetime对象,只用了前三个参数也就是年月日
# pd.date_range()函数可以指明end表示时间序列的结尾时间
# 这里用periods参数指明序列中要生成的时间的个数,freq='D'指定为每天(Day)生成一个时间
dti = pd.date_range(start=datetime.datetime(2018, 11, 14), periods=18, freq='D')
print(dti, '\n', '*' * 40, sep='')
# 将时间序列放在Series对象中作为索引,这里freq='W'表示隔一周生成一个
s_dti = pd.Series(np.arange(6), index=pd.date_range('2018/11/4', periods=6, freq='W'))
print(s_dti.head(), '\n', '*' * 40, sep='')
# 取时序数据中指定时间的内容
print(s_dti['2018-11-25'], '\n', '*' * 40, sep='')
# 取第二个索引对应的时间的年月日
print(s_dti.index[2].year, s_dti.index[2].month, s_dti.index[2].day, '\n', '*' * 40, sep='')

运行结果:

DatetimeIndex(['2018-11-14', '2018-11-15', '2018-11-16', '2018-11-17',
               '2018-11-18', '2018-11-19', '2018-11-20', '2018-11-21',
               '2018-11-22', '2018-11-23', '2018-11-24', '2018-11-25',
               '2018-11-26', '2018-11-27', '2018-11-28', '2018-11-29',
               '2018-11-30', '2018-12-01'],
              dtype='datetime64[ns]', freq='D')
****************************************
2018-11-04    0
2018-11-11    1
2018-11-18    2
2018-11-25    3
2018-12-02    4
Freq: W-SUN, dtype: int32
****************************************
3
****************************************
20181118
****************************************

杭州天气的时序处理

import pandas as pd
import matplotlib as mpl
import matplotlib.pyplot as plt
df = pd.read_csv('E:/Data/practice/hz_weather.csv')
df = df[['日期', '最高气温', '最低气温']]
# print(df.head())

print(type(df.日期))  # <class 'pandas.core.series.Series'>
print(type(df.日期.values))  # <class 'numpy.ndarray'>

# 修改日期格式
# 注意,df.日期得到的是Series对象,df.日期.values得到的是ndarray多维数组
# pd.to_datetime()函数将输入解析成时间对象的格式并返回
# format参数指定解析的方式
# 当输入列表形式的值时,返回DatetimeIndex;当输入Series时,返回Series;当输入常量时,返回Timestamp
print(type(pd.to_datetime(df.日期.values, format="%Y-%m-%d")))  # <class 'pandas.core.indexes.datetimes.DatetimeIndex'>
print(type(pd.to_datetime(df.日期, format="%Y-%m-%d")))  # <class 'pandas.core.series.Series'>
df.日期 = pd.to_datetime(df.日期.values, format="%Y-%m-%d")
# print(df.head())

# 将日期设置为索引
df = df.set_index('日期')
# 取出第0个索引值对应的日期
print(df.index[0])  # 2017-01-01 00:00:00
# DatetimeIndex里存的是一个个的Timestamp,查看一下类型
print(type(df.index[0]))  # <class 'pandas._libs.tslibs.timestamps.Timestamp'>
# print(df.info())

# 提取1月份的温度数据
df_jan = df[(df.index >= "2017-1-1") & (df.index < "2017-2-1")]
# 或用这种方式也可以
df_jan = df["2017-1-1":"2017-1-31"]
# print(df_jan.info())

# 只取到月份
df_m = df.to_period('M')
# print(df_m.head())

# 利用上面的只取到月份,对level=0(即索引层级)做聚合就可以求月内的平均值等
s_m_mean = df_m.groupby(level=0).mean()
# print(s_m_mean.head())

# 绘制[最高温度]和[最低温度]两个指标随着索引[时间]变化的图
fig, ax = plt.subplots(1, 1, figsize=(12, 4))
df.plot(ax=ax)
plt.show()

附:matplotlib中文支持

到此这篇关于python Pandas时序数据处理 的文章就介绍到这了,更多相关Pandas 时序数据 内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • PIL.Image.open和cv2.imread的比较与相互转换的方法

    PIL.Image.open和cv2.imread的比较与相互转换的方法

    这篇文章主要介绍了PIL.Image.open和cv2.imread的比较与相互转换的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-06-06
  • python使用xmlrpclib模块实现对百度google的ping功能

    python使用xmlrpclib模块实现对百度google的ping功能

    这篇文章主要介绍了python使用xmlrpclib模块实现对百度google的ping功能,实例分析了xmlrpclib模块的相关技巧,需要的朋友可以参考下
    2015-06-06
  • pandas dataframe中双中括号和单中括号的区别及说明

    pandas dataframe中双中括号和单中括号的区别及说明

    这篇文章主要介绍了pandas dataframe中双中括号和单中括号的区别及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • Python通过wordcloud库实现将单词生成词云

    Python通过wordcloud库实现将单词生成词云

    Python的wordcloud库是一个用于生成词云的Python包,它可以将一段文本中出现频率高的单词按其出现频率大小以及颜色深浅排列成一个词云图形,从而更好地展示文本中的信息,你可以使用wordcloud库来生成各种类型的词云,本文就介绍了如何生成心型词云
    2023-06-06
  • Python Traceback异常代码排错利器使用指南

    Python Traceback异常代码排错利器使用指南

    这篇文章主要为大家介绍了Python Traceback异常代码排错利器使用指南,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2024-01-01
  • Python使用matplotlib绘制余弦的散点图示例

    Python使用matplotlib绘制余弦的散点图示例

    这篇文章主要介绍了Python使用matplotlib绘制余弦的散点图,涉及Python操作matplotlib的基本技巧与散点的设置方法,需要的朋友可以参考下
    2018-03-03
  • python面积图之曲线图的填充

    python面积图之曲线图的填充

    这篇文章主要介绍了python面积图之曲线图的填充,文章围绕主题的相关资料展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下,希望对你的学习有所帮助
    2022-06-06
  • Python对PDF文件的常用操作方法详解

    Python对PDF文件的常用操作方法详解

    PDF是Portable Document Format的缩写,这类文件通常使用`.pdf`作为其扩展名。在日常开发工作中,最容易遇到的就是从PDF中读取文本内容以及用已有的内容生成PDF文档这两个任务。本文为大家介绍了几个Python中常见的PDF操作,需要的可以参考一下
    2022-05-05
  • Python必备技巧之字符数据操作详解

    Python必备技巧之字符数据操作详解

    处理字符数据是编程不可或缺的一部分。Python 提供了一组丰富的运算符、函数和方法来处理字符串。包括字符串运算符、内置函数、索引、切片和内置方法。快来学习一下吧
    2022-03-03
  • 解决nohup重定向python输出到文件不成功的问题

    解决nohup重定向python输出到文件不成功的问题

    今天小编就为大家分享一篇解决nohup重定向python输出到文件不成功的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-05-05

最新评论