在 Python 中插入缺失值

2024-04-21

所有 - 我希望你能够提供帮助,因为这是我知道我几乎从这里和网上的各种帖子中破解的任务之一,但还没有完全发挥作用。

本质上,我在数据库中有以下数据,通过 psql.read_sql(sql, cnxn) 返回到 Pandas 对象

+------------------------------------+
|              StartTime  StartLevel |
+------------------------------------+
| 0  2015-02-16 00:00:00     480.000 |
| 1  2015-02-16 00:30:00     480.000 |
| 2  2015-02-16 00:34:00     390.000 |
| 3  2015-02-16 01:00:00     390.000 |
| 4  2015-02-16 01:30:00     390.000 |
| 5  2015-02-16 02:00:00     480.000 |
| 6  2015-02-16 02:17:00     420.000 |
+------------------------------------+

StartTime     datetime64[ns]
StartLevel           float64
dtype: object

我只是想对上述数据进行逐分钟的插值。

我还以分钟频率创建了一个日期时间系列,但在我的一生中,我无法将我的表“映射”到此上,然后进行插值,或者如何将 StartTime 重新采样到分钟粒度,然后插值丢失的数据。

任何帮助将不胜感激(我确信当我找到解决方案时我会踢自己!) - 非常感谢

UPDATE

根据下面的建议,代码如下:

import datetime
import numpy as np
import pandas as pd
import pyodbc
import pandas.io.sql as psql


cnxn = pyodbc.connect('DSN=MySQL;DATABASE=db;UID=uid;PWD=pwd')
cursor = cnxn.cursor()
sql = """
    SELECT
    StartTime,StartLevel
FROM
    aa.bb
    where cc = 'dd'
    and StartTime < '2015-02-16 02:30:00'
    order by StartTime asc"""

old_df = psql.read_sql(sql, cnxn)


num_minutes = 120
base = datetime.datetime(2015, 02, 16, 00, 00, 00)
date_list = [base + datetime.timedelta(minutes=x) for x in range(0, num_minutes)]
# set num_minutes for whatever is the correct number of minutes you require
new_data = [dict(StartTime=d, fake_val=np.NaN) for d in date_list]
new_df = pd.DataFrame(new_data)
new_df['StartLevel'] = old_df['StartLevel']
new_df.interpolate(inplace=True)

new_df 在提示符下的输出是:

+-----------------------------------------------+
|              StartTime  fake_val  StartLevel  |
+-----------------------------------------------+
| 0   2015-02-16 00:00:00       NaN         480 |
| 1   2015-02-16 00:01:00       NaN         480 |
| 2   2015-02-16 00:02:00       NaN         390 |
| 3   2015-02-16 00:03:00       NaN         390 |
| 4   2015-02-16 00:04:00       NaN         390 |
| 5   2015-02-16 00:05:00       NaN         480 |
| 6   2015-02-16 00:06:00       NaN         480 |
+-----------------------------------------------+

我很确定这不是最Pythonic的答案,所以我欢迎评论来改进它,但我相信你可以做这样的事情

首先创建您想要值的所有日期时间对象

num_minutes = 120
base = datetime.datetime(2015, 02, 16, 00, 00, 00)
date_list = [base + datetime.timedelta(minutes=x) for x in range(0, num_minutes)]
# set num_minutes for whatever is the correct number of minutes you require

然后使用这些索引值创建一个“假”数据框

new_data = [dict(StartTime=d, fake_val=np.NaN) for d in date_list]
new_df = pd.DataFrame(new_data)

EDIT:更正的反应

现在我们想要将两个数据帧合并为一个(并按日期排序):

final_df = new_df.merge(df, how='outer', on='date').sort(columns='date')

final_df现在将按日期排序并包含正确的值StartLevel当你有数据并且NaN当你没有数据时。然后你可以打电话interpolate

EDIT:未调用插值inplace默认情况下,因此您需要设置该标志或保存结果

final_df = final_df.interpolate()

or

final_df.interpolate(inplace=True)

显然fake_val一旦合并了好的数据,就可以丢弃该列。创建该数据帧的目的是让一个数据帧包含您想要的所有值(这是我确信有一个更Pythonic的答案的地方)

完整文档interpolate可以被找寻到here http://pandas.pydata.org/pandas-docs/dev/generated/pandas.DataFrame.interpolate.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Python 中插入缺失值 的相关文章

  • 无法“安装”plpython3u - postgresql

    我正在尝试在 postgresql 中使用 python 语言 像这样的事情 create or replace function test a integer returns integer as if a 2 0 return even
  • Django 管理员在模型编辑时间歇性返回 404

    我们使用 Django Admin 来维护导出到我们的一些站点的一些数据 有时 当单击标准更改列表视图来获取模型编辑表单而不是路由到正确的页面时 我们会得到 Django 404 页面 模板 它是偶尔发生的 我们可以通过重新加载三次来重现它
  • 将 saxon 与 python 结合使用

    我需要使用 python 处理 XSLT 目前我正在使用仅支持 XSLT 1 的 lxml 现在我需要处理 XSLT 2 有没有办法将 saxon XSLT 处理器与 python 一起使用 有两种可能的方法 设置一个 HTTP 服务 接受
  • 将 Matplotlib 误差线放置在不位于条形中心的位置

    我正在 Matplotlib 中生成带有错误栏的堆积条形图 不幸的是 某些层相对较小且数据多样 因此多个层的错误条可能重叠 从而使它们难以或无法读取 Example 有没有办法设置每个误差条的位置 即沿 x 轴移动它 以便重叠的线显示在彼此
  • 如何在flask中使用g.user全局

    据我了解 Flask 中的 g 变量 它应该为我提供一个全局位置来存储数据 例如登录后保存当前用户 它是否正确 我希望我的导航在登录后在整个网站上显示我的用户名 我的观点包含 from Flask import g among other
  • 为 Anaconda Python 安装 psycopg2

    我有 Anaconda Python 3 4 但是每当我运行旧代码时 我都会通过输入 source activate python2 切换到 Anaconda Python 2 7 我的问题是我为 Anaconda Python 3 4 安
  • 通过最小元素比较对 5 个元素进行排序

    我必须在 python 中使用元素之间的最小比较次数来建模对 5 个元素的列表进行排序的执行计划 除此之外 复杂性是无关紧要的 结果是一个对的列表 表示在另一时间对列表进行排序所需的比较 我知道有一种算法可以通过 7 次比较 总是在元素之间
  • Python - StatsModels、OLS 置信区间

    在 Statsmodels 中 我可以使用以下方法拟合我的模型 import statsmodels api as sm X np array 22000 13400 47600 7400 12000 32000 28000 31000 6
  • PyUSB 1.0:NotImplementedError:此平台不支持或未实现操作

    我刚刚开始使用 pyusb 基本上我正在玩示例代码here https github com walac pyusb blob master docs tutorial rst 我使用的是 Windows 7 64 位 并从以下地址下载 z
  • 使用 on_bad_lines 将 pandas.read_csv 中的无效行写入文件

    我有一个 CSV 文件 我正在使用 Python 来解析该文件 我发现文件中的某些行具有不同的列数 001 Snow Jon 19801201 002 Crom Jake 19920103 003 Wise Frank 19880303 l
  • 如何替换 pandas 数据框列中的重音符号

    我有一个数据框dataSwiss其中包含瑞士城市的信息 我想用普通字母替换带有重音符号的字母 这就是我正在做的 dataSwiss Municipality dataSwiss Municipality str encode utf 8 d
  • 测试 python Counter 是否包含在另一个 Counter 中

    如何测试是否是pythonCounter https docs python org 2 library collections html collections Counter is 包含在另一个中使用以下定义 柜台a包含在计数器中b当且
  • OpenCV 无法从 MacBook Pro iSight 捕获

    几天后 我无法再从 opencv 应用程序内部打开我的 iSight 相机 cap cv2 VideoCapture 0 返回 并且cap isOpened 回报true 然而 cap grab 刚刚返回false 有任何想法吗 示例代码
  • 如何使用 OpencV 从 Firebase 读取图像?

    有没有使用 OpenCV 从 Firebase 读取图像的想法 或者我必须先下载图片 然后从本地文件夹执行 cv imread 功能 有什么办法我可以使用cv imread link of picture from firebase 您可以
  • 如何使用Python创建历史时间线

    So I ve seen a few answers on here that helped a bit but my dataset is larger than the ones that have been answered prev
  • 无法在 Python 3 中导入 cProfile

    我试图将 cProfile 模块导入 Python 3 3 0 但出现以下错误 Traceback most recent call last File
  • 对年龄列进行分组/分类

    我有一个数据框说df有一个柱子 Ages gt gt gt df Age 0 22 1 38 2 26 3 35 4 35 5 1 6 54 我想对这个年龄段进行分组并创建一个像这样的新专栏 If age gt 0 age lt 2 the
  • Conda SafetyError:文件大小不正确

    使用创建 Conda 环境时conda create n env name python 3 6 我收到以下警告 Preparing transaction done Verifying transaction SafetyError Th
  • 发送用户注册密码,django-allauth

    我在 django 应用程序上使用 django alluth 进行身份验证 注册 我需要创建一个自定义注册表单 其中只有一个字段 电子邮件 密码将在服务器上生成 这是我创建的表格 from django import forms from
  • 在 Qt 中自动调整标签文本大小 - 奇怪的行为

    在 Qt 中 我有一个复合小部件 它由排列在 QBoxLayouts 内的多个 QLabels 组成 当小部件调整大小时 我希望标签文本缩放以填充标签区域 并且我已经在 resizeEvent 中实现了文本大小的调整 这可行 但似乎发生了某

随机推荐

  • IE 未在 TLS 相互身份验证中发送客户端证书

    我正在尝试与第三方 API 建立 TLS 相互身份验证 客户端证书配置良好 当我尝试通过 Chrome 访问端点 url 时 它工作正常 Chrome 要求在消息框中确认证书 当我这样做时 页面会显示其内容 当我尝试使用 IE 执行同样的操
  • Routes.rb vsrack-rewrite vs nginx/apache 重写规则

    我的应用程序的前一个版本中的遗留 URL 有数十条重写规则 我看到三个选择 只需在路由文件 config routes rb 中添加 匹配 行 Use 机架重写 https github com jtrupiano rack rewrite
  • 用于展平嵌套列表的递归生成器

    我是一名编程新手 在理解我的 Python 教科书 Magnus Lie Hetland 的 Beginning Python 中的示例时遇到了一些困难 该示例是一个递归生成器 旨在展平嵌套列表的元素 具有任意深度 def flatten
  • Apple 听写 - 在应用程序中使用

    有什么方法可以在本机 Apple 应用程序中利用 Apple 的听写语音转文本功能吗 你的问题有点模糊 最好先知道你尝试使用或做什么 或者你想要实现什么目标 更常见的是关键字识别 API 但可以用于此目的的语音识别 API 是张开耳朵 ht
  • iOS Storyboard:ViewController 外部和场景顶部的视图(第一响应者和退出框之间)

    我很难理解为什么你可以把UIViews之外的UIViewController在故事板上 以及它的用例可能是什么 例如 在故事板上我可以添加UIToolbar UIAcitivtyIndicator and UIProgressView那是在
  • 如何在类模板中使用文件范围的命名空间声明?

    C 10 介绍文件范围的命名空间 https learn microsoft com en us dotnet csharp language reference proposals csharp 10 0 file scoped name
  • 安卓蓝牙无法连接

    我遇到这个问题已经有一段时间了 但一直无法解决 我有一个 Android 应用程序 它将所有配对的设备放在列表视图中 当您单击列表项之一时 它将发起连接到该蓝牙设备的请求 我可以毫无问题地获取设备列表及其地址 问题是 一旦我尝试连接 我就会
  • 如何在 AWS 上设置无密码 ssh

    如何在 AWS 集群上的节点之间设置无密码 ssh 以下设置无密码身份验证的步骤已针对 Centos 和 Ubuntu 进行了彻底测试 假设 您已经可以访问您的 EC2 机器 可能正在使用 pem 密钥 或者您拥有具有 root 权限的 u
  • Windows 7 为软件开发人员带来哪些好处? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我正在尝试将我的开发计算机升级到 W
  • 如何重置 JSESSIONID

    当用户进行身份验证时重置会话 cookie 被认为是一种良好的安全实践 如何用 Java 做到这一点 到目前为止我的尝试是成功的 但我想知道是否有更好的方法 public static HttpSession resetSessionId
  • 车把模板的文件扩展名

    我更改了车把模板的扩展名 并在调用 handlebarjs 编译函数的函数中引用了相同的扩展名 它工作得很好 没有任何问题 但我很好奇是否还有其他人尝试过 如果您认为这可能会因任何原因导致问题 请告诉我 出于某种原因 我觉得扩展名 hand
  • Java 中搜索和排序算法的高效实现

    有没有人有关于常见搜索和排序算法的一组 Java 代码实现的良好参考 剥猫皮的方法有很多种 很容易在网上找到各种算法的 Java 代码 但是 Java 中是否有实现这些不同算法的最有效方法的列表 例如有http www algorithmi
  • 将 float 和 double 值与 delta 进行比较?

    据我了解 必须仔细比较浮点类型的值 以避免固有浮点错误的问题 这可以通过将值与错误阈值进行比较来改进 例如 以下解决方案比简单的解决方案更有用x y test static float CompareRelativeError float
  • 如何通过 jQuery Ajax 发布数据在 PHP 中编码 JSON?

    我有一个 HTML 表单 并在点击提交按钮时将数据发送到 php 文件 ajax url text php type POST data amount amount firstName firstName lastName lastName
  • 单击添加类和删除时切换类

    如果我单击项目 我需要添加类名 如果单击同一项目 则需要删除 ngFor 循环的类
  • Angular Material:如何在注销时关闭所有垫对话框和甜蜜警报

    我想在 Angular 注销时关闭所有对话框 mat dialog 引导模式和甜蜜警报 这是 AngularJS 版本 1 5 中的实现方式 function logout hide mdDialog modal angular eleme
  • 如何将客户端证书与 ftp_ssl_connect 一起使用

    我正在寻找通过 SSL 连接使用 FTP 服务器的最佳方法 通常 推送文件以及获取服务器上的文件列表 该项目的一项要求是我必须使用客户端 X 509 证书作为身份验证过程的一部分 我可以使用 php 函数 ftp ssl connect 来
  • 将我的 apk 推送到 /system/app

    如何推送我的应用程序包 到Android模拟器 system app 文件夹 我已经尝试过使用 adb 推送 myApk apk system app 它给了我这个 failed to copy No space left on devic
  • 如何使用 JSF/MyFaces 创建基于用户角色的条件?

    我必须使用哪些选项才能从 JSP 页面读取当前用户的角色 我知道visibleOnUserRole myRole Tomahawk 组件上的属性 但我需要角色来处理比简单可见性更复杂的事情 The 外部上下文 http docs oracl
  • 在 Python 中插入缺失值

    所有 我希望你能够提供帮助 因为这是我知道我几乎从这里和网上的各种帖子中破解的任务之一 但还没有完全发挥作用 本质上 我在数据库中有以下数据 通过 psql read sql sql cnxn 返回到 Pandas 对象 StartTime