#python #pandas #mongodb #dataframe
#python #панды #mongodb #фрейм данных
Вопрос:
Я пытаюсь сохранить следующий запрос в dataframe.
db = conn["daune_leasing"]
collection = db["clienti_daune"]
pipeline=[{'$group':{
"_id": {'MARCA': '$MARCA', "MODEL": "$MODEL"},
"VENIT_ANUAL": {'$sum': '$VENIT_ANUAL'},
"DAUNA": {'$COUNT': '$DAUNA'},
"VALOARE_DAUNA": {'$sum': '$VALOARE_DAUNA'},
}},
{"$sort": {"_id": 1}}]
cursor = collection.find({"AN_FABRICATIE": {'$lt': 2010,'$gt': 2012},
"VALOARE_DAUNA": {'$gt': 30000}}, pipeline=pipeline)
df = pd.DataFrame.from_dict(list(cursor))
cursor.close()
pprint(df)
df_plot=df.loc[(df['DAUNA']>100)]
df_plot.bar(x='_id', y='DAUNA',rot=0)
plt.xlabel("MODEL")
plt.ylabel("DAUNA")
plt.show();
Я получаю следующую ошибку
cursor = collection.find({"AN_FABRICATIE": {'$lt': 2010,'$gt': 2012},
File "C:UsersandreAppDataLocalProgramsPythonPython38-32libsite-packagespymongocollection.py", line 1523, in find
return Cursor(self, *args, **kwargs)
TypeError: __init__()
got an unexpected keyword argument 'pipeline'
Ответ №1:
Сделайте это так:
pipeline = [
{
"$match" : {
"AN_FABRICATIE" : {
"$lt" : 2010,
"$gt" : 2012
},
"VALOARE_DAUNA" : {
"$gt" : 30000
}
}
},
{
"$group" : {
"_id" : {
"MARCA" : "$MARCA",
"MODEL" : "$MODEL"
},
"VENIT_ANUAL" : {
"$sum" : "$VENIT_ANUAL"
},
"DAUNA" : {
"$COUNT" : "$DAUNA"
},
"VALOARE_DAUNA" : {
"$sum" : "$VALOARE_DAUNA"
}
}
},
{
"$sort" : {
"_id" : 1
}
}
]
cursor = collection.aggregate(pipeline)