本系列文章配套代码获取有以下三种途径:
-
可以在以下网站查看,该网站是使用JupyterLite搭建的web端Jupyter环境,因此无需在本地安装运行环境即可使用,首次运行浏览器需要下载一些配置文件(大约20M):
https://returu.github.io/Python_Data_Analysis/lab/index.html
-
也可以通过百度网盘获取,需要在本地配置代码运行环境,环境配置可以查看【Python基础】2.搭建Python开发环境:
链接:https://pan.baidu.com/s/1MYkeYeVAIRqbxezQECHwcA?pwd=mnsj
提取码:mnsj
-
前往GitHub详情页面,单击 code 按钮,选择Download ZIP选项:
https://github.com/returu/Python_Data_Analysis
根据《Python for Data Analysis 3rd Edition》翻译整理
—————————————————–
pandas.date_range
根据特定频率生成具有指定长度的DateTimeIndex
:
1>>> index = pd.date_range("2022-11-1" , "2022-12-1")
2>>> index
3DatetimeIndex(['2022-11-01', '2022-11-02', '2022-11-03', '2022-11-04',
4 '2022-11-05', '2022-11-06', '2022-11-07', '2022-11-08',
5 '2022-11-09', '2022-11-10', '2022-11-11', '2022-11-12',
6 '2022-11-13', '2022-11-14', '2022-11-15', '2022-11-16',
7 '2022-11-17', '2022-11-18', '2022-11-19', '2022-11-20',
8 '2022-11-21', '2022-11-22', '2022-11-23', '2022-11-24',
9 '2022-11-25', '2022-11-26', '2022-11-27', '2022-11-28',
10 '2022-11-29', '2022-11-30', '2022-12-01'],
11 dtype='datetime64[ns]', freq='D')
默认情况下,pandas.date_range
生成的是每日的时间戳。如果只传递开始或者结束日期,则必须将一个用于生成范围的数字传递给 periods
参数:
1>>> pd.date_range(start="2022-11-1" , periods=10)
2DatetimeIndex(['2022-11-01', '2022-11-02', '2022-11-03', '2022-11-04',
3 '2022-11-05', '2022-11-06', '2022-11-07', '2022-11-08',
4 '2022-11-09', '2022-11-10'],
5 dtype='datetime64[ns]', freq='D')
6
7
8>>> pd.date_range(end="2022-12-1" , periods=10)
9DatetimeIndex(['2022-11-22', '2022-11-23', '2022-11-24', '2022-11-25',
10 '2022-11-26', '2022-11-27', '2022-11-28', '2022-11-29',
11 '2022-11-30', '2022-12-01'],
12 dtype='datetime64[ns]', freq='D')
开始日期和结束日期为生成的日期索引定义了严格的界限。例如,如果您想要一个包含每个月的最后一个工作日的日期索引,可以传递“BM”频率(business end of month)到 freq
参数,并且只有日期落在日期间隔内才会被包括:
1>>> pd.date_range(start="2022-1-1" , end="2023-1-1" , freq="BM")
2DatetimeIndex(['2022-01-31', '2022-02-28', '2022-03-31', '2022-04-29',
3 '2022-05-31', '2022-06-30', '2022-07-29', '2022-08-31',
4 '2022-09-30', '2022-10-31', '2022-11-30', '2022-12-30'],
5 dtype='datetime64[ns]', freq='BM')
基础时间序列频率如下所示(并非全部):
别名 |
偏置类型 |
说明 |
D | Day | 日历日的每天 |
B | BusinessDay | 工作日的每天 |
H | Hour | 每小时 |
T or min |
Minute | 每分钟 |
S | Second | 每秒 |
L or ms |
Milli | 每毫秒(1/1,000秒) |
U | Micro | 每微秒(1/1,000,000秒) |
M | MonthEnd | 每月最后一个日历日 |
BM | BusinessMonthEnd | 每月最后一个工作日 |
MS | MonthBegin | 每月第一个日历日 |
BMS | BusinessMonthBegin | 每月第一个工作日 |
W-MON, W-TUE, … | Week | 按给定的星期日期在每周取日期(MON, TUE, WED, THU, FRI, SAT, or SUN) |
WOM-1MON, WOM-2MON, … | WeekOfMonth | 在每月的第一、二、三、四周生成按周分隔的日期(例如,每月第三个星期五的 WOM-3FRI) |
Q-JAN, Q-FEB, … | QuarterEnd | 每个月最后一个日历日的季度日期,以表示月份结束的年份 (JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, or DEC) |
BQ-JAN, BQ-FEB, … | BusinessQuarterEnd | 每个月最后一个工作日对应的季度日期,以表示月份结束的年份 |
QS-JAN, QS-FEB, … | QuarterBegin | 每个月第一个日历日对应的季度日期,以表示月份结束的年份 |
BQS-JAN, BQS-FEB, … | BusinessQuarterBegin | 每个月第一个工作日对应的季度日期,以表示月份结束的年份 |
A-JAN, A-FEB, … | YearEnd | 给定月份所在月的最后一个日历日所对应的年度日期(JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, or DEC) |
BA-JAN, BA-FEB, … | BusinessYearEnd | 给定月份所在月的最后一个工作日所对应的年度日期 |
AS-JAN, AS-FEB, … | YearBegin | 给定月份所在月的第一个日历日日所对应的年度日期 |
BAS-JAN, BAS-FEB, … | BusinessYearBegin | 给定月份所在月的第一个工作日所对应的年度日期 |
pandas.date_range
默认保留开始或结束时间戳的时间(如果有):1>>> pd.date_range("2022-12-12 12:12:12", periods=5)
2DatetimeIndex(['2022-12-12 12:12:12', '2022-12-13 12:12:12',
3 '2022-12-14 12:12:12', '2022-12-15 12:12:12',
4 '2022-12-16 12:12:12'],
5 dtype='datetime64[ns]', freq='D')
有时你会夺得一个带有时间信息的开始日期或结束日期,但希望生成一组标准化为零点的时间戳。为此,需要使用 normalize
参数:
1>>> pd.date_range("2022-12-12 12:12:12", periods=5 , normalize=True)
2DatetimeIndex(['2022-12-12', '2022-12-13', '2022-12-14', '2022-12-15',
3 '2022-12-16'],
4 dtype='datetime64[ns]', freq='D')
本篇文章来源于微信公众号: 码农设计师