Python Pandas - 将数据帧传递给其他函数

时间:2017-05-23 11:17:37

标签: python performance function pandas parameter-passing

编辑 - 我已经找到了一种使用dataframe.describe()进行数据帧的方法 - 我已经在修正后的版本下方附加了 - 这样的方式就是" DataExtract"只运行一次,然后返回数据帧以在Regression或ScatterPlot函数中使用。

-----------------------
import { DateTimePickerDirective } from 'ng2-eonasdan-datetimepicker/dist/datetimepicker.directive';

@NgModule({
  imports: [
   -------------
  ],
  declarations: [
    AppComponent,
    ---------------
    ---------------
    DateTimePickerDirective
  ],
  providers: [HeroService],
  bootstrap: [AppComponent]
})
export class AppModule { }

- 我已经开始开发一些分析函数,并且在初学者级别使用Python,这主要归功于这个网站

我在下面附上了一个简单的例子,说明我当前如何编译我的函数然后由GUI调用,这里我们有一个" DataExtract"函数生成一个框架,然后“回归”#34;或者" ScatterPlot"取决于用户想要对数据做什么。

然后,用户将调用" CombinedRegression"或" CombinedScatterPlot"生成输出

 <my-root>Loading...</my-root>

  <div class="form-group">
<div class="input-group"
        a2e-datetimepicker
        [date]="dateTo"
        [options]="a2eOptions"
        (onChange)="dateToChange($event)"
        (onClick)="dateClick()">
  <input class="form-control"/>
  <span class="input-group-addon">
    <span class="glyphicon glyphicon-calendar"></span>
  </span>
</div>
</div>

这座建筑并没有真正高效,因为我必须打电话给&#34; Combined&#34;功能,以达到一个输出,最终迫使我生成&#34; DataExtract&#34;每次运行,即使它与回归和ScatterPlot函数使用的数据相同。 GUI将根据单击的按钮将a和b插槽发送到任一功能

最终我想要做的是1)使用参数a和b提取数据,以及2)在回归或散点图中使用框架,或者在给定用户给出的命令的情况下使用框架。

非常感谢你的帮助

2 个答案:

答案 0 :(得分:0)

一种方法是传递数据框X和数据框Y

import pandas as pd

#Extracting the data - Real query would be extracting X and Y from a SQL query and converting to a pandas frame
def DataExtract(Y, X):
    d = {Y : [1, 3, 3, 9, 5],
             X : [6, 7, 8, 9, 10]}
    return df_X, df_Y

#Build process using the data extracted in DataExtract
def Regression(X, Y):
   from statsmodels.formula.api import ols
   model = ols("Y ~ X", df).fit()
   print(model.summary())

#Plot a graph for a given dataframe
def ScatterPlot(X, Y):
    import matplotlib.pyplot as plt
    plt.scatter(x=X, y=Y)
    plt.show()

if __name__ == '__main__':
    X, Y = DataExtract()
    Regression(X, Y)
    Scatterplot(X, Y)

答案 1 :(得分:0)

您真正需要做的就是使用您需要传递的X,Y参数调用要运行的主函数。然后,在这些函数中,将它传递给DataExtract函数,该函数将创建并返回您的数据帧,并从那里继续。

import pandas as pd

#Extracting the data - Real query would be extracting X and Y from a SQL query and converting to a pandas frame 
def DataExtract(Y, X): 
    d = {Y : [1, 3, 3, 9, 5], X : [6, 7, 8, 9, 10]} 
    df = pd.DataFrame(d)
    return df 

#Build process using the data extracted in DataExtract 
def Regression(X, Y):
    from statsmodels.formula.api import ols
    df = DataExtract(X, Y) 
    df.columns = ['Y','X']
    model = ols("Y ~ X", df).fit()
    print(model.summary()) 

#Plot a graph for a given dataframe 
def ScatterPlot(X, Y): 
    import matplotlib.pyplot as plt
    df = DataExtract(X, Y)
    df.columns = ['Y', 'X']
    df.plot.scatter(x='X', y='Y')
    plt.show()

...如果用户想要同时执行这两项操作,您可以执行以下操作:

def DoBoth(X, Y):
    ScatterPlot(X, Y)
    Regression(X, Y)