pandas处理日期缺失
#两种方法实现
'''
1)DataFrame.reindex:调整dataframe的索引以适应新的索引
2) DataFrame.resample,可以对时间序列重新采样,支持补充缺失值
'''
import pandas as pd
import os
%matplotlib inline
df = pd.DataFrame({"pdate":['2019-12-01','2019-12-02','2019-12-04','2019-12-05'],'pv':[100,200,400,500],'uv':[10,20,40,50],
})
df
pdate | pv | uv | |
---|---|---|---|
0 | 2019-12-01 | 100 | 10 |
1 | 2019-12-02 | 200 | 20 |
2 | 2019-12-04 | 400 | 40 |
3 | 2019-12-05 | 500 | 50 |
#df缺少2019-12-03这个日期
df.set_index('pdate').plot()
<matplotlib.axes._subplots.AxesSubplot at 0x1d68fb97e10>
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cScC4omN-1601386256504)(output_2_1.png)]
#方法一
pdate | pv | uv | |
---|---|---|---|
0 | 2019-12-01 | 100 | 10 |
1 | 2019-12-02 | 200 | 20 |
2 | 2019-12-04 | 400 | 40 |
3 | 2019-12-05 | 500 | 50 |
df_date = df.set_index('pdate')
df_date
#将索引设置为日期,并且将index改为时间序列的格式
pv | uv | |
---|---|---|
pdate | ||
2019-12-01 | 100 | 10 |
2019-12-02 | 200 | 20 |
2019-12-04 | 400 | 40 |
2019-12-05 | 500 | 50 |
df_date.index
Index(['2019-12-01', '2019-12-02', '2019-12-04', '2019-12-05'], dtype='object', name='pdate')
#将DataFrame的index从字符串转换成时间序列,再输出相应index为时间序列的DataFrame
df_date = df_date.set_index(pd.to_datetime(df_date.index))
df_date.index
DatetimeIndex(['2019-12-01', '2019-12-02', '2019-12-04', '2019-12-05'], dtype='datetime64[ns]', name='pdate', freq=None)
pdate = pd.date_range(start = '2019-12-01',end = '2019-12-05')
pdate
DatetimeIndex(['2019-12-01', '2019-12-02', '2019-12-03', '2019-12-04','2019-12-05'],dtype='datetime64[ns]', freq='D')
df_date_new = df_date.reindex(pdate,fill_value=0)#注意,重新设置index是reindex,不是set_index
df_date_new
pv | uv | |
---|---|---|
2019-12-01 | 100 | 10 |
2019-12-02 | 200 | 20 |
2019-12-03 | 0 | 0 |
2019-12-04 | 400 | 40 |
2019-12-05 | 500 | 50 |
‘’’
reindex()方法用于创建一个符合新索引的新对象
①对于Series类型,调用reindex()会将数据按照新的索引进行排列,如果某个索引值之前不存在,则引入缺失值
如:
②DataFrame中,reindex()可以改变行索引和列索引
reset_index(),顾名思义,即设置索引。可以设置单索引和复合索引
调用这个函数会生成一个新的DataFrame, 新的df使用一个列或多个列作为索引
reset_index(),它是set_index()的反操作,调用它分层索引的索引层级会被还原到列中
‘’’
df_date_new.plot()
<matplotlib.axes._subplots.AxesSubplot at 0x1d691b08a58>
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GkR5Se3o-1601386256511)(output_10_1.png)]
#方法二:pandas.resample方法
df
pdate | pv | uv | |
---|---|---|---|
0 | 2019-12-01 | 100 | 10 |
1 | 2019-12-02 | 200 | 20 |
2 | 2019-12-04 | 400 | 40 |
3 | 2019-12-05 | 500 | 50 |
df_new2 = df.set_index(pd.to_datetime(df['pdate']))
#
df_new2
pdate | pv | uv | |
---|---|---|---|
pdate | |||
2019-12-01 | 2019-12-01 | 100 | 10 |
2019-12-02 | 2019-12-02 | 200 | 20 |
2019-12-04 | 2019-12-04 | 400 | 40 |
2019-12-05 | 2019-12-05 | 500 | 50 |
df_new2 = df.set_index(pd.to_datetime(df['pdate'])).drop('pdate',axis=1)
df_new2
pv | uv | |
---|---|---|
pdate | ||
2019-12-01 | 100 | 10 |
2019-12-02 | 200 | 20 |
2019-12-04 | 400 | 40 |
2019-12-05 | 500 | 50 |
df_new3 = df_new2.resample('D').mean().fillna(0)
df_new3
pv | uv | |
---|---|---|
pdate | ||
2019-12-01 | 100.0 | 10.0 |
2019-12-02 | 200.0 | 20.0 |
2019-12-03 | 0.0 | 0.0 |
2019-12-04 | 400.0 | 40.0 |
2019-12-05 | 500.0 | 50.0 |
pandas处理日期缺失相关推荐
- pandas基于日期信息(time or date)生成季度信息(quarter)实战:pandas基于日期信息列生成季度信息列、dt.quarter生成季度信息、dt.to_period生成季度信息
pandas基于日期信息(time or date)生成季度信息(quarter)实战:pandas基于日期信息列生成季度信息列.dt.quarter生成季度信息.dt.to_period生成季度信息 ...
- pandas判断日期是否是闰年(is_leap_year)实战: 数据列转化为日期(时间)格式、判断pandas的日期数据列是否是闰年
pandas判断日期是否是闰年(is_leap_year)实战: 数据列转化为日期(时间)格式.判断pandas的日期数据列是否是闰年 目录
- pandas 按日期范围筛选数据的实现
<h1 class="title">pandas 按日期范围筛选数据的实现</h1><div class="info"> ...
- pandas处理日期的几种常用方法
1.读取字符串日期 写入csv 文件 csv_text = """date, value 2022-01-01, 1 2022-01-05, 5 2022-11-05, ...
- 纠正Pandas中的缺失数据
目录 介绍 查找丢失的数据元素 使用drop和dropna删除缺少的Pandas列 丢掉丢失的Pandas行 替换值 摘要 将数据加载到灵活的结构后,我们需要确定如何处理丢失和重复的数据元素. 下载C ...
- Pandas处理日期数据的常见操作集锦
Pandas处理日期数据的常见操作集锦 数据读取及整理 获取某个日期之前/后或时间区间的数据 python 获取当前时间及前一天时间 pandas的日期时间间隔运算选取指定时间范围内/外的数据 利用p ...
- pandas 合并日期和时间列
原始数据的样子如下: 需要达到的效果如下图: 方法一:这个方法比较简单,代码为: data['datetime'] = data['Date'] + ' ' + data['Time'] 参考连链接: ...
- Python数据处理-使用Pandas补齐缺失日期(pd.date_range)
在处理时间序列的数据中,有时候会遇到有些日期的数据缺失的情况,这时候可以用pandas的 date_range 函数快速补齐缺失日期,再根据实际情况补齐缺失值. import pandas as pd ...
- pandas生成日期去掉时分秒
pandas如何用字典生成数据&生成日期默认为年月日时分秒 如何去掉时分秒 import pandas as pd import numpy as npdf = pd.DataFrame({& ...
最新文章
- java 反射实现 工厂模式_java – 用反射实现工厂模式
- Linux系统性能查询命令
- springboot整合 beatlsql
- 数据解析1:XML解析(1)
- android常用窗口动画,android 自定义dialog,窗口动画,
- 【Android TV 开发】-->开发汇总
- 如何在Inceptor中使用日期函数获取与转换时间
- 1 使用WPE工具分析游戏网络封包
- 缠中说禅重新编排版《论语》(编撰版)
- 手机运作html实现弹窗,html5实现手机弹窗留言对话框(摘)
- Python 爬虫框架Scrapy Spiders学习
- 6 模型的属性与功能
- Day215.课程详细页面功能完善、Echarts统计分析模块[生成统计数据+生成图表]前后端整合 -谷粒学院
- mysql sql宽字节注入_sql注入之(宽字节注入篇)
- Windows网络活跃点决定使用的优先权
- 同卵双胞胎的2型糖尿病的易感性位点的综合表观基因分析
- spark+smack+openfire实现请求响应简单流程
- 兄弟连兄弟会机构好不好
- 数据分析统计学原理第十三章:实验设计与方差分析 | 我的统计学原理复习日记
- ecmall php传变量,PHP_ECMall支持SSL连接邮件服务器的配置方法详解,首先,主要是ecmall使用的phpmail - phpStudy...