17. Series.dt.month-提取日期数据中的月份信息

【目录】


【正文】

17. Series.dt.month-提取日期数据中的月份信息

学习时间:30分钟。

1. 知识回顾-创建一个Series对象

  • pandas库的核心数据结构是两种类型的数据对象:Series对象和DataFrame对象。
  • Series对象是一维数组。
  • DataFrame对象是二维数组。

创建一个Series对象:

【语法】

pd.Series(data, index)

【参数】

  • pd是库名。
  • .英文小圆点。库名后接一个小圆点表示调用。
  • Series类名。
  • data是必需参数,表示要传递的数据。
  • index是可选参数,用于自定义行索引。

【课堂练习】

创建一个Series对象,存储以下3个数据:
2021-01-01
2022-02-02
2023-03-03

【代码示例】

# 导入pandas库并简写为pd
import pandas as pd 

data =['2021-01-01', '2022-02-02', '2023-03-03']

s1 = pd.Series(data)
print(s1)

【终端输出】

0    2021-01-01
1    2022-02-02
2    2023-03-03
dtype: object

【备注】

以上知识点可以参加下面的链接:

2. Series对象-一维数据

学习就是一个从陌生到熟悉的过程,重复的次数多了,它就是你的了。

2. 知识回顾-pd.to_datetime()将数据转换为pandas中的日期时间格式

【作用】

pd.to_datetime()函数是pandas库中的一个函数,用于将输入的日期时间转换为pandas中的日期时间格式。

【语法】

pd.to_datetime(arg, format)
  • pd库名,是pandas库的简写。
  • 英文小圆点.
  • to_datetime函数名,理解为转换成日期格式的函数。

【参数】

  • arg :需要转换为日期时间格式的参数,可以是字符串、列表、数组、Series、DataFrame等。
  • format:可选参数,默认值为None,表示输入日期时间的格式。如果不指定,则会尝试自动推断格式。

【课堂练习】

将上面的Series对象转换为日期格式。

【代码示例】

# 导入pandas库并简写为pd
import pandas as pd 

data =['2021-01-01', '2022-02-02', '2023-03-03']

# pd.Series(data, index)创建一个Series对象
s1 = pd.Series(data)

# pd.to_datetime(arg, format)转换为日期时间格式
data = pd.to_datetime(s1)

print(data)

【终端输出】

0   2021-01-01
1   2022-02-02
2   2023-03-03
dtype: datetime64[ns]

3. 实例化类相关知识

在面向对象编程中,类是一个模板,而对象则是根据这个模板创建出来的具体实体。

通过实例化,我们可以使用类中定义的属性和方法来完成相应的操作。

【创建对象语法】

对象名 = 类名()

  • 等号的左边是我们给创建对象起的名字。

  • 等号右边写类名,表示这个对象是根据这个类生产出来的。

  • 类名后紧跟一对英文圆括号( )

【查看对象属性语法】

对象名.属性名

属性是定义在类里的变量。

4. Series.dt.month是什么?

  • Series.dt.yaer是pandas库中Series对象的一个属性,用于获取Series对象中日期时间值的年份
  • Series.dt.month是pandas库中Series对象的一个属性,用于获取Series对象中日期时间值的月份
  • Series.dt.day是pandas库中Series对象的一个属性,用于获取Series对象中日期时间值的

5. 如何使用Series.dt.month?

首先,我们需要导入Pandas库:

import pandas as pd

接下来,我们可以创建一个包含日期时间数据的Series对象:

# 语法:pd.Series(data, index)
dates = pd.Series(['2021-01-01', '2022-02-02', '2023-03-03'])

然后将Series对象转换为日期时间类型:

# 语法:pd.to_datetime(arg, format)
s = pd.to_datetime(dates)

最后使用Series.dt获取日期属性:

# 语法:Series.dt.month
# s是一个Series对象,是对象名
# dt是Series对象的时间属性,是属性名
print("提取年份值:")
print(s.dt.year)  # 输出:0    2021
                  #      1    2022
                  #      2    2023
                  #      dtype: int64
print("提取月份值:")
print(s.dt.month) # 输出:0    1
                  #      1    2
                  #      2    3
                  #      dtype: int64
print("提取日值:")
print(s.dt.day)   # 输出:0    1
                  #      1    2
                  #      2    3
                  #      dtype: int64

【终端输出】

提取年份值:
0    2021
1    2022
2    2023
dtype: int64
提取月份值:
0    1
1    2
2    3
dtype: int64
提取日值:
0    1
1    2
2    3
dtype: int64

6. Series.dt.month的语法

【查看对象属性语法】

对象名.属性名

Series.dt.month
  • Series表示要操作的Series对象,是对象名。
  • dt是Series对象的时间属性,是属性名。
  • 该时间属性有 year(年)、month(月)、day(日)等多个值。
  • month表示要提取的具体时间月份值,可以替换成year或day

7. 返回值

Series对象中的数据必须为日期时间类型,否则会报错。

Series.dt.month返回的是一个新的Series对象,不会修改原有的Series对象。

8. 实操练习

【目标任务】

提供一个名为销售表.csv的表。

任务1:查看其日期列的数据类型。

任务2:将日期列的数据类型转换为日期类型。

任务3:提取日期列数据的日值。

【代码示例】

# 导入pandas库并简写为pd
import pandas as pd

# 文件的绝对路径
file = r"D:\安迪笔记\4.数据分析\17\销售表.csv"

# 调用函数:库名.函数名()
# pd是库名
# read_excel是函数名
# io参数=file,file是路径
df = pd.read_csv(file)

print("*****查看DataFrame每一列的数据类型*****",)
df.info()
print('\n')

print("*****查看日期列数据*****")
print(df["日期"],'\n')

# 将`日期`列的数据类型转换为日期类型
data = pd.to_datetime(df["日期"], format = '%Y-%m-%d')

print("*****提取日期数据中的日值*****")
day_data = data.dt.day

print(day_data)

【终端输出】

*****查看DataFrame每一列的数据类型*****
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 14 entries, 0 to 13
Data columns (total 6 columns):
 #   Column  Non-Null Count  Dtype 
---  ------  --------------  ----- 
 0   订单编号    14 non-null     object
 1   日期      14 non-null     object
 2   省       14 non-null     object
 3   订单量     14 non-null     int64 
 4   单价      14 non-null     int64 
 5   销售额     14 non-null     int64 
dtypes: int64(3), object(3)
memory usage: 800.0+ bytes


*****查看日期列数据*****
0      2020-1-1
1      2020-1-2
2      2020-1-3
3      2020-1-4
4      2020-1-5
5      2020-1-6
6      2020-1-7
7      2020-1-8
8      2020-1-9
9     2020-1-10
10    2020-1-11
11    2020-1-12
12    2020-1-13
13    2020-1-14
Name: 日期, dtype: object 

*****提取日期数据中的日值*****
0      1
1      2
2      3
3      4
4      5
5      6
6      7
7      8
8      9
9     10
10    11
11    12
12    13
13    14
Name: 日期, dtype: int64

9. 总结

在这里插入图片描述