【问题标题】:Power BI: Make a line chart continuous when source contains null values (handle missing values)Power BI:当源包含空值时使折线图连续(处理缺失值)
【发布时间】:2018-12-26 09:54:15
【问题描述】:

这个问题衍生出了我之前发布的一个问题; Custom x-axis values in Power BI

假设如下数据集:

关注第二行和第三行。如何使下面相应图表中的线连续而不停在中间?

在 Excel 中,我曾经通过在为图形生成数据的公式中应用 NA() 来解决这个问题。是否有使用 DAX 的类似解决方案?

【问题讨论】:

  • 我认为只有使用连续的 x 轴而不是分类轴时才会这样做。

标签: graph charts powerbi dax


【解决方案1】:

简短版:


你应该做什么:

Unleash python 并按照那里的步骤,插入这个脚本(别担心,我在这里也添加了一些细节):

import pandas as pd

# retrieve index column
index = dataset[['YearWeek_txt']]

# subset input data for further calculations
dataset2 = dataset[['1', '2']]

# handle missing values
dataset2 = dataset2.fillna(method='ffill')

然后你就可以这样设置了:

为什么要这样做:

对于内置选项,据我所知,这些是您的选择:

1.分类 YearMonth 和分类 x 轴不起作用

2.分类 YearMonth 和连续 x 轴不起作用

3. 数字 YearMonth 和分类 x 轴不起作用

4. 数字 YearMonth 和连续 x 轴不起作用


详细信息,从内置方法失败的原因开始:


1. 分类 YearMonth 和分类 x 轴

我使用了类似于您的表格屏幕截图的以下数据集:

YearWeek   1     2
201603     2.37  2.83
201606           2.55
201607     2.98 
201611     2.33  2.47
201615     2.14  2.97
201619     2.15  2.02
201623     2.33  2.8
201627     3.04  2.57
201631     2.95  2.98
201635     3.08  2.16
201639     2.50  2.42
201643     3.07  3.02
201647     2.19  2.37
201651     2.38  2.65
201703     2.50  3.02
201711     2.10  2
201715     2.76  3.04

不,我没有费心手动复制您的所有数据。只是你的 YearWeek 系列。其余的是 2 到 3 之间的随机数。

然后我将数据设置为 1 和 2 的数字,并在 Power Query 编辑器中设置 YearWeek 一个类型的文本:

所以这是原始设置,带有像您这样的表格和图表:

数据按YearWeek_txt降序排列:

并且x轴设置为Categorical

结论: 失败


2. 分类年月和数字 x 轴

和上面一样设置,你可以试试把x轴类型改成Continuous

但正如您所见,它只是直接转回“分类”,大概是因为 YearWeek 的类型是 text

结论: 失败


3. 数字 YearMonth 和分类 x 轴

我已经复制了原始设置,因此我有两个表 Categorical 和 Numerical,其中 YearWeek 的类型分别为 textinteger

所以数字 YearMonth 和分类 x 轴仍然给你这个:

结论: 失败


4. 数字 YearMonth 和连续 x 轴不起作用

但是现在,使用与上面相同的设置,您可以将 x 轴类型更改为Continuous

你最终会得到这个:

结论: 哈哈


现在,Python:


Power Query Editor中,激活Categorical表,选择Transform > Run Python Script并在运行Python Script Editor中插入以下sn-p:

# 'dataset' holds the input data for this script

import pandas as pd

# retrieve index column
index = dataset[['YearWeek_txt']]

# subset input data for further calculations
dataset2 = dataset[['1', '2']]

# handle missing values
dataset2 = dataset2.fillna(method='ffill')

单击OK 并单击此处dataset2 旁边的Table

你会得到这个(确保列数据类型正确):

如您所见,没有更多的缺失值。 dataset2 = dataset2.fillna(method='ffill') 已将两列中的所有缺失值替换为前面的值。

单击“关闭并应用”返回桌面,享受您的表格和图表,不再缺少任何值:

结论: Python 很酷


结束说明:

这里有很多细节可能会出错,比如小数点、数据类型等等。让我知道你的情况如何,如果它对你不起作用,我会再看一遍。

【讨论】:

  • 抱歉,回复太晚了;这行得通! (肯定不会让你感到惊讶)。跳入 Python 是一种信念的飞跃。我当然相信它很酷,但现在看到它在一段时间后也很稳定。谢谢!
  • @Sambo 没问题!很高兴它对你有效。与 DAX 相比,python 轻而易举 =)
猜你喜欢
  • 2022-10-15
  • 1970-01-01
  • 2022-01-02
  • 2020-10-11
  • 2015-12-18
  • 2019-07-17
  • 1970-01-01
  • 1970-01-01
  • 2022-01-11
相关资源
最近更新 更多