【问题标题】:Does Pyspark Pandas support Pandas pct_change function?Pyspark Pandas 是否支持 Pandas pct_change 功能?
【发布时间】:2022-08-12 05:27:57
【问题描述】:

我看到pct_change 函数在缺少一些参数的情况下部分实现。

https://spark.apache.org/docs/latest/api/python/user_guide/pandas_on_spark/supported_pandas_api.html

然而,当我尝试

data_pd = data.toPandas
data_pd.pct_change()

,有AttributeError: \'function\' object has no attribute \'pct_change\'

我想知道它是否尚未实施。如果不是,在 pyspark pandas API 中使用 pct_change 函数的正确方法是什么?谢谢

    标签: python pandas apache-spark pyspark azure-databricks


    【解决方案1】:

    你可以实现pct_change()函数Pyspark 熊猫数据框或者Pyspark 熊猫系列.但是,该错误表明 pct_change() 已用于 function 对象。

    以下是如何使用此功能的演示。

    • 使用 Pyspark 熊猫数据框:
    from pyspark import pandas
    
    df = pandas.DataFrame([[10, 18, 11], [20, 15, 8], [30, 20, 3]])
    print(type(df))
    print(df.pct_change())
    

    • 使用 Pyspark 熊猫系列:
    data = pandas.Series([90, 91, 85], index=[2, 4, 1])
    print(type(data))
    print(data.pct_change())
    

    更新:

    • 发生错误是因为使用DataFrame.toPandasDataFrame.toPandas() 不同。

    • 在这种情况下,当您使用 data.toPandas 时,它会返回一个类型为method.当您尝试在此对象上使用 pct_change() 时,它会出错。

    • 使用DataFrame.toPandas() 将返回一个数据框您可以在其上使用pct_change() 的对象。所以修改如下代码来实现需求。
    data_pd = data.toPandas()
    print(type(data_pd))
    
    op = data_pd.pct_change()
    print(op)
    

    【讨论】:

    • 这是我的代码:我尝试将 spark 数据帧转换为 pandas data_pd = data.toPandas。之后,我尝试了data_pd.pct_change()。但是,AttributeError: 'function' object has no attribute 'pct_change' 出来了。
    • 感谢您的回答,但 Databricks 告诉我 toPandas() 已被弃用,它建议我使用 toPandas。如果我使用toPandas() 而不是toPandas,任务将失败。 https://community.databricks.com/s/feed/0D58Y00008uAbi6SAC
    • 您是否收到与您提供的链接中相同的警告消息?
    • 我在 Databricks 社区提出了这个问题。我意识到toPanads 可以完成任务而toPandas() 不能。这就是为什么我不能使用 toPandas() 来解决 AttributeError: 'function' object has no attribute 'pct_change'
    • to_pandas_on_spark() 不工作吗?您能否提供 Databricks 运行时版本(是 10.4 LTS)吗?
    【解决方案2】:

    与@Saideep Arikontham 聊天后,我们发现pandas_api() 可以解决问题。

        #Covert Spark Dataframe to Spark Pandas Dataframe 
        data_pd = data.pandas_api()
    
        data_pd.pct_change()
    

    【讨论】:

      猜你喜欢
      • 2019-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-09
      • 1970-01-01
      • 2018-09-21
      • 2013-09-16
      • 2019-02-05
      相关资源
      最近更新 更多