用 Pandas 识别连续的 NaN

2024-02-23

我正在阅读一堆 CSV 文件(一段时间内水位的测量数据),以便对它们进行各种分析和可视化。

由于各种我无法控制的原因,这些时间序列经常会有数据缺失,所以我做了两件事:

我把它们合计起来

Rlength = len(RainD)   # Counts everything, including NaN
Rcount = RainD.count() # Counts only valid numbers
NaN_Number = Rlength - Rcount

如果丢失的数据多于某个阈值,则丢弃数据集:

Percent_Data = Rlength/100
Five_Percent = Percent_Data*5
if NaN_Number > Five_Percent:
    ...

如果 NaN 的数量足够小,我想用

RainD.level = RainD.level.fillna(method='pad', limit=2)

现在的问题是:这是月度数据,所以如果我有两个以上的连续 NaN,我也想丢弃这些数据,因为这意味着我“猜测”整个赛季,甚至更多。

The 的文档fillna http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.fillna.html#pandas.DataFrame.fillna并没有真正提到当连续 NaN 数量多于我指定的数量时会发生什么limit=2,但是当我看着RainD.describe()之前和之后...fillna...并将其与基本 CSV 进行比较,很明显,它填充了前两个 NaN,然后​​将其余部分保持原样,而不是出错。

所以,长话短说:

如何使用 Pandas 识别多个连续的 NaN,而不需要一些复杂且耗时的非 Pandas 循环?


您可以使用多个布尔条件来测试当前值和先前值是否相同NaN:

In [3]:

df = pd.DataFrame({'a':[1,3,np.NaN, np.NaN, 4, np.NaN, 6,7,8]})
df
Out[3]:
    a
0   1
1   3
2 NaN
3 NaN
4   4
5 NaN
6   6
7   7
8   8
In [6]:

df[(df.a.isnull()) & (df.a.shift().isnull())]
Out[6]:
    a
3 NaN

如果你想找到连续的地方NaNs当您正在寻找超过 2 个时,您可以执行以下操作:

In [38]:

df = pd.DataFrame({'a':[1,2,np.NaN, np.NaN, np.NaN, 6,7,8,9,10,np.NaN,np.NaN,13,14]})
df
Out[38]:
     a
0    1
1    2
2  NaN
3  NaN
4  NaN
5    6
6    7
7    8
8    9
9   10
10 NaN
11 NaN
12  13
13  14

In [41]:

df.a.isnull().astype(int).groupby(df.a.notnull().astype(int).cumsum()).sum()
Out[41]:
a
1    0
2    3
3    0
4    0
5    0
6    0
7    2
8    0
9    0
Name: a, dtype: int32
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用 Pandas 识别连续的 NaN 的相关文章

随机推荐

  • Django Admin + FORCE_SCRIPT_NAME + 登录重定向不正确

    我让 Django 在 Nginx 后面运行fastcgi pass 我在子路径上运行 Django 例如 django sample location django sample include fastcgi params fastcg
  • 导入带有外键的 csv

    假设我有 2 个表 学生和团体 Group 表有 2 列 id GroupName Student 表有 3 列 id StudentName 和 GroupID GroupID 是 Group 字段的外键 我需要从 CSV 导入 学生 表
  • 需要来自 MySql 数据库的日期块数组

    好的 我有一个包含 StartDate 和 EndDate 的行的数据库表 我需要做的是从中返回消耗的时间块 例如 如果我有 3 行 如下所示 RowID StartDate EndDate 1 2011 01 01 2011 02 01
  • 自动加载 Word 任务窗格 Office 加载项

    我们正在为内部组织文档开发 Word 任务窗格 Office 加载项 不是 VSTO 在 Word 2013 桌面版 中 当我们插入加载项并保存文档时 当我们重新打开该文档时 加载项会自动加载 在 Word Online 中 此行为有所不同
  • Sklearn KNeighborsRegressor 自定义距离度量

    我正在使用 KNeighborsRegressor 但我想将它与自定义距离函数一起使用 我的训练集是 pandas DataFrame 如下所示 week day hour minute temp humidity 0 1 9 0 1 1
  • ubuntu 中的 php GD 库错误

    我正在使用 ubuntu 11 04 当我打开终端并输入时php a它显示一些像这样的错误 PHP Warning PHP Startup Unable to load dynamic library usr lib php5 200906
  • 在 PHP 的扩展类中使用父变量

    我有两门课 主课和扩展课 我需要在扩展类中使用主变量 我能做谁呢 无效例如
  • 如何以编程方式获取 Android 中应用程序花费的时间

    我想获取我今天使用过的所有应用程序的使用时间 当我通过拨打电话获取这些详细信息时 4636 但我希望在 android 中以编程方式获得这些详细信息 请帮我解决这个问题 我们可以看到这些 Play 商店应用程序如何显示使用情况统计信息 具有
  • 初始化自定义数组类而不创建副本

    我编写了一个自定义数组容器 就像大多数 C 库一样 包括std array and std iterator不适用于目标 嵌入 模板类基本上按预期工作 但是我没有设法设置一个构造函数 它可以初始化整个数组而不创建副本 我尝试了几种构造函数
  • Javafx Webview 的 Ajax 调用失败

    已关注this https stackoverflow com a 16405964 1900006 尽管来自链接的 Ajax 调用执行时没有任何错误 但在 HTML 中使用以下函数仍然会失败 document ready function
  • Spring Boot中如何处理最大文件大小异常?

    我正在使用 Spring Boot v1 2 5 创建 REST 应用程序 上传图像时 我会检查最大文件大小 该属性提供了以下属性 multipart maxFileSize 128KB 在应用程序属性中 该功能由 Spring Boot
  • 如何使用 Java Apache POI 从 Excel 中删除整行?

    我想从 Excel 中删除整行 我努力了removeRow XSSFRow rerow sheet1 getRow 1 sheet1 removeRow rerow and shiftRows int rowIndex 1 int last
  • Javascript 禁用最佳实践? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想知道如果用户禁用了 Javascript 是否有人会优化他们的网页以实现一些友好的行为 在这种情况下是否有任何技巧可以提供一些伪脚
  • EF Add-Migration 指示“没有挂起的显式迁移”,但 Update-Database 抱怨“..有挂起的更改”

    我经常在实体框架代码优先迁移中遇到以下情况 我添加了一些迁移并成功地用它们更新了数据库 当稍后我希望添加新的迁移时 Add Migration 命令抱怨其 无法生成显式迁移 因为以下显式迁移正在挂起 也就是说 它似乎忘记了它之前已经应用了这
  • valgrind - 查找共享库中的内存泄漏

    我需要知道如何找出共享库中的内存泄漏 该库将被加载到发布二进制文件中 我的意思是我使用 g 选项构建的共享库 但加载共享库的二进制文件不是使用 g 选项构建的 我得到的泄漏报告如下 739 at 0x4A05809 malloc vg re
  • 如何删除非法字符以便数据框可以写入 Excel

    我正在尝试使用 ExcelWriter 将数据框写入 Excel 电子表格 但它不断返回错误 openpyxl utils exceptions IllegalCharacterError 我猜数据框中有一些 ExcelWriter 不喜欢
  • 将新行添加到 p:datatable 然后提交内容

    我正在尝试在 Primefaces 数据表中添加一个新行 然后我想提交该表的内容并执行一些业务逻辑 数据表模型是在 ViewScoped 托管 bean 中维护的集合 我正在使用 JSF 2 1 和 Primefaces 3 3 简短的例子
  • 如何为 LLVM 指定自定义 stdlib 目录

    我有 LLVM 3 3 和 Clang 并且 tmp clang bin clang print search dirs programs tmp clang bin usr lib gcc i486 linux gnu 4 4 i486
  • 自定义标签单元的 didSelectRowAtIndexPath

    我正在使用这种方法来添加UILabel to my UITableView它工作正常 但我还需要创建一个方法来选择行并保存到临时字符串中 UITableViewCell tableView UITableView tableView cel
  • 用 Pandas 识别连续的 NaN

    我正在阅读一堆 CSV 文件 一段时间内水位的测量数据 以便对它们进行各种分析和可视化 由于各种我无法控制的原因 这些时间序列经常会有数据缺失 所以我做了两件事 我把它们合计起来 Rlength len RainD Counts every