利用管道方法来编写熊猫的美丽而简洁的数据转换
#教程 #python #codequality #datascience

涉及数据科学分析,能够准备和转换我们的数据是 critical critical 任何成功项目的组成部分

因此,让我们学习如何利用Python中的koude0 pipe方法摘要复杂的数据转换为易于阅读的,自我记录操作!

>

目录

Chris Greening - Software Developer

嘿!我叫克里斯·格林宁(Chris Greening),我是来自纽约都会区的软件开发人员,具有各种各样的工程经验 - 请给我留言,让我们构建一些很棒的东西!

favicon Christophergreening.com

.pipe()方法的概述

import pandas as pd

koude1方法使我们能够 koude3koude4数据转换在A 语义上连续输入的输入和 uptucts pipeline 输出< /strong>

它通过利用Python对高阶函数的支持来实现这一目标 - 将函数作为参数传递到另一个函数的能力

让我们看一个简单的示例(注意:假设函数和DataFrame是预定的屏幕外):

transformed_df = (
    df
    .pipe(_select_columns)
    .pipe(_multiply_columns_by_two)
    .pipe(_filter_segments)
)

上面的代码段显示了每个管道方法:

  1. 输入先前管道的输出
  2. 执行转换(即选择列)
  3. 将输出链接到下一个管道的输入中

“等等,我仍然不明白这意味着什么!我们可以看一个更具体的例子吗?!”

不用担心!是的 - 让我们看看下一节中更具体的示例


管道方法的具体示例

让我们假装我们有一个DataFrame,我们称其为town_df,其中包含每周的时间序列数据,美国每个城镇都会消耗多少电力

import pandas as pd
town_df = pd.read_csv("time_series_data_for_every_single_town_in_the_united_states.csv")

,假设我们想按照此特定顺序执行这些特定的转换:

  1. 选择相关列
  2. 过滤器日期范围
  3. 近似缺失值
  4. 地图镇到州
  5. 汇总直到一周和状态
  6. uppample 每天的周频率
  7. 插块每日值

,如果我们可以将每个步骤作为自己的独立函数实现,然后 *管道 *在明显的明显转换链中一起使用这些步骤,这不是很好吗?...

好吧,我很高兴您问(ð)!检查一下:

transformed_df = (
    df
    .pipe(_select_relevant_columns)
    .pipe(_filter_date_range)
    .pipe(_approximate_missing_values)
    .pipe(_map_town_to_state)
    .pipe(_aggregate_up_to_week_and_state)
    .pipe(_upsample_week_frequency_to_daily)
    .pipe(_interpolate_daily_values)
)

就是这样!

的清晰简洁链,立即明显数据转换 - 让我们谈谈编写我们的代码的一些好处

使用管道方法的好处

您可能已经注意到我没有明确 揭示了任何管道功能背后的任何实现详细信息

但是您可能对幕后发生了哪些转变并没有很难理解(至少从顶级视图中)!

我敢打赌,您甚至可以向从未写过一行代码的人展示这一点,即使 他们也能够获得数据集中发生的一切的总体要旨< /p>

虽然可以在一行代码中完成一些简单的转换,但更复杂的转换可能需要数十个,数百甚至千> ,然后才能移至“下一个”转换

transformed_df = (
    df
    .pipe(_some_oneliner_transformation)
    .pipe(_some_million_lines_of_code_transformation_but_guess_what_you_dont_have_to_know_how_its_implemented)
)

因此,能够在定义明确的单元或代码块下抽象实现细节可以消除必须读取每行知道发生了什么的认知开销 - 您可以专注于大局

,当某物(不可避免地)确实出错时,您可以隔离,测试和调试您的输入和输出,因为它们已经在逻辑上隔离到定义明确的单元


结论

如果您想更进一步,并且练习使用示例代码和数据,我将完整的工作示例供您在GitHub上进行探索!

非常感谢您的阅读,如果您喜欢我的内容,请务必在社交媒体或我的personal websiteð上查看我的其他一些作品或 Connect

Chris Greening - Software Developer

嘿!我叫克里斯·格林宁(Chris Greening),我是来自纽约都会区的软件开发人员,具有各种各样的工程经验 - 请给我留言,让我们构建一些很棒的东西!

favicon Christophergreening.com

欢呼!



其他资源