如何提高迭代的性能

2024-09-28 05:26:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个巨大的数据集,我需要计算每行重复项目的数量。 例如:在一个特定的行中,我有客户X。我需要创建一个新的列,该列将显示客户X在数据集中注册的次数。 我做了一个代码,但性能非常差。我将花大约3天的时间来完成数据集。 是否有人可以帮助改进此计算的性能?下面是我的想法的一个例子:

#importing resources
import sys
import pandas as pd
from __future__ import print_function
#creating a dataset as example:
df1= pd.DataFrame({'Customer':["Wilfred","Abner","Rishcash","Debie"],'Dealer':["Alpha","Beta","Gama","Delta"],'Vehicle_model':["Jeep","Volks","Chrysler","Volvo"],'CITY':["Osasco","Denver","Rome","Tokyo"]})
#creating new columns
df1['Qtd leads']=1
df1['Qtd dealers']=1
df1['Leads City']=1
df1['Leads State']=1
df1['Leads V_Model']=1
#function to estimate repetitive values
def cont(quem):
    a=df1['Customer'].value_counts()[quem]
    return a
#iterate in the dataset
i=0
for i in df1.index:
    df1['Qtd leads'][i]=df1['Customer'].value_counts()[df1['Customer'][i]]
    df1['Qtd dealers'][i]=df1['Dealer'].value_counts()[df1['Dealer'][i]]
    df1['Leads V_Model'][i]=df1['Vehicle_model'].value_counts()[df1['Vehicle_model'][i]]
    df1['Leads City'][i]=df1['CITY'].value_counts()[df1['CITY'][i]]
    print(i, end='\r')
    sys.stdout.flush()

Tags: 数据importcitymodel客户valuesyscustomer
1条回答
网友
1楼 · 发布于 2024-09-28 05:26:22

您可以使用groupby和merge

以城市为例:

dfcity = df1.groupby(by='CITY').size().reset_index().rename(columns={0 : 'Leads City'})
df1 = pd.merge(df1,dfcity,on='CITY')

df1.groupby(by='CITY')按“城市”对数据帧进行分组。这将为您提供一个groupby对象,其中包含许多用于查看这些分组数据的漂亮函数,例如size()

.size()然后给出一个数据帧,其中城市作为索引,以及它被视为第0列的频率

reset_index()然后将索引还原为一列,因此有两列:CITY和0

接下来重命名0列(.rename(columns={0 : 'Leads City'})

最后,将原始数据框与列“CITY”上的新数据框合并

df1 = pd.merge(df1,dfcity,on='CITY')

您可以对要计数的每一列重复该操作

相关问题 更多 >

    热门问题