【发布时间】:2017-05-23 11:17:37
【问题描述】:
编辑 - 我找到了一种使用 dataframe.describe() 进行数据帧的方法 - 我在更正的版本下面附上了 - 这样“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)
df = df.copy(deep=True)
return df
# Build process using the data extracted in DataExtract
def Regression(df):
from statsmodels.formula.api import ols
df.describe()
df.columns = ['Y', 'X']
model = ols("Y ~ X", df).fit()
print(model.summary())
# Plot a graph for a given dataframe
def ScatterPlot(df):
import matplotlib.pyplot as plt
df.describe()
df.columns = ['Y', 'X']
df.plot.scatter(x='X', y='Y')
plt.show()
DataSet = DataExtract("a","b")
Regression(DataSet)
-- 我已经开始开发一些分析功能并在初级阶段使用 Python,这主要归功于这个网站
我在下面附上了一个简化的示例,说明我当前如何编译我的函数,然后由 GUI 调用,这里我们有一个“DataExtract”函数生成一个框架,然后是“回归”或“ScatterPlot”,具体取决于用户想要处理数据。
然后用户将调用“CombinedRegression”或“CombinedScatterPlot”来生成输出
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)
df = df.copy(deep=True)
return df
#Build process using the data extracted in DataExtract
def Regression(df):
from statsmodels.formula.api import ols
df.columns = ['Y','X']
model = ols("Y ~ X", df).fit()
print(model.summary())
#Plot a graph for a given dataframe
def ScatterPlot(df):
import matplotlib.pyplot as plt
df.columns = ['Y', 'X']
df.plot.scatter(x='X', y='Y')
plt.show()
def CombinedRegression(Y,X):
Regression(DataExtract(Y, X))
def CombinedScatterPlot(Y,X):
ScatterPlot(DataExtract(Y, X))
CombinedRegression("given Y","given X")
CombinedScatterPlot("given Y","given X")
这座建筑效率不高,因为我必须调用“组合”函数才能获得输出,这最终迫使我每次都生成“DataExtract”函数,即使它是用于两个回归的相同数据和散点图函数。 GUI 将根据单击的按钮向任一函数发出 a 和 b 槽
最终我想做的是 1) 使用参数 a 和 b 提取数据,以及 2) 在给定用户给出的命令的情况下,在回归或散点图中使用框架,或同时使用两者。
非常感谢您的帮助
【问题讨论】:
标签: python performance function pandas parameter-passing