检查Pandas的失踪日期

检查Pandas的失踪日期

在这篇文章中,我们将学习如何在Pandas中检查丢失的日期。

使用pd.DataFrame()从列表的字典中创建一个数据框,它接受数据作为其参数。请注意,这里的字典由两个列表组成,名为DateName.,这两个列表的长度相同,而且在给定的日期序列中缺少一些日期(从2021-01-18到2021-01-25_)。

检查Pandas的失踪日期

检查遗漏的日期

检查数据框中是否缺少给定的Date

在这里,如果日期是存在的,我们将返回True,如果日期在数据框中丢失,则返回False。

import pandas as pd
# A dataframe from a dictionary of lists
data = {'Date': ['2021-01-18', '2021-01-20',
                 '2021-01-23', '2021-01-25'],
       'Name': ['Jia', 'Tanya', 'Rohan', 'Sam']}
 
df = pd.DataFrame(data)
 
df['Date'] = pd.to_datetime(df['Date'])
 
d='2021-01-19'
print(pd.to_datetime(d) in df['Date'].tolist())
Python

输出:

True
Python

使用data_range()和.difference()函数来检查缺失的日期

示例 1:

df.set_index() **** 方法将日期作为我们创建的数据框架的索引。人们可以简单地使用print(df)来打印数据框,以查看设置日期作为索引之前和之后的数据。现在,一旦我们将日期设置为索引,我们就将给定的日期列表转换为DateTime对象。最初,我们列表中的日期是字符串,需要转换为DateTime对象。Pandas为我们提供了一个名为to_datetime()的方法,可以将字符串格式的日期和时间转换为_DateTime对象

#import pandas
import pandas as pd
 
# A dataframe from a dictionary of lists
data = {'Date': ['2021-01-18', '2021-01-20',
                 '2021-01-23', '2021-01-25'],
        'Name': ['Jia', 'Tanya', 'Rohan', 'Sam']}
df = pd.DataFrame(data)
 
# Setting the Date values as index
df = df.set_index('Date')
 
# to_datetime() method converts string
# format to a DateTime object
df.index = pd.to_datetime(df.index)
 
# dates which are not in the sequence
# are returned
print(pd.date_range(
  start="2021-01-18", end="2021-01-25").difference(df.index))
Python

输出:

最后,我们得到了2021-01-18和2021-01-25之间缺少的所有日期。

DatetimeIndex([‘2021-01-19’, ‘2021-01-21’, ‘2021-01-22’, ‘2021-01-24′], dtype=’datetime64[ns]’, freq=None)

Pandas.Index.difference() **** 返回一个新的索引,其中的元素不在其他索引中。因此,通过使用pd.date_range(start date, end date).difference(Date),我们可以得到所有不存在于我们的日期列表中的日期。返回的数据类型是一个类似于Immutable ndarray的datetime64数据。

示例 2:

让我们考虑另一个例子。然而,这一次我们将不把日期设置为索引,而是在pd.date_range()函数中指定freq=’B’(营业日频率)。

就像前面的例子一样,我们从列表的字典中制作一个数据框架。但是,这一次我们不把日期值设置为索引。相反,我们将列 “总人数 “作为我们的索引值。使用pd.date_range()函数,将开始日期、结束日期和频率作为参数,我们提供这些值。我们设置freq=’B’(营业日频率),以便省略周末。最后,Pandas.Index.difference()Date列作为参数,并返回所有不在给定值集合中的值。

#import pandas
import pandas as pd
 
# A dataframe from a dictionary of lists
d = {'Date': ['2021-01-10', '2021-01-14', '2021-01-18',
              '2021-01-25', '2021-01-28', '2021-01-29'],
     'Total People': [20, 21, 19, 18, 13, 56]}
df = pd.DataFrame(d)
 
# Setting the Total People as index
df = df.set_index('Total People')
 
# to_datetime() method converts string
# format to a DateTime object
df['Date'] = pd.to_datetime(df['Date'])
 
# dates which are not in the sequence
# are returned
my_range = pd.date_range(
  start="2021-01-10", end="2021-01-31", freq='B')
 
print(my_range.difference(df['Date']))
Python

输出:

检查Pandas的失踪日期

检查遗漏的日期

请注意,除了2021-01-23、2021-01-24和2021-01-30之外的所有缺失值都被返回,因为我们设置了freq=’B’,省略了所有的周末时间。

使用reindex()函数检查丢失的日期

在这里,我们将字符串类型的日期转换为数据时间类型,在reindex()的帮助下,我们将检查所有在给定数据框架中缺失的日期,并将其分配为True,否则分配为False。

import pandas as pd
  
# A dataframe from a dictionary of lists
data = {'Date': ['2021-01-18', '2021-01-20',
                 '2021-01-23', '2021-01-25'],
       'Name': ['Jia', 'Tanya', 'Rohan', 'Sam']}
df = pd.DataFrame(data)
 
df['Date'] = pd.to_datetime(df['Date'])
 
df.set_index('Date', inplace=True)
 
df.reindex(pd.date_range('2021-01-17', '2021-01-29')
                        ).isnull().all(1)
Python

输出:

检查Pandas的失踪日期

检查遗漏的日期

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

Pandas 日期时间

登录

注册