python - pandas 向量化优化-python
问题描述
我有来自数据仓库中表的数据,我必须对所有数据进行应用和迭代,并且每行我必须查看同一个表并基于月份获取相同 ID 的历史数据。一旦我有了历史数据,我想对其进行迭代以提取每次迭代的平均值。
数据和代码示例可以在这里找到:https ://github.com/jordi-crespo/optimise-data-tranformation-in-python/blob/master/stackover/stackoverflow.py
我必须用 Python 来做,我曾想过用 pandas 来做,但做所有事情都需要一些时间:
- 我从 json 读取数据,第一个数据帧的输出是这样的:
[![在此处输入图像描述][1]][1]
- 我对表进行了迭代,得到了每行的历史数据,然后我做了一些操作:
df = pd.read('df.csv') df_past = pd.read('df_past_csv') def getdataframe(df,date,id): #transform date into datetime object datetime_object = datetime.strptime(date, '%Y-%m-%d') #transform string column to datetime column df['date']= pd.to_datetime(df['date']) #getting month from 12 previous month previous12thmonth = datetime_object - relativedelta(months=+12) #filter per an_name #filter per siteid df = df[df['id']==id] #filtering filtered_dataframe = df[ (df['date']>= pd.Timestamp(previous12thmonth)) ] return filtered_dataframe def average12months(df_past): for index, past in df_past.iterrows(): avergaeCancelRatePreviousMonths = df_past['price'][:index].mean() if index != 0 else 10 history_considered_months_df.loc[index, 'price'] = price average = df_past['price'].mean() return average, df_past for index, rows in df.iterrows(): df_past = getdataframe(df_past,rows['date'] ,rows['id'] average,df_past = average12months(df_past)
我一直在阅读,为了加快操作,我可以在熊猫系列上使用矢量化: https ://engineering.upside.com/a-beginners-guide-to-optimizing-pandas-code-for-speed-c09ef2c6a4d6
我如何更改 interrows 循环以对系列进行矢量化?
解决方案
推荐阅读
- python - Matplotlib 颜色图在使用 .imsave() 和 .savefig() 方法时创建不同的图像
- vb.net - 如何以编程方式为水晶报表中详细部分的控件绘制线条?
- reactjs - 即使我在 React 中正确包含默认导出,也不包含默认导出
- python - 如何将字符串转换为类构造函数
- c++ - 来自 Nodejs 的 process.stdin.on 的 C++ 版本
- javascript - 如何在我的 Ajax 中包含我的 js 函数
- node.js - $text command not supported azure-cosmos-mongodb 错误,支持哪个版本?
- apache-kafka - 来自主题的 KTable 和服务重启
- javascript - 如何访问通过表单提交发送的查询参数
- decibel - 1% 时的总信道功率为 -33.9 dBm