Power BI 必學技術|Power Query 是什麼?|台灣本地專家解說

Find AI Tools
No difficulty
No complicated process
Find ai tools

Power BI 必學技術|Power Query 是什麼?|台灣本地專家解說

目录

概述

在本篇文章中,我们将介绍如何使用 Power Query 在 Power BI 中对数据进行转换和处理。Power Query 是一种非常强大的工具,可以帮助我们从不同的数据源中提取数据,并对数据进行清理、转换和整理,以便更好地支持业务分析和决策。通过使用 Power Query,我们可以提高数据分析的质量和准确性,并减少数据预处理的工作量。

创建查询

首先,我们需要创建一个新的查询来加载我们的数据集。在 Power BI 的主界面上,点击"获取数据"按钮,然后选择"空白查询"选项。将新查询重命名为"数据"。

let
    Source = "Titanic.csv",
    Data = Csv.Document(File.Contents(Source),[Delimiter=",", Encoding=1252]),
    PromoteHeaders = Table.PromoteHeaders(Data, [PromoteAllScalars=true]),
    RemoveColumns = Table.RemoveColumns(PromoteHeaders,{"Column6"})
in
    RemoveColumns

在上面的代码中,我们使用了 Power Query 的 M 语言来定义查询。首先,我们指定了数据集的路径(Source),然后使用 Csv.Document 函数来加载 CSV 文件的内容。接下来,我们使用 Table.PromoteHeaders 函数将第一行作为列名,然后使用 Table.RemoveColumns 函数删除了第六列。

删除列

为了进一步清洗数据,我们可以删除不需要的列。在本例中,我们删除了第六列。

let
    Source = "Titanic.csv",
    Data = Csv.Document(File.Contents(Source),[Delimiter=",", Encoding=1252]),
    PromoteHeaders = Table.PromoteHeaders(Data, [PromoteAllScalars=true]),
    RemoveColumns = Table.RemoveColumns(PromoteHeaders,{"Column6"})
in
    RemoveColumns

提取头部和更改列名

为了使数据更易于理解,我们可以将第一行作为列名,并对列名进行重命名。

let
    Source = "Titanic.csv",
    Data = Csv.Document(File.Contents(Source),[Delimiter=",", Encoding=1252]),
    PromoteHeaders = Table.PromoteHeaders(Data, [PromoteAllScalars=true]),
    RemoveColumns = Table.RemoveColumns(PromoteHeaders,{"Column6"}),
    RenameColumns = Table.RenameColumns(RemoveColumns,{{"Survived", "是否幸存"}, {"Name", "姓名"}, {"Sex", "性别"}, {"Age", "年龄"}, {"Pclass", "船舱等级"}, {"Fare", "票价"}})
in
    RenameColumns

在上面的代码中,我们使用了 Table.RenameColumns 函数来重命名列。

过滤行

有时候,我们可能需要过滤掉特定条件下的行。在本例中,我们过滤掉了年龄为"NA"和年龄小于等于5的行。

let
    Source = "Titanic.csv",
    Data = Csv.Document(File.Contents(Source),[Delimiter=",", Encoding=1252]),
    PromoteHeaders = Table.PromoteHeaders(Data, [PromoteAllScalars=true]),
    RemoveColumns = Table.RemoveColumns(PromoteHeaders,{"Column6"}),
    RenameColumns = Table.RenameColumns(RemoveColumns,{{"Survived", "是否幸存"}, {"Name", "姓名"}, {"Sex", "性别"}, {"Age", "年龄"}, {"Pclass", "船舱等级"}, {"Fare", "票价"}}),
    FilterRows = Table.SelectRows(RenameColumns, each ([Age] <> "NA" and [Age] > 5))
in
    FilterRows

在上面的代码中,我们使用了 Table.SelectRows 函数来根据条件过滤行。

更改数据类型

有时候,我们需要将某些列的数据类型进行更改,以便更好地进行分析和计算。在本例中,我们将年龄列的数据类型更改为数字类型,将乘客ID列的数据类型更改为整数。

let
    Source = "Titanic.csv",
    Data = Csv.Document(File.Contents(Source),[Delimiter=",", Encoding=1252]),
    PromoteHeaders = Table.PromoteHeaders(Data, [PromoteAllScalars=true]),
    RemoveColumns = Table.RemoveColumns(PromoteHeaders,{"Column6"}),
    RenameColumns = Table.RenameColumns(RemoveColumns,{{"Survived", "是否幸存"}, {"Name", "姓名"}, {"Sex", "性别"}, {"Age", "年龄"}, {"Pclass", "船舱等级"}, {"Fare", "票价"}}),
    FilterRows = Table.SelectRows(RenameColumns, each ([Age] <> "NA" and [Age] > 5)),
    ChangeTypes = Table.TransformColumnTypes(FilterRows,{{"Age", type number}, {"PassengerID", Int64.Type}})
in
    ChangeTypes

在上面的代码中,我们使用了 Table.TransformColumnTypes 函数来更改列的数据类型。

替换值

有时候,我们需要将某些值替换为其他值。在本例中,我们将"Survived"列中的0替换为"否",将1替换为"是"。

let
    Source = "Titanic.csv",
    Data = Csv.Document(File.Contents(Source),[Delimiter=",", Encoding=1252]),
    PromoteHeaders = Table.PromoteHeaders(Data, [PromoteAllScalars=true]),
    RemoveColumns = Table.RemoveColumns(PromoteHeaders,{"Column6"}),
    RenameColumns = Table.RenameColumns(RemoveColumns,{{"Survived", "是否幸存"}, {"Name", "姓名"}, {"Sex", "性别"}, {"Age", "年龄"}, {"Pclass", "船舱等级"}, {"Fare", "票价"}}),
    FilterRows = Table.SelectRows(RenameColumns, each ([Age] <> "NA" and [Age] > 5)),
    ChangeTypes = Table.TransformColumnTypes(FilterRows,{{"Age", type number}, {"PassengerID", Int64.Type}}),
    ReplaceValues = Table.ReplaceValue(ChangeTypes,0,"否",Replacer.ReplaceValue,{"是否幸存"}),
    FinalTable = Table.ReplaceValue(ReplaceValues,1,"是",Replacer.ReplaceValue,{"是否幸存"})
in
    FinalTable

在上面的代码中,我们使用了 Table.ReplaceValue 函数来替换特定列中的值。

计算平均值

有时候,我们需要计算某些列的平均值。在本例中,我们计算了女性乘客的平均年龄和男性乘客的平均年龄。

let
    Source = "Titanic.csv",
    Data = Csv.Document(File.Contents(Source),[Delimiter=",", Encoding=1252]),
    PromoteHeaders = Table.PromoteHeaders(Data, [PromoteAllScalars=true]),
    RemoveColumns = Table.RemoveColumns(PromoteHeaders,{"Column6"}),
    RenameColumns = Table.RenameColumns(RemoveColumns,{{"Survived", "是否幸存"}, {"Name", "姓名"}, {"Sex", "性别"}, {"Age", "年龄"}, {"Pclass", "船舱等级"}, {"Fare", "票价"}}),
    FilterRows = Table.SelectRows(RenameColumns, each ([Age] <> "NA" and [Age] > 5)),
    ChangeTypes = Table.TransformColumnTypes(FilterRows,{{"Age", type number}, {"PassengerID", Int64.Type}}),
    ReplaceValues = Table.ReplaceValue(ChangeTypes,0,"否",Replacer.ReplaceValue,{"是否幸存"}),
    FinalTable = Table.ReplaceValue(ReplaceValues,1,"是",Replacer.ReplaceValue,{"是否幸存"}),
    AverageFemaleAge = List.Average(Table.Column(Table.SelectRows(FinalTable, each ([性别] = "女性")), "年龄")),
    AverageMaleAge = List.Average(Table.Column(Table.SelectRows(FinalTable, each ([性别] = "男性")), "年龄"))
in
    FinalTable

在上面的代码中,我们使用了 Table.SelectRows 函数来筛选出特定条件的行,并使用 List.Average 函数来计算平均值。

创建计算列

有时候,我们需要根据某些列的值计算新的列。在本例中,我们创建了一个"年龄差异"列,该列显示乘客的年龄与其性别的平均年龄之差,并将该值四舍五入到两位小数。

let
    Source = "Titanic.csv",
    Data = Csv.Document(File.Contents(Source),[Delimiter=",", Encoding=1252]),
    PromoteHeaders = Table.PromoteHeaders(Data, [PromoteAllScalars=true]),
    RemoveColumns = Table.RemoveColumns(PromoteHeaders,{"Column6"}),
    RenameColumns = Table.RenameColumns(RemoveColumns,{{"Survived", "是否幸存"}, {"Name", "姓名"}, {"Sex", "性别"}, {"Age", "年龄"}, {"Pclass", "船舱等级"}, {"Fare", "票价"}}),
    FilterRows = Table.SelectRows(RenameColumns, each ([Age] <> "NA" and [Age] > 5)),
    ChangeTypes = Table.TransformColumnTypes(FilterRows,{{"Age", type number}, {"PassengerID", Int64.Type}}),
    ReplaceValues = Table.ReplaceValue(ChangeTypes,0,"否",Replacer.ReplaceValue,{"是否幸存"}),
    FinalTable = Table.ReplaceValue(ReplaceValues,1,"是",Replacer.ReplaceValue,{"是否幸存"}),
    AverageFemaleAge = List.Average(Table.Column(Table.SelectRows(FinalTable, each ([性别] = "女性")), "年龄")),
    AverageMaleAge = List.Average(Table.Column(Table.SelectRows(FinalTable, each ([性别] = "男性")), "年龄")),
    AddColumn = Table.AddColumn(FinalTable, "年龄差异", each [年龄] - if [性别] = "女性" then AverageFemaleAge else AverageMaleAge),
    RoundDiff = Table.TransformColumns(AddColumn,{{"年龄差异", each Number.Round(_, 2)}})
in
    RoundDiff

在上面的代码中,我们使用了 Table.AddColumn 函数来创建计算列,并使用 Table.TransformColumns 函数来对列值进行四舍五入。

总结

通过使用 Power Query,我们可以轻松地对数据进行转换和处理。在本篇文章中,我们介绍了如何创建查询、删除列、提取头部和更改列名、过滤行、更改数据类型、替换值、计算平均值以及创建计算列。这些操作可以帮助我们更好地理解和分析数据,为业务决策提供支持。

FAQ

Q: 如何使用 Power Query 创建新查询? A: 在 Power BI 的主界面上,点击"获取数据"按钮,然后选择"空白查询"选项。

Q: 如何删除查询中的列? A: 使用 Table.RemoveColumns 函数来删除列,指定要删除的列名。

Q: 如何提取头部并更改列名? A: 使用 Table.PromoteHeaders 函数来提取头部,并使用 Table.RenameColumns 函数来更改列名。

Q: 如何过滤行? A: 使用 Table.SelectRows 函数来根据条件过滤行。

Q: 如何更改列的数据类型? A: 使用 Table.TransformColumnTypes 函数来更改列的数据类型。

Q: 如何替换特定列中的值? A: 使用 Table.ReplaceValue 函数来替换值。

Q: 如何计算列的平均值? A: 使用 List.Average 函数来计算列的平均值。

Q: 如何创建计算列? A: 使用 Table.AddColumn 函数来创建计算列。

Q: 如何四舍五入列的值? A: 使用 Table.TransformColumns 函数来对列的值进行四舍五入。

资源

Most people like

Are you spending too much time looking for ai tools?
App rating
4.9
AI Tools
100k+
Trusted Users
5000+
WHY YOU SHOULD CHOOSE TOOLIFY

TOOLIFY is the best ai tool source.