Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从CSV读取输入并将其用于不同的功能_Python_Python 3.x_Pandas_Pyspark_Pyspark Sql - Fatal编程技术网

Python 从CSV读取输入并将其用于不同的功能

Python 从CSV读取输入并将其用于不同的功能,python,python-3.x,pandas,pyspark,pyspark-sql,Python,Python 3.x,Pandas,Pyspark,Pyspark Sql,我有一个csv文件,其中包含来自用户的输入。第一列是统计信息,它是Python代码中的函数,后面的列是每个统计信息的不同输入变量 即加权平均统计需要变量列和权重变量 我使用以下python代码阅读此csv文件,其中model_to_summary是我需要准备摘要的df,Report_inputs是上面的csv: def parse_report_input_表(model_to_summary,report_input): 统计数字{ “加权平均数”:报告。加权平均数, “平均值”:报告。获取

我有一个csv文件,其中包含来自用户的输入。第一列是统计信息,它是Python代码中的函数,后面的列是每个统计信息的不同输入变量

即加权平均统计需要变量列和权重变量

我使用以下python代码阅读此csv文件,其中model_to_summary是我需要准备摘要的df,Report_inputs是上面的csv:

def parse_report_input_表(model_to_summary,report_input):
统计数字{
“加权平均数”:报告。加权平均数,
“平均值”:报告。获取各列的平均值,
“SUM”:Reporting.get_SUM_of_列,
“MAX”:Reporting.get_MAX_of_列,
“MIN”:Reporting.get_MIN_of_列,
“计数”:报告。获取列的计数,
“期末余额”:报告期期末余额,
“期初余额”:报告期初余额,
“平均余额”:报告。平均余额,
“RATIO_V1”:Reporting.RATIO_calculation_V1,
“比率2”:报告。比率计算
}
统计报告列表=[]
group_by_variables=报告_输入[“group_by_variables”][0]。拆分(“| |”)
对于报告中的索引_inputs.index:
函数调用=统计数据[report\u inputs.loc[索引,“STATISTIC”]]
如果函数调用=Reporting.weighted,则表示:
加权平均值报告=函数调用(模型汇总,按变量分组,
报告输入。loc[索引,“变量列”],
报告输入。loc[索引,“权重变量])
列出统计报告。附加(加权平均报告)
elif函数到调用[
Reporting.get\u count\u列,Reporting.get\u max\u列,
Reporting.get\u表示列数,Reporting.get\u min\u列数,
Reporting.get\u列的总和
]:
columns_to_stat=报告_inputs.loc[索引,“columns_to_stat”]。拆分(“| |”)
简单统计报告=函数到调用(模型到摘要,
按变量分组,
列_至_统计)
列出统计报告。附加(简单统计报告)
elif函数到调用[
报告期期末余额,
报告期\期初\余额,
报告平均余额
]:
balances_df=函数调用(模型汇总、分组变量、,
报告输入.loc[索引,“未修改的日期列”],
报告输入。loc[索引,“余额列])
列出统计报告。追加(余额)
elif函数_to_调用==Reporting.ratio_计算_v1:
ratio_df_v1=函数调用(模型调用,按变量分组),
报告输入。loc[索引,“分子变量”],
报告输入。loc[索引,“分母变量”],
报告输入。loc[索引,“比率名称])
列出统计报告。追加(比率为1)
elif函数_to_调用==Reporting.ratio_计算_v2:
ratio_df_v2=函数调用(模型调用,按变量分组),
报告输入.loc[索引,“未修改的日期列”],
报告输入。loc[索引,“分子变量”],
报告输入。loc[索引,“分母变量”],
报告输入。loc[索引,“比率名称])
列出统计报告。追加(比率DFV2)
其他:
引发异常(“{missing_stat}目前不可用!”
.format(缺少_stat=report_inputs.loc[索引,“统计”])
返回按变量分组的统计报告列表
此语句的第一个返回是创建的数据帧列表(来自csv文件中用户请求的统计数据)

在这种情况下,列表将填充加权平均值、平均值、期末余额和比率

如您所见,每个函数都有不同的输入(有些输入类似,因此我在if/else语句中对它们进行了分组)

字典统计目前不是很大,为每个函数编写if/elif是可以的

但是这个统计数据将增加到30-40,并且每个统计数据的编写和if/elif不是很好的编码有没有办法让它更通用/动态?

目前,我已经为不同的统计数据编写了一个if/elif,因为它们有不同的输入


这是一个大问题,如果你需要更多的解释,请让我知道

我是用这样一门课做的:

类示例类:
def _uinit _;(self,var1,var2,var3,所有变量都是这样列出的…):
self.var1=var1
等
def func1(自我):
func1需要var1和var3,所以我通过执行self.var1和self.var3来使用它们
def func2(自我):
func2需要var1和var2,所以我通过self.var1和self.var2使用它们
等等,用于所有功能
之后,我修改了parse_report_input_table函数,如下所示:
def分析报告输入表(模型到摘要,报告输入):
"""
使用用户的输入解析csv表。
"""
个人统计报告列表=[]
group_by_variables=报告_输入[“group_by_variables”][0]。拆分(“| |”)
对于报告中的索引_inputs.index:
报告=报告(模型到摘要,