包含几通道数据_大数据分析Python Datetime使用教程

53b3e66ebac1eb770ea3a3916e233b64.png

  在Python中处理日期和时间可能很麻烦。值得庆幸的是,有一种内置的方法可以简化该过程:Python datetime模块。

  datetime 帮助我们识别和处理与时间相关的元素,例如日期,小时,分钟,秒,星期几,月,年等。它提供各种服务,例如管理时区和夏时制。它可以处理时间戳数据。它可以从字符串中提取星期几,每月几号以及其他日期和时间格式。

  简而言之,这是一种处理Python中与日期和时间相关的任何东西的强大方法。因此,让我们开始吧!

  在大数据分析Python Datetime使用教程中,我们将详细了解python datetime函数,包括:

  1)创建日期对象

  2)从日期开始计算年月

  3)从日期开始获取月日和工作日

  4)从日期获取小时和分钟

  5)从日期开始获取一年中的第几周

  6)将日期对象转换为时间戳

  7)将UNIX时间戳字符串转换为日期对象

  8)处理timedelta对象

  9)得到两个日期和时间之间的差异

  10)格式化日期:strftime()和strptime()

  11)处理时区

  12)使用Pandas日期时间对象

    a)获取年,月,日,小时和分钟

    b)获取一年中的第几天

    c)将日期对象转换为DataFrame索引

  在学习大数据分析Python Datetime使用教程时,我们建议您在自己的计算机上运行代码。另外,如果你想在浏览器中运行的代码,并以互动的方式学习与回答检查,以确保你得到它的权利,我们的Python中间当然 有 Python中的日期时间的教训 ,我们建议。您可以通过注册免费的用户帐户来开始学习。

  Python日期时间类

  在开始编写代码之前,值得研究一下datetime 模块中使用的五个主要对象类。根据我们要执行的操作,我们可能需要使用以下一个或多个不同的类:

  1)datetime –允许我们一起操作时间和日期(月,日,年,小时,秒,微秒)。

  2)日期 –使我们可以独立于时间(月,日,年)操纵日期。

  3)时间 –允许我们独立于日期(小时,分钟,秒,微秒)操纵时间。

  4)timedelta -甲 持续时间 的用于操作的日期和测量时间。

  5)tzinfo —用于处理时区的抽象类。

  如果这些区别还没有意义,请不用担心!让我们深入研究 datetime 并开始使用它,以更好地了解它们的应用方式。

  创建日期对象

  首先,让我们仔细看看一个 datetime 对象。由于 datetime 既是一个模块又是该模块中的一个类,所以我们将从datetime 从datetime 模块中导入该类 开始 。

  然后,我们将打印当前日期和时间,以仔细查看datetime 对象中包含的内容 。我们可以使用datetime的 .now() 功能来做到这一点 。我们将打印日期时间对象,然后使用来打印其类型, type() 以便我们仔细观察。

3050fefa4d51016f59d747019228b883.png

  从上面的结果我们可以看到,datetime_object 确实是 该类的一个 datetime 对象 datetime。这包括年,月,日,小时,分钟,秒和微秒。

  从日期中提取年份和月份

  现在我们已经看到了是什么让一个 datetime 对象,我们可能已经猜到了如何 date 和 time 对象看,因为我们知道, date 物体就像 datetime 没有时间数据和 time 对象就像 datetime 没有最新数据。

  我们还可以解决一些问题。例如,在大多数数据集中,日期和时间信息都以字符串格式存储!另外,我们可能不 想要 所有这些日期和时间数据-如果我们要进行诸如月度销售分析之类的事情,将事情分解成微秒将不会很有用。

  因此,现在让我们开始深入研究数据科学中的一项常见任务:使用来从字符串中仅提取我们实际需要的元素 datetime。

  为此,我们需要做一些事情。

  使用strptime()和strftime()处理日期和时间字符串

  幸运的是,datetime 包含两个方法, strptime() 以及 strftime(),用于从字符串对象转换成 datetime 对象,反之亦然。 strptime() 可以读取带有日期和时间信息的字符串并将其转换为 datetime 对象, strftime() 并将datetime对象转换回字符串。

  当然, strptime() 这不是魔术,它不能将任何 字符串转换为日期和时间,并且需要我们的一点帮助来解释它所看到的内容!但是它能够读取日期和时间数据的大多数常规字符串格式(有关更多详细信息,请参阅 文档)。让我们给它一个日期字符串,格式为YYYY-MM-DD,看看它能做什么!

d61a3d9ef9095791b70ab119ee6fc6b3.png

  请注意,它strptime() 带有两个参数:字符串(my_string)和 "%Y-%m-%d"另一个告诉 strptime() 如何解释输入字符串的字符串 my_string。 %Y,例如,告诉它期望字符串的前四个字符为年份。

  文档中提供了这些模式的完整列表 ,我们将在大数据分析Python Datetime使用教程的后面部分更深入地介绍这些方法。

  您可能还注意到, 00:00:00 日期中已添加的时间。那是因为我们创建了一个 datetime 对象,其中必须包含日期 和 时间。 00:00:00 是在我们输入的字符串中未指定时间的情况下将分配的默认时间。

  无论如何,我们希望将日期的特定元素分开进行分析。一种方法可以做到这一点使用内置的DateTime对象的类属性,像 .month 或 .year:

912bd285f29591be884cb3b8c195ced1.png

  从日期获取每月的某天和一周的某天

  让我们做更多的提取,因为这是一个非常普通的任务。这次,我们将尝试从中获取每月的某天和一周的某天 my_date。Datetime使用它的.weekday() 函数可以将星期几作为数字,但是我们可以使用calendar 模块和称为方法将其 转换为文本格式(即,星期一,星期二,星期三…) day_name。

  我们将从导入开始 calendar,然后使用 .day and .weekday() on my_date。从那里,我们可以像这样获取文本格式的星期几:

6514943a946a1a5bba4bc98c3d111980.png

  等一下,看起来有点奇怪!一周的第三天应该是星期三,而不是星期四,对吧?

  让我们day_name 使用for循环仔细查看该 变量:

d47d3739b75a58b233191b654ed93c58.png

  现在我们可以看到Python从星期一开始,从索引0开始计数,而不是从1开始计数。因此,如上所述将数字3转换为“星期四”是有意义的。

  从Python日期时间对象获取小时和分钟

  现在,让我们深入研究时间,并从datetime对象中提取小时和分钟。就像我们上面对月份和年份所做的操作一样,我们可以使用类属性 .hour 并 .minute 获取一天中的小时和分钟。

  让我们使用.now() 函数设置新的日期和时间。截至撰写本文时,它是2019年10月25日上午10:25。当然,根据选择运行此代码的时间,您将获得不同的结果!

379dd449f9ac3903e20ba1a7942aa3c4.png

  从日期时间对象获取一年中的星期

  我们也可以用来做更奇特的事情 datetime。例如,如果我们想知道一年中的哪一周?

  我们可以从datetime 具有该.isocalendar() 功能的对象 获取年,年中的星期几和星期几 。

  具体来说, isocalendar() 返回具有ISO年,周号和工作日的元组。在 ISO日历 是基于公历广泛使用的标准日历。您可以在该链接上详细了解它,但是出于我们的目的,我们需要知道的是它作为常规日历运行,从每周的星期一开始。

e9344ef144a937aafbfbd1d7f37446e6.png

  请注意,在ISO日历中,星期从1开始计数,因此这里5代表星期中的正确日期:星期五。

  从上面我们可以看到,这是一年的第43周,但是如果我们想隔离该数字,则可以像使用任何其他Python列表或元组那样使用索引来实现:

684a835dbdd0a0d96223b1dc58bbf21c.png

  将日期对象转换为Unix时间戳和反之

  在编程中,遇到作为时间戳存储的时间和日期数据,或者想以Unix时间戳格式存储自己的数据并不少见。

  我们可以使用datetime的内置timestamp() 函数来做到这一点 ,该函数将一个 datetime 对象作为参数并以时间戳格式返回该日期和时间:

6a555c69fd8802df46bd2ea8f8130b51.png

  同样,我们可以使用进行反向转换fromtimestamp()。此 datetime 函数以时间戳(浮点格式)作为参数并返回一个 datetime 对象,如下所示:

ca9b4a134fc4c2fd083125f3e83ddf8c.png

  使用Timedelta对象测量时间跨度

  通常,我们可能想使用Python日期时间来测量时间跨度或持续时间。我们可以使用其内置timedelta 类来做到这一点 。甲 timedelta 对象表示的两个日期或时间之间的时间量。我们可以使用它来测量时间跨度,或者通过对日期或时间进行加减来操纵日期或时间,等等。

  默认情况下,timedelta对象的所有参数均设置为零。让我们创建一个新的timedelta对象,该对象长两个星期,然后看一下它的外观:

dbc89cd2b52ae88af306b035e882a8eb.png

  请注意,我们可以使用timedelta class属性获得以天为单位的持续时间.days。正如我们在其文档中看到的那样 ,我们还可以以秒或微秒为单位获取该持续时间。

  让我们创建另一个timedelta持续时间以进行更多练习:

7e57a363481168f4bb7fc7ab0089df11.png

  现在,让我们开始使用timedelta对象和datetime对象进行一些数学运算!具体来说,让我们在当前时间和日期上添加几个不同的持续时间,以查看15天后(两周前的日期)后的日期。

  为此,我们可以使用 + 或 - 运算符在datetime对象中添加timedelta对象或从中减去。结果将是datetime对象,加上或减去我们的timedelta对象中指定的持续时间。酷吧?

  (注意:在下面的代码中,它是10月25日上午11:12;由于我们datetime 使用该.now() 函数获取对象 ,因此您的结果将根据运行代码的时间而有所不同 )。

914f78964c2676fa58fa39b93437af85.png

  请注意,这些数学运算的输出仍然是一个datetime 对象。

  找出两个日期和时间之间的差异

  与上面的操作类似,我们还可以从另一个日期中减去一个日期,以使用datetime找出它们之间的时间跨度。

  由于此数学运算的结果是一个 持续时间,因此当我们从另一个日期减去一个日期时产生的对象将是一个 timedelta 对象。

  在这里,我们将创建两个 date 对象(注意,这些datetime 对象与对象的工作原理相同 ,只是不包括时间数据),并从另一个对象中减去一个对象以找到持续时间:

e81cbe2f6b221f61f0f42a83860dc66a.png

  上面,为了清楚起见,我们仅使用日期,但是我们可以对datetime 对象执行相同的操作,以获得更精确的度量,包括小时,分钟和秒:

f230edf64208b52b79e0a70c8a9ddc24.png

  格式化日期:有关strftime()和strptime()的更多信息

  我们在 前面strftime() 和 strptime()前面进行了简要介绍 ,但让我们仔细看一下这些方法,因为它们对于Python中的数据分析工作通常很重要。

  strptime() 是我们之前使用的方法,您会记得它可以将以文本字符串格式设置的日期和时间转换为datetime对象,格式如下:

  time.strptime(string, format)

  请注意,它带有两个参数:

  1)string-我们要转换的字符串格式的时间

  2)format-字符串中时间的特定格式,以便strptime()可以正确解析它

  这次尝试转换另一种日期字符串。 该站点 对于查找帮助strptime() 解释我们的字符串输入所需的格式代码是非常有用的参考 。

420e692d11d73d560eb0f6187138c707.png

  现在,让我们做一些更高级的操作,以练习到目前为止所学的一切!我们将从字符串格式的日期开始,将其转换为datetime对象,然后看一下几种不同的格式化方式(dd / mm和mm / dd)。

  然后,坚持使用mm / dd格式,将其转换为Unix时间戳。然后,我们将它转换成一个 datetime 对象,并转换 是使用一些不同的回字符串 的strftime模式 来控制输出:

7d015f36c8b6d0c7be95102e70200d86.png

  这是您可以使用备忘单保存的图像,用于常见的,有用的strptime和strftime模式:

6d34f1c550af2e603bbb6b9ba85ab4a3.png

  让我们使用这些进行更多练习:

5a12b424119694c6b55b45d6b0c5d454.png

  处理时区

  当涉及时区时,在Pythin中处理日期和时间会变得更加复杂。值得庆幸的是,该 pytz 模块可以帮助我们处理跨时区转换。它还可以在使用该时间的位置处理夏令时。

  我们可以使用该 localize 函数向Python日期时间对象添加时区位置。然后,我们可以使用该函数 astimezone() 将现有的本地时区转换为我们指定的任何其他时区(它将要转换成的时区作为参数)。

  例如:

aa02ced2f812a5000d159af6c3359305.png

  使用包含多个不同时区的数据集时,此模块可以帮助简化工作。

  使用pandasDatetime对象

  数据科学家之所以喜欢 pandas ,有很多原因。其中之一是它包含用于处理时间序列数据的广泛功能。与datetime 本身非常相似 ,pandas同时具有 datetime 和 timedelta 对象,分别用于指定日期,时间和持续时间。

  我们可以使用以下功能将日期,时间和持续时间文本字符串转换为pandas Datetime对象:

  1)to_datetime():将字符串日期和时间转换为Python datetime对象。

  2)to_timedelta():以天,小时,分钟和秒为单位查找时间差异。

  正如我们将看到的,这些函数实际上非常擅长通过自动检测字符串的格式将字符串转换为Python datetime对象,而无需我们使用strftime模式进行定义。

  让我们看一个简单的例子:

cb5ad4ef3a49145e4e3ca0f7b0a3e2cc.png

  请注意,即使我们给它提供了一个包含一些复杂因素(例如“ th”和“ sep”而不是“ Sep”)的字符串。或“ 9月”,pandas能够正确解析字符串并返回格式化日期。

  我们还可以使用pandas(及其一些附属的numpy功能)将日期范围自动创建为pandas系列。例如,在下面,我们从上面定义的日期开始创建一系列十二个日期。然后,我们使用pd.date_range()以下命令从预定义的日期开始创建一系列不同的日期 :

2d5a8398edd412f7700f2cb98c5960cd.png

  以pandas为单位获取年,月,日,小时,分钟

  通过使用dt 所有列的属性,我们可以轻松地从pandas数据框的列中的日期获取年,月,日,小时或分钟 。例如,我们可以 df['date'].dt.year 用来仅从包含完整日期的pandas列中提取年份。

  为了探索这一点,让我们使用上面创建的系列之一来制作一个快速的DataFrame:

0e95416cf23af01d97910e43280d7dbc.png

  现在,让我们使用相关的Python datetime(通过访问dt)属性为日期的每个元素创建单独的列 :

88bc4ed3ba92a187ae3f12228a3b1ebf.png

  获取工作日和一年中的某天

  pandas还能够从其datetime对象中获取其他元素,例如星期几和一年中的一天。同样,我们可以使用 dt 属性来执行此操作。请注意,这里与Python一般一样,一周从星期一的索引0开始,所以一周的第五天是 星期六。

db2a3fee4966cee9a9c63e4329143fdc.png

  将日期对象转换为DataFrame索引

  我们还可以使用pandas将datetime列添加到DataFrame的索引中。这对于诸如探索性数据可视化之类的任务可能非常有帮助,因为matplotlib将识别出DataFrame索引是一个时间序列并相应地绘制数据。

  为此,我们要做的就是重新定义 df.index:

6d1eabafe4c1eb563f093acb6c8e039d.png

  结论

  在大数据分析Python Datetime使用教程中,我们深入研究了Python日期时间,并且还对pandas和日历模块做了一些工作。我们已经介绍了很多内容,但是请记住:最好的学习方法是亲自编写代码!

  如果您想练习datetime 使用交互式答案检查来编写代码,请查看我们的 Python中间课程 , 以通过交互式答案检查和浏览器内代码运行来学习Python中的日期时间。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值